Postgresql backup windows: Automated backup on windows — PostgreSQL wiki
Содержание
Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows c помощью pgAdmin, bat-файлов и планировщика / Хабр
PostgreSQL
Автор статьи: технический руководитель проектов внедрения 1С:ERP Внедренческого центра «Раздолье» Дмитрий Малышев.
Введение
pgAdmin — это интерфейс для администрирования баз данных PostgreSQL, в моём понимании это аналог MS SQL Management Studio. Ставится pgAdmin отдельно от PostgreSQL. Инструкцию установки найдите, пожалуйста, в интернет поисковиках. В данной инструкции будет описано как с помощью pgAdmin, bat-файлов и Планировщика заданий Windows организовать резервное копирование, восстановление и хранение копий баз данных.
psql-1.png
Открытие pgAdmin
Через пуск или в проводнике открываем приложение.
psql-2.png
«C:\Program Files\pgAdmin 4\v6\pgAdmin4.ico»
psql-3.png
Вводим пароль доступа (за дается ранее пользователем).
psql-4.png
Откроется интерфейс управления базами данных.
psql-1.png
Создание резервной копии
Рассмотрим создание резервной копии из pgAdmin и командным bat-файлом.
2.1. С помощью pgAdmin
Выбираем базу в дереве, правой кнопкой мыши открываем контекстное меню, где выбираем создание резервной копии/Backup… Указываем полный путь для сохранения копии, формат Custom и жмем [Создать / Create].
psql-5.png
***
psql-6.png
***
psql-7.png
2.2. С помощью командного файла *.bat
Запускаем двойным кликом мыши командный файл backup_pdadmin_UH_IMD_everyday.bat, в котором уже прописан вызов архиватора формат и путь файла копии.
psql-8.png
Копии сохраняются сюда.
psql-9.png
Содержимое командного файла:
REM СОЗДАНИЯ РЕЗЕРВНОЙ КОПИИ БАЗЫ ДАННЫХ POSTGRESQL
CLS
ECHO OFF
CHCP 1251
REM Установка переменных окружения
SET PGDATABASE=IMD_UH
SET PGHOST=localhost
SET PGPORT=5432
SET PGUSER=postgres
SET PGPASSWORD=ЗДЕСЬ_УКАЖИТЕ_ПАРОЛЬ_для_пользователя_postgres
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=»E:\UH_IMD\Backup\%DUMPFILE%»
SET LOGPATH=»E:\UH_IMD\Backup\%LOGFILE%»
REM Создание резервной копии
IF NOT EXIST Backup MD Backup
CALL «C:\Program Files\pgAdmin 4\v6\runtime\pg_dump.exe» —format=custom —verbose —file=%DUMPPATH% 2>%LOGPATH%
REM Анализ кода завершения
IF NOT %ERRORLEVEL%==0 GOTO Error
GOTO Successfull
REM В случае ошибки удаляется поврежденная резервная копия и делается соответствующая запись в журнале
:Error
DEL %DUMPPATH%
MSG * «ERROR to create backup!!! See the information E:\UH_IMD\Backup\backup.log.»
ECHO %DATETIME% Ошибка при создании резервной копии %DUMPFILE%. Смотрите %LOGFILE%. >> backup.log
GOTO End
REM В случае удачного резервного копирования просто делается запись в журнал
:Successfull
ECHO %DATETIME% Успешное создание резервной копии %DUMPFILE% >> backup. log
GOTO End
:End
Пояснения:
SET PGDATABASE=IMD_UH — здесь имя базы данных на СУБД равно IMD_UH, у вас будет свое поменяйте обязательно.
E:\UH_IMD\Backup — здесь путь хранения backup у вас будет свой, поменяйте.
C:\Program Files\pgAdmin 4\v6\runtime — папка утилиты pg_dump.exe для создания дампов, пусть может чуть отличаться, например, вместо v6 будет v4. И не забудьте pgAdmin установить, он ставится отдельно.
SET PGPASSWORD=ЗДЕСЬ_УКАЖИТЕ_ПАРОЛЬ_для_пользователя_postgres — тут укажите реальный пароль от пользователя postgres СУБД PostgreSQL
Восстановление резервной копии
Есть несколько способов: Из командной строки, из pgAdmin, заранее подготовленным командным файлом. Мы рассмотрим: pgAdmin.
3.1. С помощью pgAdmin
3.1.1. В существующую базу
Выбираем базу, вызываем правой кнопкой ее контекстное меню, где выбираем действие Восстановить / Restore.
psql-10.png
Далее указываем путь к резервной копии, и в настройках ставим предварительно очищать существующую базу (иначе она не восстановится из-за конфликта таблиц).
psql-11.png
***
psql-12.png
***
psql-13.png
***
ps-14.png
3.1.2. В новую базу
3.1.2.1. Создаем новую базу в PostgreSQL
На корне дерева баз вызываем правой кнопкой мыши контекстное меню и действие Создать / Create – Базу данных / Database.
psql-14.png
Задаем имя новой базы.
psql-16.png
Выбираем обязательно схему создания template0 (иначе на следующем шаге база не развернется из backup из-за конфликта таблиц).
psql-16.png
Для контроля смотрим итоговый запрос, и жмем кнопку [Сохранить]/[Save].
psql-17.png
3.1.2.2. Восстанавливаем базу из архива в PostgreSQL
После создания пустой новой базы, её нужно восстановить из архива. Для этого смотрите пункт выше 3.1.1. Для восстановления в существующую базу, выполняем всё тоже самое только для базы с именем NewBaseName
3.1.2.3. Создаем новую базу 1С NewBaseName
После того как развернули базу на СУБД PostgreSQL её требуется опубликовать на сервере 1С, чтобы пользователи получили к ней доступ. Для этого выполним действия по созданию базы 1С и связывании её с существующей базой на СУБД.
psql-18.png
***
psql-19.png
***
psql-20.png
***
psql-21.png
***
psql-22.png
Не забываем ставь флаг «Установить блокировку регламентных заданий», если это копия.
Удаление старых резервных копий
4.1. Вручную
Удаляем архивы старше 30 дней вручную. Затем чистим корзину на рабочем столе.
В проводнике папка E:\UH_IMD\Backup.
psql-23.png
***
psql-24.png
4.2. С помощью командного файла *.bat
Запускаем двойным щелчком мыши командный файл. В файле указана очистка в каталоге файлов старше 30 дней.
psql-25.png
Его содержимое:
forfiles /p «E:\UH_IMD\Backup» /S /D -30 /C «cmd /c del /f /a /q @file»
Пояснения:
E:\UH_IMD\Backup — здесь путь хранения backup’ов, у вас будет свое поменяйте обязательно.
30 — срок в днях хранения backup’ов
Автоматическое выполнение резервного копирования
Использован стандартный планировщик заданий Windows каждый день в 5:00 утра запуск, выполнения командного файла (архив рабочей базы примерно 1 час создается).
psql-25.png
***
psql-26.png
***
psql-27.png
***
psql-28.png
***
psql-29.png
***
psql-30.png
***
psql-31.png
Автоматическое выполнение очистки копий старше 30 дней
Использован стандартный планировщик заданий Windows каждую субботу в 10:00 утра запуск, выполнения командного файла.
psql-32.png
***
psql-33.png
***
psql-34.png
***
psql-35.png
***
psql-36.png
***
psql-37.png
***
psql-38.png
Приложения
Пример содержимого общего файла логов backup.log.
psql-39.png
Пример содержимого файла лога конкретной выгрузки UH_IMD 2022-10-07 5-00-00.log
psql-40.png
P.S. Коллеги, сразу скажу, что я не системный администратор, а программист 1С. Системщик решил бы, может быть, элегантнее.
Хотя ситуация сложилась такая, что я делал настройки и эту инструкцию с bat-никами по просьбе системных администраторов (как бы странно это ни звучало). Нечасто такими настройками занимаюсь, поэтому не судите строго.
Добавил 2 батника, по обновлению статистики и реиндексации:
Они для регламентного обслуживания. 1С завершать для их работы не обязательно, но 1С будет притормаживать или пойдет блокировка на период реиндексации. В планировщик заданий Windows на эти батники добавьте задачи раз в неделю на свои базы, в Нерабочее время. Также есть служебная база postgres на нее тоже раз в неделю добавьте обслуживание.
Файл vacuumdb_BaseName.bat — обновление статистики.
Его содержимое:
vacuumdb -d UH_IMD -Z -v -j 1
Пояснения:
Обновление статистики базы с именем UH_IMD (тут поставьте свою) в 1 поток.
Можно поменять на обновление статистики во всех базах в 4 потока, тогда будет текст:
vacuumdb -a -Z -v -j 4
Файл reindexdb_BaseName.bat — реиндексация таблиц в базе.
Его содержимое:
reindexdb -d UH_IMD -v -j 1
Пояснения:
Обновление индексов в базе с именем UH_IMD (тут поставьте свою) в 1 поток.
Можно поменять на обновление статистики во всех базах в 4 потока, тогда будет текст:
reindexdb -a -v -j 4
Также обратите внимание на программу Effector Saver — программа резервного копирования 1С:Предприятия (поищите в инете).
Делает копии в MS и PostgreSQL, настройка хранения и удаления. Есть возможность подключать скрипты и выполнять тестирование исправление 1С. Есть бесплатная версия (которой должно хватить), и есть также платная с плюшками.
Ищите для работы вот этот материал с инструкциями для скачивания и использования:
backup_pgadmin_BaseName_everyday.bat
delete_backup_BaseName_older than 30 days.bat
Резервное копирование и восстановление баз PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика.docx
vacuumdb_BaseName.bat
reindexdb_BaseName.bat
Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика
10.10.2022
Статьи экспертов
Автор статьи: технический руководитель проектов внедрения 1С:ERP Внедренческого центра «Раздолье» Дмитрий Малышев.
В данной инструкции будет описано, как с помощью pgAdmin, bat-файлов и планировщика заданий Windows организовать резервное копирование, восстановление и хранение копий баз данных.
Введение
pgAdmin — это интерфейс для администрирования баз данных PostgreSQL, в моём понимании это аналог MS SQL Management Studio. Ставится pgAdmin отдельно от PostgreSQL. Инструкцию установки найдите, пожалуйста, в интернет-поисковиках. В данной инструкции будет описано как с помощью pgAdmin, bat-файлов и Планировщика заданий Windows организовать резервное копирование, восстановление и хранение копий баз данных.
Открытие pgAdmin
Через пуск или в проводнике открываем приложение «C:\Program Files\pgAdmin 4\v6\pgAdmin4.ico».
Вводим пароль доступа (задается ранее пользователем).
Откроется интерфейс управления базами данных.
Создание резервной копии
Рассмотрим создание резервной копии из pgAdmin и командным bat-файлом.
2.1. С помощью pgAdmin
Выбираем базу в дереве, правой кнопкой мыши открываем контекстное меню, где выбираем создание резервной копии/Backup… Указываем полный путь для сохранения копии, формат Custom и жмем [Создать / Create].
***
***
2.2. С помощью командного файла *.bat
Запускаем двойным кликом мыши командный файл backup_pdadmin_UH_IMD_everyday.bat, в котором уже прописан вызов архиватора формат и путь файла копии.
Копии сохраняются сюда.
Содержимое командного файла:
REM СОЗДАНИЯ РЕЗЕРВНОЙ КОПИИ БАЗЫ ДАННЫХ POSTGRESQL
CLS
ECHO OFF
CHCP 1251
REM Установка переменных окружения
SET PGDATABASE=IMD_UH
SET PGHOST=localhost
SET PGPORT=5432
SET PGUSER=postgres
SET PGPASSWORD=ЗДЕСЬ_УКАЖИТЕ_ПАРОЛЬ_для_пользователя_postgres
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=»E:\UH_IMD\Backup\%DUMPFILE%»
SET LOGPATH=»E:\UH_IMD\Backup\%LOGFILE%»
REM Создание резервной копии
IF NOT EXIST Backup MD Backup
CALL «C:\Program Files\pgAdmin 4\v6\runtime\pg_dump. exe» —format=custom —verbose —file=%DUMPPATH% 2>%LOGPATH%
REM Анализ кода завершения
IF NOT %ERRORLEVEL%==0 GOTO Error
GOTO Successfull
REM В случае ошибки удаляется поврежденная резервная копия и делается соответствующая запись в журнале
:Error
DEL %DUMPPATH%
MSG * «ERROR to create backup!!! See the information E:\UH_IMD\Backup\backup.log.»
ECHO %DATETIME% Ошибка при создании резервной копии %DUMPFILE%. Смотрите %LOGFILE%. >> backup.log
GOTO End
REM В случае удачного резервного копирования просто делается запись в журнал
:Successfull
ECHO %DATETIME% Успешное создание резервной копии %DUMPFILE% >> backup.log
GOTO End
:End
Пояснения:
SET PGDATABASE=IMD_UH — здесь имя базы данных на СУБД равно IMD_UH, у вас будет свое поменяйте обязательно.
E:\UH_IMD\Backup — здесь путь хранения backup у вас будет свой, поменяйте.
C:\Program Files\pgAdmin 4\v6\runtime — папка утилиты pg_dump. exe для создания дампов, пусть может чуть отличаться, например, вместо v6 будет v4. И не забудьте pgAdmin установить, он ставится отдельно.
SET PGPASSWORD=ЗДЕСЬ_УКАЖИТЕ_ПАРОЛЬ_для_пользователя_postgres — тут укажите реальный пароль от пользователя postgres СУБД PostgreSQL
Восстановление резервной копии
Есть несколько способов: из командной строки, из pgAdmin, заранее подготовленным командным файлом. Мы рассмотрим: pgAdmin.
3.1. С помощью pgAdmin
3.1.1. В существующую базу
Выбираем базу, вызываем правой кнопкой ее контекстное меню, где выбираем действие Восстановить / Restore.
Далее указываем путь к резервной копии, и в настройках ставим предварительно очищать существующую базу (иначе она не восстановится из-за конфликта таблиц).
***
***
***
3.
1.2. В новую базу
3.1.2.1. Создаем новую базу в PostgreSQL
На корне дерева баз вызываем правой кнопкой мыши контекстное меню и действие Создать / Create – Базу данных / Database.
Задаем имя новой базы.
Выбираем обязательно схему создания template0 (иначе на следующем шаге база не развернется из backup из-за конфликта таблиц).
Для контроля смотрим итоговый запрос, и жмем кнопку [Сохранить]/[Save].
3.1.2.2. Восстанавливаем базу из архива в PostgreSQL
После создания пустой новой базы, её нужно восстановить из архива. Для этого смотрите пункт выше 3.1.1. Для восстановления в существующую базу, выполняем всё тоже самое только для базы с именем NewBaseName
3.1.2.3. Создаем новую базу 1С NewBaseName
После того как развернули базу на СУБД PostgreSQL её требуется опубликовать на сервере 1С, чтобы пользователи получили к ней доступ. Для этого выполним действия по созданию базы 1С и связывании её с существующей базой на СУБД.
***
***
***
***
Не забываем ставь флаг «Установить блокировку регламентных заданий», если это копия.
Удаление старых резервных копий
4.
1. Вручную
Удаляем архивы старше 30 дней вручную. Затем чистим корзину на рабочем столе.
В проводнике папка E:\UH_IMD\Backup.
***
4.2. С помощью командного файла *.bat
Запускаем двойным щелчком мыши командный файл. В файле указана очистка в каталоге файлов старше 30 дней.
Его содержимое:
forfiles /p «E:\UH_IMD\Backup» /S /D -30 /C «cmd /c del /f /a /q @file»
Пояснения:
E:\UH_IMD\Backup — здесь путь хранения backup’ов, у вас будет свое поменяйте обязательно.
30 — срок в днях хранения backup’ов
Автоматическое выполнение резервного копирования
Использован стандартный планировщик заданий Windows каждый день в 5:00 утра запуск, выполнения командного файла (архив рабочей базы примерно 1 час создается).
***
***
***
***
***
***
Автоматическое выполнение очистки копий старше 30 дней
Использован стандартный планировщик заданий Windows каждую субботу в 10:00 утра запуск, выполнения командного файла.
***
***
***
***
***
***
Приложения
Пример содержимого общего файла логов backup.
log.
Пример содержимого файла лога конкретной выгрузки UH_IMD 2022-10-07 5-00-00.log
P.S. Коллеги, сразу скажу, что я не системный администратор, а программист 1С. Системщик решил бы, может быть, элегантнее.
Хотя ситуация сложилась такая, что я делал настройки и эту инструкцию с bat-никами по просьбе системных администраторов (как бы странно это ни звучало). Нечасто такими настройками занимаюсь, поэтому не судите строго.
Добавил 2 батника, по обновлению статистики и реиндексации:
Они для регламентного обслуживания. 1С завершать для их работы не обязательно, но 1С будет притормаживать или пойдет блокировка на период реиндексации. В планировщик заданий Windows на эти батники добавьте задачи раз в неделю на свои базы, в Нерабочее время. Также есть служебная база postgres на нее тоже раз в неделю добавьте обслуживание.
Файл vacuumdb_BaseName.bat — обновление статистики.
Его содержимое:
vacuumdb -d UH_IMD -Z -v -j 1
Пояснения:
Обновление статистики базы с именем UH_IMD (тут поставьте свою) в 1 поток.
Можно поменять на обновление статистики во всех базах в 4 потока, тогда будет текст:
vacuumdb -a -Z -v -j 4
Файл reindexdb_BaseName.bat — реиндексация таблиц в базе.
Его содержимое:
reindexdb -d UH_IMD -v -j 1
Пояснения:
Обновление индексов в базе с именем UH_IMD (тут поставьте свою) в 1 поток.
Можно поменять на обновление статистики во всех базах в 4 потока, тогда будет
текст:
reindexdb -a -v -j 4
Также обратите внимание на программу Effector Saver — программа резервного копирования 1С:Предприятия (поищите в инете).
Делает копии в MS и PostgreSQL, настройка хранения и удаления. Есть возможность подключать скрипты и выполнять тестирование исправление 1С. Есть бесплатная версия (которой должно хватить), и есть также платная с плюшками.
Для использования пригодятся следующие материалы (можно скачать в конце статьи по этой ссылке):
-
backup_pgadmin_BaseName_everyday.bat
-
delete_backup_BaseName_older than 30 days.bat
-
Резервное копирование и восстановление баз PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика.docx
-
vacuumdb_BaseName.bat
-
reindexdb_BaseName.bat
-
Резервное копирование и восстановление баз PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика.docx (версия от 12.10.2022)
windows — Как сделать резервную копию и восстановить базу данных PostgreSQL в Windows7?
спросил
Изменено
1 год, 5 месяцев назад
Просмотрено
81к раз
Я новичок в базе данных Postgres. Мне нужно получить резервную копию с производственного сервера (версия pgAdmin 9)..2.4) и восстановить его на моем локальном компьютере (у меня pgAdmin версии 9.4). Я попытался получить резервную копию, щелкнув правой кнопкой мыши базу данных -> Резервное копирование, чтобы получить файл .backup. Как показано на изображении ниже:
Но когда я пытаюсь восстановить файл резервной копии, я получаю много ошибок.
Я также хочу знать, могут ли разные порты в обеих системах создавать проблемы при восстановлении резервных копий. Когда я попытался восстановить резервную копию той же системы, проблем не было.
- окна
- postgresql
- pgadmin
2
Для резервного копирования базы данных вы можете использовать pg_dump.exe
:
Open Powershell
Перейдите в папку bin Postgres. Например:
cd "C:\Program Files\PostgreSQL\9. 6\bin"
Введите команду для создания дампа базы данных. Например:
./pg_dump.exe -U postgres -d my_database_name -f D:\Backup\<имя-файла-резервной копии>.sql
Введите пароль для вашего пользователя postgres
Для восстановления базы данных вы можете использовать psql.exe
. (Обратите внимание, следующее извлечено из полезного ответа Александра Омельченко, который был удален по непонятным мне причинам.)
Open Powershell
Перейдите в папку bin Postgres. Например:
cd "C:\ProgramFiles\PostgreSQL\9.6\bin"
Введите команду для восстановления базы данных. Например:
./psql.exe -U postgres -d my_database_name -f D:\Backup\<имя-файла-резервной копии>.sql
Введите пароль для вашего пользователя postgres
1
Я застрял здесь при создании файла дампа базы данных из-за несоответствия версий.
Поэтому я следую приведенной ниже команде, чтобы получить резервную копию и восстановить.
pg_dump -h localhost -U postgres -p 5432 YourDbName > BackupFileName.dump
В качестве альтернативы вы можете попробовать приведенный ниже код cmd. Если у вас возникли проблемы с восстановлением из pgAdmin4, вы можете попробовать это.
Сначала вы должны найти путь pg_restore.exe. Обычно это
C:\Program Files\PostgreSQL\12\bin>
запустите приведенный ниже код после изменения имени базы данных и пути резервного копирования
pg_restore.exe --verbose --clean -U "postgres" --dbname имя_базы_данных c:\database.backup
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Требуется, но никогда не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Пакетный файл
— Резервное копирование Postgresql с .
bat в Windows
Задавать вопрос
спросил
Изменено
2 года, 1 месяц назад
Просмотрено
11 тысяч раз
Я хочу создать резервную копию базы данных postgresql с файлом .bat в Windows
Я пробовал с этим кодом:
@echo off for /f "tokens=1-4 delims=/" %%i in ("%date%") do ( установить dow=%%i установить месяц=%%j установить день=%%k установить год=%%l ) установить datestr=%month%_%day%_%year% эхо-датастр — это %datestr% установить BACKUP_FILE=odoo_%datestr%.backup эхо имя файла резервной копии: %BACKUP_FILE% УСТАНОВИТЬ PGPASSWORD=openpgpwd эхо на bin\pg_dump -i -h localhost -p 5432 -U openpg -F c -b -v -f %BACKUP_FILE% формирование
Но я ничего не получил.
И с этим кодом:
@echo off SET PG_BIN="C:\Program Files\OpenERP 7.0-20150818\PostgreSQL\bin\pg_dump.exe" НАБОР PG_HOST=локальный хост НАБОР PG_PORT=5432 SET PG_DATABASE=формирование НАБОР PG_USER=openpg УСТАНОВИТЕ PG_PASSWORD = openpgpwd НАБОР PG_PATCH=D:\odoo НАБОР ФЕЧАЙХОРА=%дата:/=%-%время:-0,8% НАБОР ФЕЧАЙХОРА=%ФЕЧАЙХОРА::=-% НАБОР ФЕЧАЙХОРА=%ФЕЧАЙХОРА: =0% НАБОР PG_FILENAME=%PG_PATH%\%PG_DATABASE%-%FECHAYHORA%.sql %PG_BIN% - i -h %PG_HOST% -p %PG_PORT% -U %PG_USER% %PG_DATABASE% > %PG_FILENAME%
У меня такая же проблема.
Я хочу использовать его позже в планировщике заданий Windows.
- postgresql
- пакетный файл
- резервная копия
4
Этот ответ был предоставлен автором:
Думаю, это решение для всех:
@echo Резервная база данных %PG_PATH%%PG_FILENAME%
@эхо выключено
НАБОР PG_BIN="C:\Program Files\PostgreSQL\bin\pg_dump.