Бэкап и восстановление базы 1с в бд postgreSQL для CentOS

Данный способ резервного копирования позволяет снимать резервную копию базы 1с, не завершая сеансы пользователей.

Первым делом разрешаем пользователю root подключаться локально к серверу бд без авторизации. Редактируем в файле /etc/postgresql/9.6/main/pg_hba.conf строку, приведя ее к такому виду:

local   all             all                              trust

Перезапускаем postgres, чтобы изменения вступили в силу:

# systemctl restart postgresql

Устанавливаем архиватор pigz. Умеет жать данные, нагружая все ядра процессора, в отличие от gzip. Прирост производительности в 2-3 раза. В CentOS ставится из epel:

# yum -y install epel-release
# yum -y install pigz

Выполняем бэкап базы:

# pg_dump -U postgres base1c | pigz > /backup/base1c.sql.gz
  • postgres – имя пользователя базы данных
  • base1c – название базы 1с (у вас может быть другим)
  • pigz – архиватор
  • base1c.sql.gz – файл, в который будет сохранена резервная копия

Восстанавливаем базу из архива. Первым делом разархивируем файл:

# unpigz /backup/base1c.sql.gz

Файл будет распакован, а архив удален. Чтобы сохранить архив, можно использовать такую команду:

# unpigz -c /backup/base1c.sql.gz > base1c.sql

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

# psql -U postgres -l

Создаем новую базу данных:

# createdb --username postgres -T template0 base1c-restored
  • base1c-restored – имя базы данных 1с , в которую будем восстанавливать копию (у вас может быть другим)

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

# psql -U postgres -l

Бэкап базыБазу данных создали. Теперь загружаем в нее наш бэкап 1с:

# psql -U postgres base1c-restored < /backup/base1c.sql

Ждем приличное время. Оно будет зависеть от размера базы. После того, как восстановление завершено, можно идти в консоль кластера 1С и добавлять новую базу, указывая в качестве базы postgresql только что созданную базу с загруженным архивом.

Далее пишем скрипт и добавляем его в cron ( /etc/crontab ) для автоматического бэкапа по расписанию. В папке /root/ создаем файл с расширением *.sh и в него копируем код:

# ! /bin/sh
# Зададим переменные для имени файла
DATE=$(date +%Y-%m-%d_%H-%M-%S)

echo "`date +"%Y-%m-%d_%H-%M-%S"` Start backup" >> /backup/pgsql.log
cd /backup
pg_dump -U postgres base1c | pigz > $DATE-base1c.sql.gz

Можно добавлять несколько баз, бэкап будет делаться по очереди.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *