В облако на работу: Архивирование postgres. Дайте два

27.05.24

Интеграция - Облачные сервисы, хостинг

В прошлых публикациях мы, не торопясь, после настройки персонального рабочего места на РедОС 7.3, посмотрели РедОС 8 и почти полностью собрали рабочую сеть 1С на отечественной ОС подходящую для работы среднего размера компании. С веб-серверами, доменной авторизацией и прочая прочая... Осталось настроить регулярное архивирование, чтобы не потерять нажитое.

 

Урок информатики в школе. Учитель поворачивает рубильник:
- Всё, урок закончен!
- Но мы же не сохранились! - в ужасе кричат дети.
Учитель, смягчившись, поворачивает рубильник обратно
- Ладно, сохраняйтесь.
anekdot.ru©

 

 

А вы, конечно же, ждали поговорку про админов, которые уже делают бэкапы?
Обычно, статьи про резервное копирование начинают с нее. Самые смелые еще прикладывают картинку с деревянным бегемотом (уберу его под кат).
 

 

 

Далее, следуют страшные истории про накрывшиеся белым дымом сервера и датацентры. Гуру системного администрирования могут рассказывать их сотнями, также как и про то, как и чем лучше делать бэкапы.

В мирах Microsoft есть набор из трех вариантов от вендора, слово "счастье" вы складываете из него, возможно докупая кубики у сторонних производителей при том же базовом наборе.
В мирах Postgres кто во что горазд и утилит резервного копирования тоже гораздо больше. Хорошо еще, что лидеры рынка, подсматривают фичи друг и друга и в непродолжительное время выкатывают их в прод.

Поэтому давайте не будем углубляться в подробности самого процесса, а рассмотрим особенности, касающиеся 1С.
Назвать эту публикацию рецептом язык не поворачивается, здесь скорее бакалейная лавка умеренного ассортимента, каждый выбирает по вкусу и кошельку продуктовую корзину.

 

Бэкапы нужны для факапов.

Пожалуй основное отличие 1С от других систем это то, для чего собственно нужен архив.
Как и то, что здесь он почти наверняка есть и проверен.

В мирах 1С крайне редко требуется полное восстановление из бэкапа рабочей базы. История об этом конечно есть у каждого, но как правило это ...



Даже в малых компаниях, не говоря уже о средних и больших не экономят на железе.

Поэтому при наличии сисадмина с прямыми руками вас будет спасать отказоустойчивость, не надо ее путать с архивированием.

Об отказоустойчивости планирую отдельный выпуск, есть что показать, не переключайтесь.

 


У малышей и где руководство скупердяйничает, базы спасают ежедневной выгрузкой из конфигуратора, а не из СУБД. 

В итоге

Архив нужен

  • В большинстве своем для создания и поддержания контура разработки и/или тестирования (свежая копия рабочей базы, обновленные актуальными данными базы разработчиков и база для экспериментов бухгалтерии/HR, для различных аудиторов).
    Здесь желательно иметь переносимый между различными редакциями железа и версиями СУБД архив, зато нет особых запросов по скорости его создания.
    Этот же архив уезжает на долгосрочное хранение поэтому желательно его иметь одним файлом.
  • Для восстановления определенных объектов рабочей базы.
    Как известно, самый страшный (по крайней мере самый большой) вирус находится между стулом и клавиатурой. Частенько вы его видите в зеркале, частенько это бухгалтер с полными правами и "я что то нажала и оно что то сломалось".
    В любом случае это восстановление не требует непрерывной архивации, потому что момент времени вспоминается обычно смутно.
    Здесь желательно иметь архив рабочей базы +- 30 мин в течении рабочего дня.
    Делаться он должен быстро и не мешать в работе пользователям.
    Несколько особняком, но скорее сюда же относятся различные обновления конфигураций, перед которыми лучше сохраняться, чем нет.

Миры 1С занимают хорошо если 1% как приложения СУБД и у тех и у других вендоров, поэтому пользоваться в плане утилит надо тем что есть.

Хотя... Наверное если хорошо попросить разработчиков Postgres Professional, сделать бэкап файлов одной базы инстанса Postgres и его восстановление в другой инстанс в теории возможно, надо только все аккуратно прописать в системном каталоге. Это все равно будет в рамках одной версии СУБД и железа, но хоть чем то напоминать старый добрый бэкап Microsoft.

