Просмотр Исходного

h2. Создание бэкапа

Запустить вручную создание бэкапа можно через консоль:
{code}
chroot /app/asr_billing
/usr/local/bin/db_backup.sh
{code}

h2. Настройка бэкапов по FTP

Настройка бэкпов производится меню Настройки платформы \-> Настройки резервного копирования...

!0.png|border=1!

!backupnew.png|border=1!

Заполняете все нужные поля и сохраняете изменения.

*IP-адрес FTP-сервера* \- адрес удаленнго FTP-сервера. На него будут копироваться копии БД.
*Имя пользователя* \- логин для авторизации на FTP-сервере.
*Пароль* \- пароль для авторизации на FTP-сервере.
*Каталог на FTP-сервере* \- непосредственно в этот каталог будут записываться копии БД.
*Ежедневная/Еженедельная/Ежемесячная запись* \- временные интервалы за которые будет производится резервное копирование БД пользователей. Можно выбрать все 3 пункта одновременно.
{color:#ff0000}Настоятельно рекомендуется активировать Ежедневную запись{color}

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

{color:#000000}{*}Резервное копирование и восстановление из бекапов при помощи WinSCP{*}{color}

В случае переноса данных системы на другой компьютер или переустановки системы с последующим восстановлением конфигурации и базы пользователей, необходимо сначала сделать полный бекап данных с работающей системы. Для того чтобы сделать полный бекап системы необходимо скопировать резервные копии самой базы пользователей и бекап конфигурационного файла системы. Это делается с помощью программы winscp, дистрибутив которой вы всегда можете найти в Интернете по адресу: [http://winscp.net/|http://winscp.net/+] Программа бесплатна.

Процесс восстановления данных из бекапов можно разбить на два шага:
*ШАГ 1: Копирование данных с сервера.*

Подключаемся к серверу на 33 порт.

!рез1.JPG|border=1!

Убедитесь что данные введены верно и нажимайте "Login", после подключения вы увидите окно, похожее на обычный файловый менеджер с двумя панелями, слева будет ваш локальный компьютер, справа - файловая система Carbon Billing, вас интересует каталог BACKUP на ней.

Путь такой: /app/asr_billing/mnt/backup/

Здесь хранятся ежедневные, ежемесячные и еженедельные бэкапы. Вы можете выбрать те, которые нужны Вам.

*Примечание*: Статистика копируется отдельно из папки: /app/collector/var/stat/raw/
*Примечание*: Восстановиться можно из локальных бэкапов, которые хранятся в /mnt/backup/app/asr_billing/backup/ Эти бэкапы не архивированные, поэтому при восстановлении из бэкапа пункт 1 ШАГа 2 нужно пропустить. Данные бэкапы делаются автоматически каждый день, если в разделе /mnt/backup/ достаточно места.

*ШАГ 2: Восстановление из бэкапа.*

*1.* Копируем бэкап на сервер по WinSCP, распаковываем файл БД из архива.
{code}
tar xzf ваш_бэкап.tar.gz /app/asr_billing/var/backup_data/billing.gdb.gbk -O > /mnt/backup/app/asr_billing/backup/billing.gdb.gbk
{code}
*2.* Восстанавливаем БД из бэкапа
{code}
chroot /app/asr_billing/
gbk2gdb.sh /mnt/backup/ваш_бекап /var/db/billing_prepare.gdb
exit
{code}
*3.* Останавливаем биллинг

{code}
/app/asr_billing/service stop
{code}
*4.* Проверяем, что в /app/asr_billing/var/db есть файл billing.gdb.stop (это файл текущей БД)
Если он есть, то перемещаем его рядом (в этот же каталог) с указанием даты (позже можно будет удалить):

{code}
cd /app/asr_billing/var/db/
mv billing.gdb.stop blling<дата>.gdb.stop
{code}
Если же файла нет, то приступайте к пункту 5
Если произошел reset сервера (например по причине сбоя электропитания), то с высокой вероятностью база данных испортится, и файл БД переместится в /app/asr_billing/var/db/bad/billing.corrupt\*

*5.* Превращаем восстановленный бэкап в полноценную БД

{code}
chroot /app/asr_billing/
cd /var/db
mv ./billing_prepare.gdb ./billing.gdb.stop
chown firebird:firebird ./billing.gdb.stop
exit
{code}
*6.* Запускаем биллинг

{code}
echo 'stop OK' > /app/asr_billing/var/lib/app.state
/app/asr_billing/service restart
{code}


*7.* Проверяем что все демоны стартовали и не растут ошибки
Для этого 2 раза подряд запускаем проверку сервера:
{code}
server_check
{code}
При этом могут быть записи вида:
{code}
- Критические ошибки в логе worker за последний час: 3 [СБОЙ]
{code}
или
{code}
- Ошибки в логе traf-reporter за последний час: 4 [СБОЙ]
{code}
Если в течение двух запусков проверки значения не меняются - все в порядке.
Если растут значения "Критические ошибки в логе worker за последний час" - сразу обратитесь в техническую поддержку.
Если растут значения "Ошибки в логе traf-reporter за последний час" - выполните команды
{code}
chroot /app/asr_billing/
yes | cp /skelet/var/db/buff_traf.gdb /var/db/
chown firebird:firebird ./var/db/buff_traf.gdb
chmod g+w /var/db/buff_traf.gdb
/etc/init.d/radiusd_traf restart
{code}

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

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

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

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

*1.* Останавливаем биллинг
{code}
/app/asr_billing/service stop
{code}

*2.* При необходимости сохраняем текущую БД
{code}
mv /app/asr_billing/var/db/billing.gdb.stop /root/
{code}

*3.* Копируем в рабочий каталог:
*a)* демо БД
{code}
yes | cp -p /app/asr_billing/skelet/var/db/billing.gdb /app/asr_billing/var/db/billing.gdb.stop
{code}
*b)* Или пустую БД
{code}
yes | cp -p /app/asr_billing/skelet/var/db/billing_system.gdb.gdb /app/asr_billing/var/db/billing.gdb.stop
{code}
А также обязательно пустую БД трафика
{code}
yes | cp -p /app/asr_billing/skelet/var/db/buff_traf.gdb /app/asr_billing/var/db/buff_traf.gdb.stop
{code}


*4.* Запускаем биллинг
{code}
/app/asr_billing/service start
{code}