并行服务器系统:备份数据
versiondog 系统提供多种选项,可以通过批处理文件手动备份并行服务器的数据,也可以在定期自动备份。
前提条件
要执行服务器存档的数据备份,必须满足以下 必要 前提条件:
- 手动执行数据备份的用户,必须在服务器系统上拥有管理员权限。
- 在备份数据之前,必须终止 VDog MasterService 服务。
- 不应打开任何同步进程。
- PostgreSQL 数据库系统(
PostgreSQL.exe
应用程序)通过 VDog MasterService 终止。为安全起见,您可以在 Windows 作业管理器中进行检查。
Warning
在数据备份期间,系统不可用。建议在非高峰时段进行数据备份,例如在夜间或周末。
节省磁盘空间的方法:
- 服务器存档的
VD_TMP_VD
目录只包含临时文件。备份服务器存档时,请不要备份VD_TMP_VD
目录。 - 在备份之前,可以对
vdServerArchive
目录进行压缩。为了进行压缩,必须安装相应的 ZIP 应用程序。
手动备份数据
Warning
如果使用远程存档,必须始终同时备份远程存档和本地服务器存档。
本地存档
对于并行服务器系统的服务器 A 和服务器 B,将 vdServerArchive
目录复制到所需的存储位置,如外部硬盘。
远程存档
对于并行服务器系统的服务器 A 和服务器 B:将远程共享的 vdServerArchive
目录复制到所需的存储位置,如外部硬盘。
自动备份数据
批处理文件必须执行以下步骤:
- 备份第一个服务器的
vdServerArchive
目录。 - 备份第二个服务器的
vdServerArchive
目录。
示例:Backup.bat 文件
Info
如果您想在您的系统中使用示例中的批处理文件,请根据您的系统调整文件中的所有路径规格。
set SERVERARCHIVE="D:\vdServerArchive\*"
rem If no remote archive, set the variable remotearchive to an empty value.
rem set REMOTEARCHIVE=""
set REMOTEARCHIVE="\\storage\share\vdServerArchive\*"
set OUTFILE="D:\vdServerBackup.zip"
set 7ZIP="%PROGRAMFILES(x86)%\7-Zip\7z.exe"
net stop "VDog MasterService"
if NOT "%ERRORLEVEL%"=="0" (
if NOT "%ERRORLEVEL%"=="2" (
echo Could not stop server
exit /B %ERRORLEVEL%
)
)
tasklist /fi "ImageName eq VDog*" /fo csv 2>NUL | find /I "VDog">NUL
if "%ERRORLEVEL%"=="0" (
echo VDog Processes still running
tasklist /fi "ImageName eq VDog*" /fo csv
exit /B 1
)
tasklist /fi "ImageName eq postgres.exe" /fo csv 2>NUL | find /I "postgres.exe">NUL
if "%ERRORLEVEL%"=="0" (
tasklist /fi "ImageName eq postgres.exe" /fo csv
echo VDog Processes still running
exit /B 1
)
REM Backup local ServerArchive with 7-zip
"%7ZIP%" u -t7z -r %OUTFILE% %SERVERARCHIVE%
if NOT "%ERRORLEVEL%"=="0" (
echo Could not zip server archive
exit /B %ERRORLEVEL%
)
if "%REMOTEARCHIVE%" == "" GOTO startms
REM Backup remote server archive with 7-zip
"%7ZIP%" u -t7z -r %OUTFILE% %REMOTEARCHIVE%
if NOT "%ERRORLEVEL%"=="0" (
echo Could not zip remote archive
exit /B %ERRORLEVEL%
)
:startms
net start "VDog MasterService"
if NOT "%ERRORLEVEL%"=="0" (
echo Could not start server
exit /B %ERRORLEVEL%
)
echo "success"
pause