Отсюда и утилит резервного копирования будет две с различным функционалом и различным подходом к вопросу.

За футшток взята выгрузка базы из конфигуратора 1С, метод вполне рабочий для небольших баз, с достаточно большим недостатком - с базой данных, которая выгружается в dt-файл, не должно быть никаких подключений

Тем кто не любит много букв

Сравнение вариантов архивации

Вариант Скорость сек. Размер архива Кб.
выгрузка базы из конфигуратора 1С 47,26 383421
выгрузка базы автономным сервером 1С 27,47 383421
pg_dump 1 поток без сжатия tar без сжатия 9,70+2,15 1094000
pg_dump 1 поток максимальное сжатие tar без сжатия 49,13+0,74 466530
pg_dump 1 поток без сжатия tar + bzip2 максимальное сжатие 9.49+125.42 385872
pg_dump 1 поток без сжатия tar + gzip максимальное сжатие 9.52+45.31 432729
pg_dump 2 потока без сжатия tar + gzip максимальное сжатие 7.95+45.21 432726
pg_probackup 2 потока максимальное сжатие FULL backup 35,78 472000
     

 

Кто не любит буквы совсем может посмотреть видео

Как итог:

Если для вас не проблема в нерабочее время отключить всех пользователей, не стоит недооценивать штатные средства 1С, они по крайней мере гарантируют, что выгруженный файл загрузится обратно.

По поводу других проверок, немного отстал от темы, возможно 1С гарантируют еще что-то.

Кроме этого минимальный размер архива.

Вполне пригоден pg_dump, если SLA вам это позволяет.

Я бы не стал занимать его компрессией, а убрал бы ее вовсе, чтобы поскорее освободить базу и дальше уже предоставить это специализированным утилитам.

Как вариант не сжимать вовсе ничем и получить космическую скорость, тогда приготовить в два-три раза больше места.

В широко известной в узких кругах дуэли bzip2 vs gzip без неожиданностей, bzip2 медленнее, но лучше сжимает текстовые файлы. Опять же выбирать вам.

 

Остальные буквы

 

 

И да. Вы же не храните архивы на сервере СУБД, поэтому перед архивированием обычно нужно подмонтировать сетевой ресурс/убедиться что он смонтирован.

Если в сети используется доменная авторизация, то пригодятся знания и keytab из прошлой публикации.

С помощью файла keytab получаем тикет авторизации, с его помощью монтируем сетевую шару примерно так:

#!/bin/bash
if ! mountpoint -q /mnt/backup; then
kinit -k -t /1c/usr1cv83.keytab usr1cv83@TEST.LOC
 mount -t cifs -o cruid=ХХХХХХХХ,sec=krb5,domain=TEST.LOC,sec=krb5,multiuser,dir_mode=0755,file_mode=0755,uid=1000,gid=1000 //<сервер долгосрочного хранилища/backup/1C> /mnt/backup
 sleep 10
fi.

#далее если она смонтировалась начинаем архивирование

if mountpoint -q /mnt/backup; then
<строка архивирования, о которой поговорим далее>
sleep 60
umount /mnt/backup
fi.

Где ХХХХХХХХ это не то о чем все подумали, а id пользователя с правами доступа к каталогу хранения архивово получаемое

id -u usr1cv83

 

Переходим к самому резервному копированию

Исходные данные знакомые из предыдущих статей

  • Сервер 1С РедОС 8 
  • Postgres 16 от PostgresPro
  • 1С Предприятие 64-х 8.3.24.1467
  • все в домене test.loc. 
    Пользователь, от которого работает сервер 1С usr1cv83, пароли у всех 123456.
    Все эти значения произвольные и должны в скриптах быть заменены на ваши.
  • все по железу 4ГБ RAM 50ГБ SSD 2 Ядра CPU
  • все развернуто в облаке ©Serverspace из оригинальных iso образов производителей для чистоты эксперимента.
  • база Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.29.62) демо

 

 

