Резервное копирование и обслуживание баз Postgre SQL в Windows

05.01.22

База данных - Архивирование (backup)

Резервное копирование и обслуживание баз Postgre SQL в Windows скриптами командной строки

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
db_service
.zip 1,85Kb
90
90 Скачать (1 SM) Купить за 1 850 руб.

В интернете много различной информации о том как сделать бэкап , vacuum и reindeх баз postgresql..  Можно написать кучу bat файлов, на каждую базу и угомониться. В данном опусе собран и опробован инструмент для "ленивых" админов... Ведь нужно, не только обслужить,выполнить резервное копирование, но и предусмотреть, чтобы удалялись старые резервные копии, дабы избежать переполнения диска.

  • Итак, набор состоит из 3х bat файлов, при помощи которых, мы осуществляем обслуживание и резервное копирование..

1. db_vacuum_reindex.bat  - цикличное выполнение  vacuum и reidex для объявленных баз массива

2. db_backup.bat - цикличное резервное копирование и анализ (удаление) старых копий

(для работы нужен еще и архиватор 7z.exe )

3.  params.bat - набор параметров для работы вышеперечисленных bat файлов.

  • Вводимые параметры файла (params.bat):

set WORKPATH=d:\scripts - основная директория, где хранятся скрипты и поддиректории резервных копий, темп и т.д. 

set PGBASES=(base1 base2 base3 base4) - Массив обрабатываемых баз postgres 

Основные директории исполняемых файлов postgres и 7z

set PGBINPATH="C:\Program Files\PostgreSQL\9.6.7-1.1C\bin"
set PATH7Z="C:\Program Files\7-Zip"

Прочие Переменные
SET PGPASSWORD= *******  - Ваш пароль на postgres

Количество дней  хранения резервных копий
SET DAYSAGO=2

Подключение к sql серверу
set mhost=127.0.0.1
set mport=5432
set musername="postgres"
set mrole="postgres"

  • В файле db_vacuum_reindex.bat происходит цикличный перебор всех баз объявленного массива vacuum и reidex

for %%i IN %PGBASES% DO (
echo start vacuum %%i >>%logfile%
%PGBINPATH%\vacuumdb.exe --dbname %%i --host %mhost% --port %mport% --username %musername% --no-password --echo --full --analyze >>%logfile% 

Реиндексация

%PGBINPATH%\reindexdb.exe --dbname %%i --host %mhost% --port %mport% --username %musername%  --no-password --echo >>%logfile%

...

  • В файле  db_backup.bat происходит резервное копирование 

for %%i IN %PGBASES% DO (
@echo ******* %%i ******** >>%logfile% 
%PGBINPATH%\pg_dump --dbname %%i --host %mhost% --port %mport% --username %musername% --role %mrole% --no-password --file %PGTMP%\%%i_%f_name%.pgsql.backup >>%logfile%  
....

архивирование

%PATH7Z%\7z.exe a -tzip %PGTMP%\%%i_%f_name%.pgsql.zip %PGTMP%\%%i_%f_name%.pgsql.backup >>%logfile% 

После чего происходит анализ поддиректорий резервных копий и удаление ненужных

-----------------------------------------------------

Состав zip файла поставки:

db_backup.bat

db_vacuum_reindex.bat

params.bat

Послесловие: Можно доработать механизм хранения резервных файлов до хранения и помесячно.. Все в Ваших руках...

Вот и все! Удачи Вам и хорошего дня)

P.S.   Недавно у клиента начал сыпаться ssd.. 3 базы умерло, бекап спас)   Восстановление созданных батниками бекапов идет через psql и лучше всего в созданную чистую базу (тоже через psql). 1с сервер подключаете к базе стандартными методами.

резервное копирование обслуживание Postgre SQL Windows скрипт командная строка

См. также

Архивирование (backup) Инструменты администратора БД Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Данная разработка позволит решить вопрос с резервным копированием Ваших баз в автоматическом режиме, расположенных на сервере 1С. Система умеет ставить блокировки на вход, блокировать фоновые задания, принудительно отключать сеансы пользователей. И все это система делает в автоматически при создании бэкапа (или через команду). Выгрузка происходит в родной формат 1С - .dt. Так же система умеет архивировать данные выгрузки с установкой пароля. Умеет менять расширение файла zip или dt на любое указанное вами, что позволит сохранить выгрузки от шифровальщика. Может удалять старые копии выгрузок, оставляя указанное количество резервных копий, начиная с самой поздней. Только для WINDOWS!

6000 руб.

06.11.2012    73823    629    45    

88

Архивирование (backup) Системный администратор Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Программа позволяет выполнять автоматическое создание копий файловых и серверных информационных баз 1С Предприятие 8 и размещение копий в облаке Яндекс.Диск, локальном или сетевом ресурсе.

1200 руб.

03.09.2014    15998    22    6    

28

Архивирование (backup) Платформа 1С v8.3 1С:Управление нашей фирмой 3.0 Платные (руб)

Расширение поможет настроить резервное копирование баз SQL в стандартный файл выгрузки баз 1С (*.dt).

2400 руб.

27.08.2024    1556    1    6    

2

Архивирование (backup) Системный администратор Платформа 1С v8.3 Бесплатно (free)

Предлагаю Вашему вниманию 3 скрипта на bash (sh) для архивирования (backup) типовых конфигураций на Linux средствами 1С и Postgres. Перед запуском корректно заполните раздел "Параметры" в соответствии с Вашими настройками.

20.01.2025    549    Prelude    1    

5

HighLoad оптимизация Администрирование СУБД Архивирование (backup) Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

Бэкап в Postgres состоит из набора граблей, которые нужно обойти для успешного восстановления. Они заложены в самых неожиданных местах от предмета резервного копирования (база или кластер) до структуры каталогов. Один неверный шаг и восстановление будет невозможным. Почему нельзя было сделать проще, как в MS SQL или Oracle? Почему бэкап в Postgres оставляет впечатление чьей-то лабораторной работы? Статья адресована прежде всего специалистам 1С, избалованным комфортом в MS SQL, в суровых буднях импортозамещения на Postgres.

13.08.2024    3542    1CUnlimited    9    

6

Инструменты администратора БД Архивирование (backup) Системный администратор Программист Пользователь Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Обработка для "обновления" своей тестовой базы из резервной копии рабочей базы без помощи админов.

1 стартмани

21.05.2024    2351    11    baidinden    4    

8

Архивирование (backup) Администрирование СУБД Системный администратор Россия Бесплатно (free)

Постараюсь объяснить, зачем нужно резервное копирование именно журнала транзакций, а не только базы данных, и почему я словно сбросил груз, настроив его - как, покажу, естественно. Кстати, будут скрипты T-SQL (с подробными комментариями) - отличный способ сделать администрирование базы более уютным.

04.12.2023    10613    n_mezentsev    15    

27
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. lnformatic 26.11.18 15:41 Сейчас в теме
Использую следующие cmd скрипты.
для архивации
- "C:\Program Files\PostgreSQL\9.6.6-1.1C\bin\pg_dump.exe" -h localhost -p 5432 -U postgres -w -d dbNAME -F c -o -v -Z 9 -f "D:\BACKUP\%date%.dbNAME.backup"

для обслуживания
- "C:\Program Files\PostgreSQL\9.6.6-1.1C\bin\vacuumdb.exe" -h localhost -p 5432 -U postgres -w -e -z -a
"C:\Program Files\PostgreSQL\9.6.6-1.1C\bin\reindexdb.exe" -h localhost -p 5432 -U postgres -w -e -a

Кто подскажет, как доработать скрипты чтобы сохранялись логи с полным текстом обслуживания баз ?
2. user598613_svp_gamma 32 26.11.18 19:50 Сейчас в теме
Поидее можно сбрасывать вывод в файл >>
Например:
pg_dump --dbname %%i --host %mhost% --port %mport% --username %musername% --role %mrole% --no-password --file %PGTMP%\%%i_%f_name%.pgsql.backup >>%logfile%

где logfile - Ваш файл
3. z-alexey 1198 18.05.20 22:46 Сейчас в теме
20 минут убил - почему не работает. Оказывается нужно файлы помещать в "рабочую директорию", изначально думал, что рабочая это куда бекапы делаются
4. user1633914 04.01.22 22:28 Сейчас в теме
(3)Не подскажете, где находится "рабочая директория". Что то не догоняю. Спасибо.
5. user598613_svp_gamma 32 05.01.22 13:41 Сейчас в теме
(4) set WORKPATH=d:\scripts - основная директория, где хранятся скрипты и поддиректории резервных копий, темп и т.д. Можете ее хоть как назвать
6. user1633914 05.01.22 13:56 Сейчас в теме
(5)Спасибо за ответ. Но у меня не работает, возможно сделанные батники из статьи не полные. Видимо нужно скачать готовые и их редактировать.
8. user598613_svp_gamma 32 05.01.22 14:10 Сейчас в теме
(6) покажите что у Вас в params.bat.. Батники полные.
9. user598613_svp_gamma 32 05.01.22 14:11 Сейчас в теме
(6) 7 ответ тоже для Вас))
10. user1633914 05.01.22 15:15 Сейчас в теме
(9)set WORKPATH=D:\Backup\postgres
set PGBASES=(postgres)
set PGBINPATH="D:\postgreeSQL\postgreeSQL\bin"
set PATH7Z="C:\Program Files\7-Zip"
SET PGPASSWORD= 123
SET DAYSAGO=30

