h1. Бекап и восстановление h2. Ручной бекап базы данных Данные система хранит в базе данных, далее по тексту _БД_ и в файлах. _БД_ состоит из 3 баз: * _config_ содержит конфигурационные данные * _storage_ содержит CDR и другие объемные данные * _var_ содержит локальные временные данные, например таблицу активных звонков Наиболее ценные данные содержатся в базах _config_ и _storage_. h3. 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=
expect -c "spawn rsync -axSRzv $SSH_LOGIN@$HOST_IP:/var/backups/smartswitch ./; expect \"*?assword:*\" {send \"$SSH_PASSWORD\r\"; interact};"
h3. storage База _storage_ хранится в формате _MyISAM_. База _storage_ не бекапится на локальный диск из-за ее большого объема. _MyISAM_ не журналируется, потому при некорректных перезагрузках вся база может быть восстановлена не прибегая к бекапам. При повреждении используется стандартная процедура восстановления баз данных MyISAM MySQL (например, для восстановления таблицы cdr): *Внимание! В случае, если вы являетесь клиентом Streamco, не выполняйте следующие операции самостоятельно! Вы можете испортить все ваши данные. Свяжитесь со службой технической поддержки!*
mysql> repair table cdr use_frm;
Этой командой вы восстановите таблицу cdr. Аналогично вы можете восстановить любую другую поврежденную таблицу. В системе есть скрипт, который выполняет автоматическое восстановление всех таблиц:
/usr/local/bin/smartswitch/repair.sh
Запускайте его для восстановления базы storage после некорректной перезагрузки сервера по питанию. Такжы вы можете настроить репликацию этой базы на другой сервер для сохранения постоянно актуальной резервной копии. В этом случае даже при полном сбое основного сервера у вас гарантированно будет снимок базы данных на сервере, на который выполняется репликация. Подробнее об этой возможности см. раздел [[Репликация_MySQL]]. h3. 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
h2. Бекап и восстановление файлов Важные файлы - это записи телефонных разговоров. Они хранятся в /usr/local/smartswitch/recordings. Вы можете настроить _rsync_ для бекапа этих файлов на ваш сервер. Установите пакет _expect_ и добавьте следующий скрипт на периодическое выполнение на удаленном хосте:
#!/bin/sh

SSH_LOGIN=<ваш SSH логин>
SSH_PASSWORD=<ваш SSH пароль>
HOST_IP=
expect -c "spawn rsync -axSRzv $SSH_LOGIN@$HOST_IP:/usr/local/smartswitch/recordings ./; expect \"*?assword:*\" {send \"$SSH_PASSWORD\r\"; interact};"
h2. Ручной бекап файловой системы Для бекапа файловой системы воспользуйтесь следующей процедурой:
# 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 - )
h2. Автоматический полный бекап системы Для нагруженных production систем ручной метод бекапа не подходит, так как возможна потеря данных в интервале между сделанным бекапом и аппаратным сбоем. Для настройки автоматического бекапа инженерами нашей компании используется "репликация MySQL":http://dev.mysql.com/doc/refman/5.0/en/replication.html. совместно с использованием _rsync_. Настройка _репликации_ и выходит за рамки данного руководства. [[Backup and recovery|English translation]]