Резервное копирование и обслуживание баз 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 Управляемые формы Конфигурации 1cv8 Платные (руб)

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

6000 руб.

06.11.2012    72788    625    45    

84

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

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

1200 руб.

03.09.2014    15705    21    6    

27

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

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

04.12.2023    9426    n_mezentsev    15    

27

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

В данной инструкции будет описано, как с помощью pgAdmin, bat-файлов и планировщика заданий Windows организовать резервное копирование, восстановление и хранение копий баз данных.

07.10.2022    28598    sapervodichka    37    

147

Архивирование (backup) Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Захотелось клиентам выгрузку архива баз, и выгрузку в дт, готовые скрипты с сети не заработали. Может, кому-то поможет. Релиз 8.3.18.1741.

1 стартмани

25.08.2022    5732    3    Gnom-Gluck    6    

7

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

Небольшая утилита для копирования файловых баз данных 1С.

1 стартмани

02.06.2022    4689    3    Giblarium    12    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 31 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 31 05.01.22 13:41 Сейчас в теме
(4) set WORKPATH=d:\scripts - основная директория, где хранятся скрипты и поддиректории резервных копий, темп и т.д. Можете ее хоть как назвать
6. user1633914 05.01.22 13:56 Сейчас в теме
(5)Спасибо за ответ. Но у меня не работает, возможно сделанные батники из статьи не полные. Видимо нужно скачать готовые и их редактировать.
8. user598613_svp_gamma 31 05.01.22 14:10 Сейчас в теме
(6) покажите что у Вас в params.bat.. Батники полные.
9. user598613_svp_gamma 31 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 31 05.01.22 19:26 Сейчас в теме
(10) Вроде все норм. Поставьте директорию D:\Backup\postgres в ковычки... и еще, кроме директории с бекапами должны содаваться директория ТМР и LOG Они есть в директории D:\Backup\postgres?
7. user598613_svp_gamma 31 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 31 06.01.22 23:10 Сейчас в теме
(11) Проверьте формирование имен через echo на экран
18. user598613_svp_gamma 31 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 805 06.01.22 07:34 Сейчас в теме
Здравствуйте А можно узнать что значит
Недавно у клиента начал сыпаться ssd.. 3 базы умерло, бекап спас)
? Просто еще не сталкивался с износом SSD и на сколько знаю на изношенный SSD не возможно записать данные, но можно считать. Видимо это не так? Ну либо дохнит контроллер или физические повреждения диска, тогда уже ничего не поможет конечно. Но при естественном износе невозможность скопировать данные это конечно печалька. Как же тогда поймать приближение конца? Не думаю что СМАРТ как то может помочь, обычно там чушь...
15. user598613_svp_gamma 31 06.01.22 22:53 Сейчас в теме
(13) У нас начала сыпаться по файлам.. Т.к. база postgre состоит из множества файлов, умирали блоки хаотично. Причем вроде база в доступе, но при определенных действиях пишет ошибка файла x00909 и тд. случилось днем, народ продолжал работать, к вечеру завалилось еще 2 базы... Вообщем зрелище неахти(((.. На Linux SMART рулит ,периодически нужно выполнять и по совокупности значений принимается решение о замене. Хорошо описано в https://habr.com/ru/company/otus/blog/461929/ Но вот у меня это единственный сервак на Винде.. и засада как раз на нем получилась.
14. frkbvfnjh 805 06.01.22 12:06 Сейчас в теме
И еще вопрос - зачем 7z? Вроде как сам PG сживать умеет архивы, нужно только ключи указать
16. user598613_svp_gamma 31 06.01.22 22:56 Сейчас в теме
(14) Можно и ключами... Писал по итогам работы скриптов на Linux, там было сделано через tar.. Старался ничего не менять))
19. soft-alpha 17 25.01.22 20:49 Сейчас в теме
Приветствую. Скрипты скачал, подправил, все отработало, копия сделалась. Подскажите пожалуйста, поему при восстановлении из копии процесс завершается с ошибкой. Картинку прикрепляю.

З.Ы. Восстанавливал как в новую базу, созданную через консоль сервера 1С, так и в базу, созданную в PGAdmin 4
Прикрепленные файлы:
20. user598613_svp_gamma 31 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)Благодарю за консультацию, буду разбираться)))
Оставьте свое сообщение