+7 495 230 03 03 8 800 222 50 03
DevOps

Резервное копирование PostgreSQL

Для PostgreSQL существует менеджер – pgAdmin, в котором можно управлять всей СУБД, он намного нагляднее чем командная строка и более привычен большинству пользователей. Программу потребуется скачать, установить и подключится к серверу СУБД. В инструкции используется ОС Windows, но настройки pgAdmin будут аналогичны для других ОС, с которыми приложение совместимо. В инструкции используется pgAdmin 4.

Резервное копирование базы

  1. После того как подключились к серверу через pgAdmin, переходим в директорию Servers, выбираем базу, которую хотим сохранить и переходим к опции резервного копирования.
  2. Далее в открывшемся окне в поле Filename выбираем место куда будет сохранен бэкап, а также задаем имя, но без расширения, приложение само задаст его. Другие параметры оставляем без изменений и нажимаем Backup.
  3. Для того чтобы узнать, удалось ли выполнить резервное копирование, подскажут два этих сообщения. Нижнее говорит о том, что процесс начался, а верхнее что завершен успешно.

Восстановление базы

  1. Аналогично резервному копирования выбираем опцию Restore.
  2. И затем в поле Filename выбираем место где сохранен бэкап и переходим в Quary Options и ставим в активное положение Clean before restore (Очистка перед восстановлением). Это для того, чтобы при восстановлении не было конфликта таблиц при восстановлении базы.
  3. Затем нажимаем Restore. Затем появится всплывающие уведомления о статусе задачи. Действия схожи, как при создании резервной копии базы.

Автоматизация резервного копирования

Пример .bat-файла для резервного копирования, его нужно будет поместить в планировщик:

{rtf1ansiansicpg1251cocoartf2709
cocoatextscaling0cocoaplatform0{fonttblf0fswissfcharset0 Helvetica;}
{colortbl;red255green255blue255;}
{*expandedcolortbl;;}
paperw11900paperh16840margl1440margr1440vieww11520viewh8400viewkind0
pardtx720tx1440tx2160tx2880tx3600tx4320tx5040tx5760tx6480tx7200tx7920tx8640pardirnaturalpartightenfactor0

f0fs24 cf0 REM uc0u1055 u1056 u1048 u1052 u1045 u1056  u1057 u1054 u1047 u1044 u1040 u1053 u1048 u1071  u1056 u1045 u1047 u1045 u1056 u1042 u1053 u1054 u1049  u1050 u1054 u1055 u1048 u1048  u1041 u1040 u1047 u1067  u1044 u1040 u1053 u1053 u1067 u1061  POSTGRESQL

CLS

ECHO OFF

CHCP 1251

REM uc0u1059 u1089 u1090 u1072 u1085 u1086 u1074 u1082 u1072  u1087 u1077 u1088 u1077 u1084 u1077 u1085 u1085 u1099 u1093  u1086 u1082 u1088 u1091 u1078 u1077 u1085 u1080 u1103 

SET PGBIN=путь в дерикторию файла «pgdump.exe»

SET PGDATABASE=имя целевой базы данных (basename)

SET PGHOST=сетевое расположение сервера баз данных 

SET PGPORT=используемый порт для баз данных (стандартный 5432)

SET PGUSER=имя root пользователя PostgreSQL (стандартное postgres)

SET PGPASSWORD=пароль root пользователя (Pa$$word)

REM uc0u1057 u1084 u1077 u1085 u1072  u1076 u1080 u1089 u1082 u1072  u1080  u1087 u1077 u1088 u1077 u1093 u1086 u1076  u1074  u1087 u1072 u1087 u1082 u1091  u1080 u1079  u1082 u1086 u1090 u1086 u1088 u1086 u1081  u1079 u1072 u1087 u1091 u1097 u1077 u1085  bat-u1092 u1072 u1081 u1083 

%~d0

CD %~dp0

REM uc0u1060 u1086 u1088 u1084 u1080 u1088 u1086 u1074 u1072 u1085 u1080 u1077  u1080 u1084 u1077 u1085 u1080  u1092 u1072 u1081 u1083 u1072  u1088 u1077 u1079 u1077 u1088 u1074 u1085 u1086 u1081  u1082 u1086 u1087 u1080 u1080  u1080  u1092 u1072 u1081 u1083 u1072 -u1086 u1090 u1095 u1077 u1090 u1072 

SET DATETIME=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2% %TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%

SET DUMPFILE=%PGDATABASE% %DATETIME%.backup

SET LOGFILE=%PGDATABASE% %DATETIME%.log

SET DUMPPATH="место_хранения_резервной_копии/имя_файла.backup (место хранения резервной копии)"

SET LOGPATH="место_хранения_резервной_копии/имя_файла.log (место хранения лога)"

REM uc0u1057 u1086 u1079 u1076 u1072 u1085 u1080 u1077  u1088 u1077 u1079 u1077 u1088 u1074 u1085 u1086 u1081  u1082 u1086 u1087 u1080 u1080 

IF NOT EXIST Backup MD Backup

CALL "%PGBIN%\pg_dump.exe" --format=custom --verbose --file=%DUMPPATH% 2>%LOGPATH%

REM uc0u1040 u1085 u1072 u1083 u1080 u1079  u1082 u1086 u1076 u1072  u1079 u1072 u1074 u1077 u1088 u1096 u1077 u1085 u1080 u1103 

IF NOT %ERRORLEVEL%==0 GOTO Error

GOTO Successfull

REM uc0u1042  u1089 u1083 u1091 u1095 u1072 u1077  u1086 u1096 u1080 u1073 u1082 u1080  u1091 u1076 u1072 u1083 u1103 u1077 u1090 u1089 u1103  u1087 u1086 u1074 u1088 u1077 u1078 u1076 u1077 u1085 u1085 u1072 u1103  u1088 u1077 u1079 u1077 u1088 u1074 u1085 u1072 u1103  u1082 u1086 u1087 u1080 u1103  u1080  u1076 u1077 u1083 u1072 u1077 u1090 u1089 u1103  u1089 u1086 u1086 u1090 u1074 u1077 u1090 u1089 u1090 u1074 u1091 u1102 u1097 u1072 u1103  u1079 u1072 u1087 u1080 u1089 u1100  u1074  u1078 u1091 u1088 u1085 u1072 u1083 u1077 

:Error

DEL %DUMPPATH%

MSG * "uc0u1054 u1096 u1080 u1073 u1082 u1072  u1087 u1088 u1080  u1089 u1086 u1079 u1076 u1072 u1085 u1080 u1080  u1088 u1077 u1079 u1077 u1088 u1074 u1085 u1086 u1081  u1082 u1086 u1087 u1080 u1080  u1073 u1072 u1079 u1099  u1076 u1072 u1085 u1085 u1099 u1093 . u1057 u1084 u1086 u1090 u1088 u1080 u1090 u1077  backup.log."

ECHO %DATETIME% uc0u1054 u1096 u1080 u1073 u1082 u1080  u1087 u1088 u1080  u1089 u1086 u1079 u1076 u1072 u1085 u1080 u1080  u1088 u1077 u1079 u1077 u1088 u1074 u1085 u1086 u1081  u1082 u1086 u1087 u1080 u1080  u1073 u1072 u1079 u1099  u1076 u1072 u1085 u1085 u1099 u1093  %DUMPFILE%. u1057 u1084 u1086 u1090 u1088 u1080 u1090 u1077  u1086 u1090 u1095 u1077 u1090  %LOGFILE%. >> backup.log

GOTO End

REM uc0u1042  u1089 u1083 u1091 u1095 u1072 u1077  u1091 u1076 u1072 u1095 u1085 u1086 u1075 u1086  u1088 u1077 u1079 u1077 u1088 u1074 u1085 u1086 u1075 u1086  u1082 u1086 u1087 u1080 u1088 u1086 u1074 u1072 u1085 u1080 u1103  u1087 u1088 u1086 u1089 u1090 u1086  u1076 u1077 u1083 u1072 u1077 u1090 u1089 u1103  u1079 u1072 u1087 u1080 u1089 u1100  u1074  u1078 u1091 u1088 u1085 u1072 u1083 

:Successfull

ECHO %DATETIME% uc0u1059 u1089 u1087 u1077 u1096 u1085 u1086 u1077  u1089 u1086 u1079 u1076 u1072 u1085 u1080 u1077  u1088 u1077 u1079 u1077 u1088 u1074 u1085 u1086 u1081  u1082 u1086 u1087 u1080 u1080  %DUMPFILE% >> backup.log

GOTO End

:End

pause}

Для удаления копий через определенной время, можно дописать строку:

1 forfiles -p "путь_к_папке_с_копиями" -s -m . -d -30 -c "cmd /c del /F /q @path"

30 – количество дней хранения, можно поменять на любое другое.

Нужна помощь? Администрирование Linux мы осуществляем в рамках услуги администрирование серверов и гипервизоров.

Дата публикации: 30 ноября 2023
Не нашли ответа на свой вопрос?

Смотрите также

Обсуждение материала

Содержание

Заказать звонок

Оставьте свои данные для того, чтобы специалист с вами связался.

*нажимая на кнопку, Вы даете согласие на обработку персональных данных
Быстрое внедрение включает:
На сервере установлено следующее ПО (доступно при подключении по протоколу RDP):
Также настроено:
Перед внедрением клиент предоставляет информацию о пользователях (логины и пароли). После завершения работ, клиенту высылается инструкция и ярлык для подключения.
Индивидуальное внедрение по ТЗ клиента обсуждается отдельно.