Инструменты пользователя

Инструменты сайта

ru:backup_and_recovery_in_linux:start

Резервное копирование и восстановление в Linux

Резервное копирование

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

mkdir -p /var/backup

Создаём командный сценарий /var/scripts/backup_db.sh

#!/bin/sh

export VERSION=0_7_6 # версия программы Severcart
export BPPATH=/var/backup 
export DB=severcart
export PGHOST=127.0.0.1
export PGUSER=scuser
export PGPASSWORD=123456

pg_dump -d $DB | gzip > $BPPATH/$VERSION_$(date +%d-%m-%Y).sql.gz

Устанавливаем бит исполнения

chmod +x /var/scripts/backup_db.sh

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

crontab -e

Добавляем в конец файла строку и сохраняем.

0 3 * * * /var/scripts/backup_db.sh

Т.о. скрипт резервного копирования будет запускаться каждый день в 3:00 ночи.

Восстанавливаем базу

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

Исходники файлов можно скачать с сайта http://www.severcart.org/downloads/. Инструкция по инициализации виртуального окружения с необходимыми зависимостями находится здесь. Выполняется последовательно, за исключением запуска скрипта

python3 /var/venv/severcart/tkinstaller/install.py

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

Восстанавливаем структуру базы данных и их содержимое:

gunzip -c /var/backup/0_7_6_28-12-2016.sql.gz | psql -U scuser -d severcart

Далее выполняете bash скрипт для назначения владельца scuser ко всем таблицам

#!/bin/sh

SCHEMA=public
DB=severcart
OWNER=scuser


for table in `psql -tc "select tablename from pg_tables where schemaname = '${SCHEMA}';" ${DB}` ; do  psql -c "alter table ${SCHEMA}.${table} owner to \"${OWNER}\"" ${DB} ; done

На этом алгоритм завершён.

 

Инструменты страницы