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

ОПИСАНИЕ:
6 строка - путь в дерикторию файла "pgdump.exe"
7 строка - имя целевой базы данных (basename)
8 строка - сетевое расположение сервера баз данных
9 строка - используемый порт для баз данных
10 строка - имя root пользователя PostgreSQL (postgres)
11 строка - пароль root пользователя (Pa$$word)
19 строка - место хранения резервной копии (\\192.168.0.242\backup\buhgalteria\%DUMPFILE%) (желательно расшарить папку на другом ПК и хранить резервные копии баз отдельно от сервера баз данных)
20 строка - место хранения лога процесса резервного копирования (\\192.168.0.242\backup\logs\%LOGFILE%)
35 строка - название лога процесса резервного копирования (log_basename.log) После настройки .bat файла, создайте в планировщике заданий новое задание с запуском нашего файла.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
REM ПРИМЕР СОЗДАНИЯ РЕЗЕРВНОЙ КОПИИ БАЗЫ ДАННЫХ POSTGRESQL CLS ECHO OFF CHCP 1251 REM Установка переменных окружения SET PGBIN=C:\Program Files (x86)\PostgreSQL\9.3.4-1.1C\bin SET PGDATABASE=crm3 SET PGHOST=localhost SET PGPORT=5432 SET PGUSER=postgres SET PGPASSWORD=RSqw12Ma100 REM Смена диска и переход в папку из которой запущен bat-файл %~d0 CD %~dp0 REM Формирование имени файла резервной копии и файла-отчета 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= "m:\kino-market%DUMPFILE%" SET LOGPATH= "m:\logs\kino-market%LOGFILE%" REM Создание резервной копии IF NOT EXIST Backup MD Backup CALL "%PGBIN%\pg_dump.exe" --format=custom --verbose --file=%DUMPPATH% 2>%LOGPATH% REM Анализ кода завершения IF NOT %ERRORLEVEL%==0 GOTO Error GOTO Successfull REM В случае ошибки удаляется поврежденная резервная копия и делается соответствующая запись в журнале :Error DEL %DUMPPATH% MSG * "Ошибка при создании резервной копии базы данных. Смотрите backup.log." ECHO %DATETIME% Ошибки при создании резервной копии базы данных %DUMPFILE%. Смотрите отчет %LOGFILE%. >> backup.log GOTO End REM В случае удачного резервного копирования просто делается запись в журнал :Successfull ECHO %DATETIME% Успешное создание резервной копии %DUMPFILE% >> backup.log GOTO End :End pause |
P.S. Для удаления бекапов старше определенного количества дней допишите в код строку(впишите путь и вместо "14" количество необходимых дней):
1 |
forfiles -p "путь к папке с бекапами" -s -m *.* -d -14 -c "cmd /c del /F /q @path" |
Создание пользователя POSTGRESSQL ТОЛЬКО для чтения, для бэкапов
1. cmd
2. "С:\Program Files\PostgreSQL\1XXXXXXXX.1C\bin\psql.exe" -Upostgres
3. вводим пароль
4. Создаем пользователя с ограниченными правами и "бесконечным" паролем.
CREATE ROLE backup_user WITH LOGIN PASSWORD 'TPASgt&67h4'
NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION VALID UNTIL 'infinity';
5. Разрешаем возможность подключения к базе (база в ковычках иначе будет ошибка, что база не найдена)
GRANT CONNECT ON DATABASE "YourDatabaseName" TO backup_user;
6. \c YourDatabaseName
7.
GRANT USAGE ON SCHEMA public TO backup_user;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO backup_user;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO backup_user;
8. самое важное даем права на все вновь созданные таблицы в этой базе:
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO backup_user;