Project

General

Profile

Бекап и восстановление

Ручной бекап базы данных

Данные система хранит в базе данных, далее по тексту БД и в файлах.

БД состоит из 3 баз:
  • config содержит конфигурационные данные
  • storage содержит CDR и другие объемные данные
  • var содержит локальные временные данные, например таблицу активных звонков

Наиболее ценные данные содержатся в базах config и storage.

config

База config хранится в формате InnoDB.
Система по умолчанию создает бекап базы config в виде SQL дампа каждые 6 часов.
Бекапы сохраняются в архивах /var/backup/smartswitch.
У вас есть бекапы за каждые 6 часов за последний месяц в любой момент времени.
Воспользоваться бекапом вы можете захотеть в следущих случаях:

  • неисправимое повреждение журнальных файлов InnoDB вследствие некорректной перезагрузки системы
  • ошибка оператора (например удаление важной информации)

Для восстановления базы config из бекапа используйте следующую инструкцию (предположим, что вы хотите восстановить архив 010600.tgz:

Внимание! В случае, если вы являетесь клиентом Streamco, не выполняйте следующие операции самостоятельно!
Вы можете испортить все ваши данные.
Свяжитесь со службой технической поддержки!

# sudo -s
# cd /usr/local/smartswith/mysql
# tar zxvf /var/backups/smartswitch/010600.tgz
# mysql
mysql> drop database config;
mysql> create database config;
mysql> exit
# mysql config < 010600/config.sql

Вы можете настроить rsync для бекапа этих файлов на ваш сервер.
Установите пакет expect и добавьте следующий скрипт на периодическое выполнение на удаленном хосте:

#!/bin/sh

SSH_LOGIN=<ваш SSH логин>
SSH_PASSWORD=<ваш SSH пароль>
HOST_IP=<IP адрес сервера с Smartswitch>
expect -c "spawn rsync -axSRzv $SSH_LOGIN@$HOST_IP:/var/backups/smartswitch ./; expect \"*?assword:*\" {send \"$SSH_PASSWORD\r\"; interact};" 

storage

База storage хранится в формате MyISAM.
База storage не бекапится на локальный диск из-за ее большого объема.
MyISAM не журналируется, потому при некорректных перезагрузках вся база может быть восстановлена не прибегая к бекапам.
При повреждении используется стандартная процедура восстановления баз данных MyISAM MySQL (например, для восстановления таблицы cdr):

Внимание! В случае, если вы являетесь клиентом Streamco, не выполняйте следующие операции самостоятельно!
Вы можете испортить все ваши данные.
Свяжитесь со службой технической поддержки!

mysql> repair table cdr use_frm;

Этой командой вы восстановите таблицу cdr.
Аналогично вы можете восстановить любую другую поврежденную таблицу.

В системе есть скрипт, который выполняет автоматическое восстановление всех таблиц:

/usr/local/bin/smartswitch/repair.sh

Запускайте его для восстановления базы storage после некорректной перезагрузки сервера по питанию.

Такжы вы можете настроить репликацию этой базы на другой сервер для сохранения постоянно актуальной резервной копии.
В этом случае даже при полном сбое основного сервера у вас гарантированно будет снимок базы данных на сервере, на который выполняется репликация.
Подробнее об этой возможности см. раздел Репликация_MySQL.

var

Эта база не хранит важных данных.
Однако в ней есть нужные таблицы и в ней хранится лицензионный ключ.
Достаточно сделать бекап ее всего раз (однако делать бекaп нужно после каждого апдейта, так как при апдейте обычно меняется формат базы):

# mysqldmp --single-transaction -S /usr/local/smartswitch/mysql_var/mysql.sock var > var.sql

Скопируйте полученный var.sql куда-нибудь и используйте процедуру для восстановления:

Внимание! В случае, если вы являетесь клиентом Streamco, не выполняйте следующие операции самостоятельно!
Вы можете вызвать сбой всей системы.
Свяжитесь со службой технической поддержки!

# mysql -S /usr/local/smartswitch/mysql_var/mysql.sock var
mysql> drop database var;
mysql> create database var;
mysql> exit
# mysql -S /usr/local/smartswitch/mysql_var/mysql.sock var < var.sql

Бекап и восстановление файлов

Важные файлы - это записи телефонных разговоров.
Они хранятся в /usr/local/smartswitch/recordings.

Вы можете настроить rsync для бекапа этих файлов на ваш сервер.
Установите пакет expect и добавьте следующий скрипт на периодическое выполнение на удаленном хосте:

#!/bin/sh

SSH_LOGIN=<ваш SSH логин>
SSH_PASSWORD=<ваш SSH пароль>
HOST_IP=<IP адрес сервера с Smartswitch>
expect -c "spawn rsync -axSRzv $SSH_LOGIN@$HOST_IP:/usr/local/smartswitch/recordings ./; expect \"*?assword:*\" {send \"$SSH_PASSWORD\r\"; interact};" 

Ручной бекап файловой системы

Для бекапа файловой системы воспользуйтесь следующей процедурой:

# mkdir backup
# cd backup
# dump -0 -L -f - / | gzip -9  > root.img.gz
# dump -0 -L -f - /usr | gzip -9  >  usr.img.gz
# dump -0 -L -f - /var | gzip -9  >  var.img.gz

Перенесите файлы себе на ПК.
Пусть ваш логин - admin, а IP адрес сервера - 192.168.0.1.

# pscp.exe -r admin@192.168.0.1:backup backup

После этого у вас на ПК находятся снимки всех файловых систем.

Для восстановления из бекапа сначала установите систему с нашего установочного диска, а затем перенесите бекап на него:

# pscp.exe -r backup admin@192.168.0.1:

Затем восстановите из бекапа:

# cd backup
# gzip -d  root.img.gz  | ( cd / ; restore -rf - )
# gzip -d  usr.img.gz  | ( cd /usr ; restore -rf - )
# gzip -d  var.img.gz  | ( cd /var ; restore -rf - )

Автоматический полный бекап системы

Для нагруженных production систем ручной метод бекапа не подходит, так как возможна потеря данных в интервале между сделанным бекапом и аппаратным сбоем.
Для настройки автоматического бекапа инженерами нашей компании используется репликация MySQL. совместно с использованием rsync.
Настройка репликации и выходит за рамки данного руководства.

English translation

Also available in: PDF HTML TXT