Чтобы было с чем сравнивать, первые два архива создаем штатными средствами 1С

  • конфигуратором
    DATETIME=$(date +%Y_%m_%d_%H_%M); time /opt/1cv8/x86_64/8.3.24.1467/1cv8 DESIGNER /IBName "demo" /N "Савинская З.Ю. (Системный программист)" /DisableStartupDialogs /DisableStartupMessages /DumpIB /mnt/backup/${DATETIME}_demo.bak.dt
  • автономным сервером
    DATETIME=$(date +%Y_%m_%d_%H_%M); time /opt/1cv8/x86_64/8.3.24.1467/ibcmd infobase dump --db-server=localhost --dbms=PostgreSQL  --db-name=demo --db-user=postgres --db-pwd=123456 --user="Савинская З.Ю. (Системный программист)" /mnt/backup/${DATETIME}_demo.ib.dt
  • pg_dump 1 поток без сжатия tar без сжатия
    DATETIME=$(date +%Y_%m_%d_%H_%M); time sudo -u postgres pg_dump -d demo --format=d --compress=0 --jobs=1 --file /mnt/backup/${DATETIME}_demo.bak && time tar --create --file=/mnt/backup/${DATETIME}_demo.bak.tar /mnt/backup/${DATETIME}_demo.bak/* && rm -rf /mnt/backup/${DATETIME}_demo.bak/*
  • pg_dump 1 поток максимальное сжатие tar без сжатия
    DATETIME=$(date +%Y_%m_%d_%H_%M); time sudo -u postgres pg_dump -d demo --format=d --compress=9 --jobs=1 --file /mnt/backup/${DATETIME}_demo.bak && time tar --create --file=/mnt/backup/${DATETIME}_demo_compress.bak.tar /mnt/backup/${DATETIME}_demo.bak/* && rm -rf /mnt/backup/${DATETIME}_demo.bak/*
  • pg_dump 1 поток без сжатия tar + bzip2 максимальное сжатие
    DATETIME=$(date +%Y_%m_%d_%H_%M); time sudo -u postgres pg_dump -d demo --format=d --compress=0 --jobs=1 --file /mnt/backup/${DATETIME}_demo.bak && time tar --use-compress-program='bzip2 --best' --create --file=/mnt/backup/${DATETIME}_demo.bak.tar.bz /mnt/backup/${DATETIME}_demo.bak/* && rm -rf /mnt/backup/${DATETIME}_demo.bak/*
  • pg_dump 1 поток без сжатия tar + gzip максимальное сжатие
    DATETIME=$(date +%Y_%m_%d_%H_%M); time sudo -u postgres pg_dump -d demo --format=d --compress=0 --jobs=1 --file /mnt/backup/${DATETIME}_demo.bak && time tar --use-compress-program='gzip --best' --create --file=/mnt/backup/${DATETIME}_demo.bak.tar.gz /mnt/backup/${DATETIME}_demo.bak/* && rm -rf /mnt/backup/${DATETIME}_demo.bak/*
  • pg_dump 1 поток без сжатия tar + gzip максимальное сжатие
    DATETIME=$(date +%Y_%m_%d_%H_%M); time sudo -u postgres pg_dump -d demo --format=d --compress=0 --jobs=2 --file /mnt/backup/${DATETIME}_demo.bak && time tar --use-compress-program='gzip --best' --create --file=/mnt/backup/${DATETIME}_demo.bak.tar.gz /mnt/backup/${DATETIME}_demo.bak/* && rm -rf /mnt/backup/${DATETIME}_demo.bak/*
  • pg_probackup 2 потока максимальное сжатие
    #+это установка и инициализация
    dnf install -y https://repo.postgrespro.ru/pg_probackup/keys/pg_probackup-repo-centos.noarch.rpm
    dnf install -y pg_probackup-16 
    pg_probackup-16 init -B /mnt/backup/pg_probackup
    pg_probackup-16 add-instance -B /mnt/backup/pg_probackup -D /var/lib/pgpro/1c-16/data --instance=5432
    chmod +777 -R /mnt/backup/pg_probackup
    #-это установка и инициализация
    sudo -u postgres pg_probackup-16 backup -B /mnt/backup/pg_probackup --instance 5432 -j2 --backup-mode=FULL --compress --stream --compress-level=9 --temp-slot
    #-это DELTA и просмотр результатов
    sudo -u postgres pg_probackup-16 backup -B /mnt/backup/pg_probackup --instance 5432 -j2 --backup-mode=DELTA --compress --stream --compress-level=9 --temp-slot
    pg_probackup-16 show -B /mnt/backup/pg_probackup --instance 5432

     


 

Для pg_dump в свое время нашел отличный скрипт, который позволяет архивировать все базы кластера (инстанса Postgres) по одной и по очереди, не перечисляя их.

С небольшими правками:

 

#!/bin/bash
#Location to place backups.
# оригинал https://gist.github.com/powellc/4162155
backup_dir="/var/backups/databases/"
#String to append to the name of the backup files
backup_date=$(date +%Y_%m_%d_%H_%M)
#Numbers of days you want to keep copie of your databases
number_of_days=15
databases=$(psql -l -t | cut -d'|' -f1 | sed -e 's/ //g' -e '/^$/d')
#for i in $databases; do  if [ "$i" != "postgres" ] && [ "$i" != "template0" ] && [ "$i" != "template1" ]; then  
for i in $databases; do  if [[ "$i" ~= "_prod" ]]; then    
    echo Dumping $i    
    #pg_dump ${i} > ${backup_dir}${i}\_${backup_date}.sql
    #здесь вы подставляете строку архивирования из опубликованных выше например ${i} это имя базы
  fi
done
find $backup_dir -type f -prune -mtime +$number_of_days -exec rm -f {} \;

На этом все. Надеюсь, что удалось вставить свои пять копеек занять место между многотомными публикациями, из них моя рекомендация в первую очередь от самих разработчиков - Postgres Professional в обязательном порядке и советом из одного предложения делать бэкапы средствами СУБД.

P/S Чтобы не забыть.
Запустить 1С как конфигуратор, так и клиента без установки графического интерфейса можно в MobaXterm, доустановив пакеты
dnf install -y xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils xorg-x11-fonts-Type1
и
mcedit /etc/ssh/sshd_config
проверив 
X11Forwarding yes

Благодарности:

Благодарю компанию ©Serverspace за предоставленное оборудование, без поддержки собрать такой пингвинариум мне было бы негде.

Планы на будущее:

Имея такой развернутый контур, грех не написать про отказоустойчивый кластер.

Надеюсь это и сделать, а потом уйти в лето.

 

 

Статья продолжает серию публикаций:

Серия "Рецепты от Капитана" на всякий случай

Ссылки для более подробного изучения уберу под кат, чтобы не нарушать правила сайта
 

Вступайте в нашу телеграмм-группу Инфостарт

1С Предприятие Alt Linux Astra Linux Ред ОС Kylin рабочее место пользователя 1С

См. также

Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Облачные сервисы, хостинг Программист Пользователь 1С:Предприятие 8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Данная система предназначена всем, кому нужно выгружать данные в SPOT 2D или в ОРИМИ. Позволяет гибко настроить получение данных для каждого поля файла и файла выгрузки в целом. Имеет отборы по организации, складу, и папкам номенклатуры. Есть возможность выгружать данные как вручную, с выбором конкретного файла, за конкретный период, так и в автоматическом режиме в указанное вами время. Выгрузка может выполняться в файл или через http напрямую. Имеется подробная справка по настройке, а также примеры запросов для приведенных в примерах файлов выгрузки. Может работать в составе любой конфигурации!

18300 руб.

19.10.2018    30515    9    1    

10

Телефония, SIP Облачные сервисы, хостинг Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 1C:ERP 1С:КА 1С:УНФ Управленческий учет Платные (руб)

Продукт интеграции возможностей Виртуальной АТС Ростелеком в систему 1С Предприятие 8. Звонки прямо из программы 1С, уведомления о текущих звонках, регистрация пропущенных и завершенных вызовов, динамическая маршрутизация входящих звонков, ведение журнала, анализ использования связи.

12200 руб.

04.02.2021    24421    24    2    

26

Архивирование (backup) Linux Системный администратор Программист Россия Абонемент ($m)

Сценарий предназначен для восстановления баз данных PostgreSQL в Linux под учетной записью postgres из резервных копий, сформированных программой pg_dump в формате plain или custom.

1 стартмани

20.02.2026    394    0    Магнат    2    

2

Архивирование (backup) Администрирование СУБД Linux Системный администратор Программист 1С:Предприятие 8 Россия Абонемент ($m)

Сценарий предназначен для избирательного создания ротационных резервных копий баз данных по дисциплине 2-1 (2 копии, одна на другом физическом диске, другая на компьютере вне серверной комнаты) в форматах custom и/или plain кластера PostgreSQL, а также глобальных свойств кластера: пользователи, пароли и т.д.

2 стартмани

19.02.2026    368    0    Магнат    1    

3

Разработка внешних компонент Администрирование СУБД Linux Обновление 1С Системный администратор Программист Россия Абонемент ($m)

Cценарий python предназначен для автоматизации процессов установки СУБД PostgreSQL, клиентского приложения и сервера 1С, службы RAS а также  и деинсталляции последних в cреде операционной системы Astra Linux. Полный режим работы выполняет деинсталляцию предшествующей версии 1С и установку последующей.  Возможны также только деинсталляция или только установка. Сценарий тестирован в среде ОС Astra Linux SE v.1.7.x,v.1.8.x  

2 стартмани

03.02.2026    616    3    Магнат    1    

2

Информационная безопасность Архивирование (backup) Linux Администрирование СУБД Системный администратор Программист Россия Абонемент ($m)

В публикации рассматриваются не только принципы проектирования IT инфраструктуры малого и среднего предприятия в фокусе последних требований законодательства о защите ПДн, но и дается пошаговая инструкция по установке и настройке полного пакета ПО на основе использования Российских компонентов. Данная структура программ полностью покрывает все потребности организации по использованию, архивированию и защите IT инфраструктуры. Практическое применение протестировано на различных предприятиях в течении 5 лет. Все программы протестированы на Astra Linux 1.8 Пример формы описания процессов установки пункт 20.9

10 стартмани

29.01.2026    833    6    Магнат    16    

2

Linux Системный администратор 1С 8.3 Бесплатно (free)

Устранение ошибки "libsoup3 symbols detected. Using libsoup2 and libsoup3 in the same process is not supported" при запуске 1С на Debian 13.

05.01.2026    992    kot1c    4    

6

Облачные сервисы, хостинг WEB-интеграция Программист Бесплатно (free)

Очереди сообщений – это инструмент обмена данными между системами. На примере Yandex Message Queue разбираем, как брокер от Яндекс.Облака помогает решать практические задачи. Даем бесплатную библиотеку для 1С, которая упрощает работу с YandexMQ и другими SQS-сервисами.

17.11.2025    3196    leemuar    37    

27
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user635667 27.05.24 11:58 Сейчас в теме
А где взять-то эту РедОс?
2. capitan 2564 27.05.24 12:02 Сейчас в теме
(1)
А где взять-то эту РедОс?

https://redos.red-soft.ru/product/downloads/
Физические лица
РЕД ОС предоставляется бесплатно для некоммерческого использования.

Юридические лица
РЕД ОС доступна для скачивания с целью изучения и тестирования.

Для использования РЕД ОС необходимо приобрести лицензию на платной основе.
4. user635667 27.05.24 17:04 Сейчас в теме
(2) А ИПешнику допустим в магазине на рабочие места кассира надо покупать? цена вопроса?
5. capitan 2564 27.05.24 17:19 Сейчас в теме
(4)
ИПешнику
не обязательно ставить РЕД ОС
Это в основном для госкомпаний
Вы можете в сторону Simply Linux посмотреть
https://www.basealt.ru/simplylinux
Хотя .ИПешники бывают разные, может вы шубы собольи продаете
Надо только уточнить что кассы на ней заработают
Вообще лучше со своим франчайзи 1С это решить
3. OlegAr 28 27.05.24 14:52 Сейчас в теме
и что все прямо летает, а где сравнение с Окнами ?
6. capitan 2564 27.05.24 17:20 Сейчас в теме
(3)
де сравнение с Окнами

Окна вылетели в трубу)
Работает уж точно не медленнее
Интефейс дело привычки зато можно забыть о вирусах ... на время)
Для отправки сообщения требуется регистрация/авторизация