set mhost=localhost
set mport=5432
set musername="postgres"
set mrole="postgres"
12. user598613_svp_gamma 32 05.01.22 19:26 Сейчас в теме
(10) Вроде все норм. Поставьте директорию D:\Backup\postgres в ковычки... и еще, кроме директории с бекапами должны содаваться директория ТМР и LOG Они есть в директории D:\Backup\postgres?
7. user598613_svp_gamma 32 05.01.22 14:03 Сейчас в теме
поставьте в батнике, где происходит pg_dump паузу (pause сразу после команды pg_dump) запустите из командной строки... посмотрите что пишет. Возможно, в основной директории есть пробел, или же имя на кириллице. То что поделие Била Гейтса работает плохо с именами файлов или директорий на кириллице известно давно.
11. user1633914 05.01.22 15:23 Сейчас в теме
(7)Ставлю и до pg_dump, не отрабатывает, видимо ошибка еще на этапе формирования имен в начале скрипта.

db_backup.bat
for %%i IN %PGBASES% DO (
@echo ******* %%i ******** >>%logfile%
%PGBINPATH%\pg_dump --dbname %%i --host %mhost% --port %mport% --username %musername% --role %mrole% --no-password --file %PGTMP%\%%i_%f_name%.pgsql.backup >>%logfile%
17. user598613_svp_gamma 32 06.01.22 23:10 Сейчас в теме
(11) Проверьте формирование имен через echo на экран
18. user598613_svp_gamma 32 06.01.22 23:19 Сейчас в теме
(11) У Вас в параметрах D:\Backup\postgres

в батнике есть строки
IF NOT EXIST BACKUP mkdir BACKUP
set PGBACKUP=%WORKPATH%\BACKUP

Там поидее нужно IF NOT EXIST %WORKPATH%\BACKUP mkdir %WORKPATH%\BACKUP

Есть нехорошее подозрение что...глаз замылился(((
Поставьте какое нить другое имя ... типа d:\serviceSQL
13. frkbvfnjh 808 06.01.22 07:34 Сейчас в теме
Здравствуйте А можно узнать что значит
Недавно у клиента начал сыпаться ssd.. 3 базы умерло, бекап спас)
? Просто еще не сталкивался с износом SSD и на сколько знаю на изношенный SSD не возможно записать данные, но можно считать. Видимо это не так? Ну либо дохнит контроллер или физические повреждения диска, тогда уже ничего не поможет конечно. Но при естественном износе невозможность скопировать данные это конечно печалька. Как же тогда поймать приближение конца? Не думаю что СМАРТ как то может помочь, обычно там чушь...
15. user598613_svp_gamma 32 06.01.22 22:53 Сейчас в теме
(13) У нас начала сыпаться по файлам.. Т.к. база postgre состоит из множества файлов, умирали блоки хаотично. Причем вроде база в доступе, но при определенных действиях пишет ошибка файла x00909 и тд. случилось днем, народ продолжал работать, к вечеру завалилось еще 2 базы... Вообщем зрелище неахти(((.. На Linux SMART рулит ,периодически нужно выполнять и по совокупности значений принимается решение о замене. Хорошо описано в https://habr.com/ru/company/otus/blog/461929/ Но вот у меня это единственный сервак на Винде.. и засада как раз на нем получилась.
14. frkbvfnjh 808 06.01.22 12:06 Сейчас в теме
И еще вопрос - зачем 7z? Вроде как сам PG сживать умеет архивы, нужно только ключи указать
16. user598613_svp_gamma 32 06.01.22 22:56 Сейчас в теме
(14) Можно и ключами... Писал по итогам работы скриптов на Linux, там было сделано через tar.. Старался ничего не менять))
19. soft-alpha 17 25.01.22 20:49 Сейчас в теме
Приветствую. Скрипты скачал, подправил, все отработало, копия сделалась. Подскажите пожалуйста, поему при восстановлении из копии процесс завершается с ошибкой. Картинку прикрепляю.

З.Ы. Восстанавливал как в новую базу, созданную через консоль сервера 1С, так и в базу, созданную в PGAdmin 4
Прикрепленные файлы:
20. user598613_svp_gamma 32 26.01.22 12:44 Сейчас в теме
(19) Доброго времени суток. В теме дописывал, что " Восстановление созданных батниками бекапов идет через psql и лучше всего в созданную чистую базу (тоже через psql). 1с сервер подключаете к базе стандартными методами."
Лучше всего сделайте восстановление через psql в командной строке. Там все проще и в инете мануалов тьма. PGAdmin любит архивы созданные только в нем. Честно, даже мысли не приходило восстанавливать через него. Опять же, никто Вам не мешает доработать батники так, чтобы делались архивы удобоваримые для PGAdmin.

Вот строка:
%PGBINPATH%\pg_dump --dbname %%i --host %mhost% --port %mport% --username %musername% --role %mrole% --no-password --file %PGTMP%\%%i_%f_name%.pgsql.backup >>%logfile%

Здесь можно добавить группу ключей через переменную и баловаться))

P.S.
NewBase - Ваша новая база
infile - Файл бэкапа

команды в psql:
CRE ATE DATABASE NewBase WITH OWNER 'postgres';

Восстановление:
psql -U postgres NewBase < infile
21. soft-alpha 17 26.01.22 14:53 Сейчас в теме
(20)Благодарю за консультацию, буду разбираться)))
Оставьте свое сообщение