В облако на работу: Архивирование 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С

См. также

Телефония, SIP Облачные сервисы, хостинг Пользователь Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

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

12000 руб.

04.02.2021    19890    22    0    

26

Управление взаимоотношениями с клиентами (CRM) Телефония, SIP Облачные сервисы, хостинг Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

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

12000 руб.

20.03.2019    22625    53    0    

36

Linux Системный администратор Программист Стажер Платформа 1С v8.3 Россия Бесплатно (free)

1C > Postgres > (Linux) > мы (=проблемы в 2024). Информация будет полезна начинающим 1С программистам (и сисадминам). Без ИТС. Часть 1.

01.07.2024    1836    AlOkt    28    

17

Сканер штрих-кода Linux Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Драйвер сканера штрих-кодов в 1С выполнен по технологии NativeAPI, следовательно, поддерживается возможность работы в Linux, но сама настройка оказалось не такой простой, как в Windows, понадобились навыки администрирования linux. В данной публикации представлен опыт установки сканера Mercury CL-2200 P2D BT в ALT Linux.

18.06.2024    470    MOleg82    0    

8

Облачные сервисы, хостинг Linux Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

Одна из завершающих публикаций цикла "В облако на работу:.. Рецепты от Капитана" в ходе которых был собран полнофункциональный рабочий контур 1С в сети на отечественной Ред ОС. С веб-серверами, доменной авторизацией, архивированием и прочая прочая... Это основное блюдо, на закуску разберемся с отказоустойчивостью. В этой публикации для PostgreSQL, заодно попробуем сделать это по новому.

17.06.2024    6074    capitan    18    

39

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

Тема Ubuntu, PostgreSQL и 1С уже избитая. Но все же, следуя инструкциям всех мануалов, пришлось потратить около 3-х дней. И как результат — готовые скрипты для установки сервера 1С и PostgreSQL на свежей Ubuntu за 5 минут.

14.06.2024    1644    user1389975    10    

32

О жизни Linux Системный администратор Программист Платформа 1С v8.3 Россия Бесплатно (free)

Использование Linux в качестве основной ОС для программиста 1С, возможно ли это? Решил поделиться личным опытом работы перехода на эту систему. В статье моя история без технических деталей максимально простым языком. И, спойлер, да, жизнь на Линуксе для разработчика 1С возможна и с каждым годом становится всё комфортней. Статья рассчитана на людей, с Линуксом не знакомых, специалистов прошу не кидаться помидорами.

16.05.2024    4121    soulner    32    

43

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

В одном из лучших руководств администраторов "UNIX and Linux System Administration Handbook, © 2018 Pearson Education lnc." описывается такой метод настройки систем: "Копируй, вставляй, молись". Какой бы ни была подробной инструкция и на какой бы типовой системе она ни составлялась, всегда что-то может пойти не так. В этой публикации рассмотрим, как искать и устранять ошибки авторизации ОС сервером 1С на базе linux.

02.05.2024    958    capitan    0    

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

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

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

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

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