Восстановление БД биллинга из резервной копии.

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (19)

просмотр истории страницы


h2. Восстановление БД из бэкапа из консоли

{color:#000000}{*}Резервное копирование и восстановление из бекапов при помощи WinSCP{*}{color}
*ШАГ 2: Восстановление из бэкапа.*

*1.* # Подготовка
Восстанавливать БД можно из локального бэкапа (Дневной, Недельный, Месячный) либо из бэкапа, который копируется на FTP сервер. На FTP сервере бэкапы хранятся в архиве, поэтому после копирования на сервер с биллингом их нужно распаковать. Например имя бэкапа backup_daily_2016-30-21_02-53_asr_billing.tar.gz, тогда команда распаковки будет выглядеть вот так:
Перед выполнением операции, перейдите в директорию где лежит требуемая резервная копия. Допустим, требуется восстановить одну из локальных резервных копий. В таком, случае выполните следующую команду:
tar xzf backup_daily_2016-30-21_02-53_asr_billing.tar.gz /app/asr_billing/var/backup_data/billing.gdb.gbk -O > /mnt/backup/app/asr_billing/backup/billing.gdb.gbk
{code}

*2.* # Восстанавливаем БД из бэкапа. При восстановлении из локального бэкапа имя будет содержать дату и время, так вы поймете какой из бэкапов последний и наиболее актуальный. Допустим, что имя бэкапа billing.gdb.gbk, тогда сделать нужно следующее:
{code}
chroot /app/asr_billing/
exit
{code}

*3.* # Останавливаем биллинг
{code}
/app/asr_billing/service stop
{note}
При появлении сообщения о переходе базы в safemode такого содержания:

{code}error:

Переходите к пункту 4. В данном случае, биллинг уже является остановленным.
{note}

*4.* # Проверяем, что в /app/asr_billing/var/db есть файл billing.gdb.stop (это файл текущей БД)
Если он есть, то перемещаем его рядом (в этот же каталог) с указанием даты, например 2016-08-03 (позже можно будет удалить):
{code}
{note}Если же файла нет, то приступайте к пункту 5
Если произошел reset сервера (например по причине сбоя электропитания), то с высокой вероятностью база данных испортится, и файл БД переместится в /app/asr_billing/var/db/bad/billing.corrupt\*{note}

*5.* # Превращаем восстановленный бэкап в полноценную БД
{code}
chroot /app/asr_billing/
exit
{code}

6. # Запускаем скрипт обновления БД
{code}chroot /app/asr_billing/ update_hook.sh --force{code}
{warning}Обновление БД нужно запускать строго на остановленном биллинге\! Иначе это приведёт к разрушению базы.{warning}
*7.* Запускаем биллинг
# Восстанавливаем финансовые операции, которые прошли после создания бэкапа, но до падения БД.\*
Пример, нужно восстановить данные за сентябрь 2016 года после восстановления БД в этот день.
{code}
chroot /app/asr_billing/
/usr/local/bin/restore_pays.sh /var/db/raw.tmp/201609/pay/
{code}
{info} При восстановлении финансовых операций запись в [журнале платежей|http://http://docs.carbonsoft.ru/48693363] не появляется, т. е. в нем не отобразятся данные по платежам с момента сбоя базы данных до момента восстановления. {info}
# После восстановления всех финансовых операций, по-прежнему находясь в контейнере биллинга выполните следующую команду
{code}
python /usr/lib/python2.7/site-packages/python_tools/client_fix_scripts/fix_generators2.py
{code}
# Запускаем биллинг
{code}
echo 'stop OK' > /app/asr_billing/var/lib/app.state
/app/asr_billing/service restart
{code}


*8.* # Проверяем что все демоны стартовали и не растут ошибки
Для этого 2 раза подряд запускаем проверку сервера:
{code}
{code}

*9.* Восстанавливаем финансовые операции, которые прошли после создания бэкапа, но до падения БД.\*
Пример, нужно восстановить данные за сентябрь 2016 года после восстановления БД в этот день.

{code}
chroot /app/asr_billing/
/usr/local/bin/restore_pays.sh /var/db/raw.tmp/201609/pay/
{code}

{info} При восстановлении финансовых операций запись в [журнале платежей|http://http://docs.carbonsoft.ru/48693363] не появляется, т. е. в нем не отобразятся данные по платежам с момента сбоя базы данных до момента восстановления. {info}

*10.* После восстановления всех финансовых операций, по-прежнему находясь в контейнере биллинга выполните следующую команду
{code}
python /usr/lib/python2.7/site-packages/python_tools/client_fix_scripts/fix_generators2.py
{code}


h2. Восстановление демонстрационной или пустой БД