Описание

В таблице приведено описание регламентных работ по сохранению баз и конфигурации ECSS-10.

Таблица — Регламентные работы по сохранению баз данных и конфигурации ECSS-10

ПериодОперацияМетод резервного копированияМетод восстановления
один раз в неделю/etc — конфигурация сервера и всех служб, полное или инкрементное резервное копирование (backup)Копирование и архивированиеЗамена директории из архива
один раз в неделю/var/lib/ecss/etc — конфигурация узлов ECSS, полное или инкрементное резервное копирование (backup)Копирование и архивированиеЗамена директории из архива
один раз в неделю/var/lib/ecss/mycelium — долговременные данные mycelium, полное резервное копирование (backup)Копирование и архивированиеЗамена директории из архив
один раз в неделю/var/lib/ecss/oasys — базы данных кластеров ECSS, полное или инкрементное резервное копирование (backup)Копирование и архивированиеЗамена директории из архива
один раз в неделю/var/lib/ecss/snmp — базы данных SNMP, полное резервное копирование (backup)Копирование и архивированиеЗамена директории из архива
один раз в неделюБД MySQL — инкрементное резервное копирование (backup)Описан в Backup и восстановление MySQLОписан в Backup и восстановление MySQL
один раз в неделюБД LDAP — полное резервное копирование (backup)

Описан в Backup и восстановление LDAP

Описан в Backup и восстановление LDAP
один раз в месяцБД MySQL — полное резервное копирование (backup)Описан в Backup и восстановление MySQLОписан в Backup и восстановление MySQL
обновление релиза/usr/lib/ecss — компоненты ECSS, полное резервное копирование (backup)Копирование и архивированиеЗамена директории из архива
  • В рамках ECSS-10 только кластер подсистемы ecss-ds, ecss-mediator сохраняют свои данные на диск. Все остальные подсистемы (ecss-core, ecss-pa-megaco, ecss-pa-sip) оперируют только Runtime-данными, не требующими сохранения между перезапусками.
  • В данном подразделе указаны команды, которые выполняются из командной консоли управления операционной системы Linux (shell) непосредственно хоста, на котором установлена система ECSS-10.

Полное копирование:
cp -rv /etc /tmp/etc

Инкрементное копирование:
cp -ruv /etc /tmp/etc

где
ключ -r копирует каталог /etc с его подкаталогами в каталог /tmp/etc;
ключ -u копирует только новые или обновленные файлы.

Архивирование:
tar -cvf <NAME>./etc/

где
<NAME> — имя архива.

Разархивирование:
tar -xvf <NAME>

где
<NAME> — имя архива.

Midnight Commander:

  • копирование — F5;
  • архивирование — F2, выбрать из меню пункт 3;
  • разархивирование — F2, выбрать из меню пункт z.

Содержимое каталогов:

  • /var/lib/ecss/ — содержит служебные данные ECSS-10: контексты маршрутизации, базы данных, CDR, статистику;
  • /var/log/ecss/ — содержит файлы логов подсистем ECSS-10;
  • /usr/local/lib/ecss/ — содержит библиотеки и установленные релизы ECSS-10;
  • /etc/network/ — сетевые параметры сервера;
  • /etc/keepalived/ — сетевые настройки виртуальных интерфейсов (VRRP);
  • /etc/ecss/ — содержит конфигурационные файлы подсистем ECSS-10;
  • /etc/default/ — содержит конфигурационные файлы общих настроек подсистем ECSS-10;
  • /etc/init.d/ — содержит скрипты запуска подсистем ECSS-10 и других приложений;
  • /etc/hosts — в файле прописаны адреса для связи подсистем ECSS-10.

В зависимости от аварийной ситуации необходимо заменить текущий раздел на backup.

Примеры:

  1. Пропала регистрация, повторная регистрация не приводит к положительному результату.

    Действия:

    • Убедиться сетевым снифером (wireshark), что сервер принимает сообщения и отвечает на них, возвращая сообщение об ошибке. Возможно не проходит авторизация.
    • Проверить присутствие абонента в базе LDAP-сервера можно в командной консоли CLI командой:  cluster/adapter/sip1/ldap/user test test 3000 .
    • Если на LDAP-сервере нет виртуальных АТС (доменов) и абонентов, то можно остановить LDAP. Скопировать из backup /var/lib/ldap и /etc/ldap. Запустить LDAP.
  2. Пропали данные истории вызовов

    Действия:

    Указанные команды выполняются через интерфейс командной строки CLI.
    • Убедиться в работе механизма сбора и отображения истории вызовов командой:  /cluster/core/core1/history/properties/info , значение параметра "enabled" должно быть "true".
    • Убедиться в запуске сервиса cph командой:  /node/core1@ssw1/service , напротив сервиса "cph" в колонке "S" должно быть установлено значение "+";
    • Убедиться, что не выдается информация о истории вызовов, используя команду:  /cluster/core/core1/history/show-history all 1 ;
    • Необходимо восстановить базу данных из backup.

Backup и восстановление MySQL

Выполнить Backup базы MySQL простым копированием файлов можно в том случае, если остановить сервис MySQL. Это обусловлено тем, что база в любой момент может быть модифицирована. Существует кэш и копирование может совпасть с моментом записи в файл (модификацией файла). В этом случае проблемы возникнут при попытке восстановления базы из Backup.

Варианты действий:

  1. Остановить базу, скопировать файлы, запустить базу. Время остановки базы зависит от размера базы данных.
  2. Заблокировать данные на изменения, очистить кэш, выполнить cнимок файловой системы, если используется журналируемая файловая система. Разблокировать базу данных. В фоновом режиме выполнить копирование файлов. Преимущества данного способа: небольшое время простоя базы; база не отключается и доступна на чтение. Недостатки: повышается нагрузка на файловую систему на момент Backup.
  3. Выполнить backup базы через дамп. Преимущества данного способа: утилитой nice можно понизить приоритет и получать данные постепенно. Недостатки: выполняется длительное время; не подходит для инкрементных дампов, соответственно размер backup будет большой.
  4. Запустить инкрементный backup базы. Преимущества данного способа: сохраняются только изменения от момента последнего сохранения, соответственно быстро из без остановки системы. Недостатки: перед сохранением нужно сбросить кэш в файлы.

    В данном подразделе указаны команды, которые выполняются из командной консоли управления операционной системы Linux (shell) непосредственно хоста, на котором установлена система ECSS-10.

Описание варианта №3

  1. Выполнить копию БД

    mysqldump --verbose --single-transaction --quote-names --complete-insert --extended-insert --routines --events --triggers -u<LOGIN> -P<PORT> -h<HOST> -p<PASS> <DBNAME> > dump.sql

    где

    <HOST> — хост, на котором размещен сервер MySQL;
    <LOGIN> — логин к MySQL;
    <PORT> — порт, на котором работает сервер; 
    <PASS> — пароль;
    <DBNAME> — имя базы.

    После выполнения данной команды в файле dump.sql будет копия MySQL-базы с именем "DBNAME".
    Целесообразно имя файла dump.sql формировать с учетом даты и времени суток.
    Например:

    mysqldump --verbose --single-transaction --quote-names --complete-insert --extended-insert --routines --events --triggers --user=root --password=ssw1 --databases ecss_audit ecss_calls_db ecss_dialer_db ecss_statistics ecss_subscribers web_conf history_db > ./all_dump.sql
  2. Восстановление

    mysql -u<LOGIN> -P<PORT> -h<HOST> -p<PASS> <DBNAME> < dump.sql

    Описание процесса можно просмотреть по следующим ссылкам: https://dev.mysql.com/doc/refman/5.7/en/backup-methods.html; http://www.codenet.ru/db/mysql/MySql-Backup.php; http://habrahabr.ru/post/137380/; http://www.linuxjournal.su/?p=1064.

Описание варианта №4

Метод сохранения Backup основан на базе механизма бинарных логов MySQL. Бинарные логи содержат полную историю изменений базы данных. Для работы инкрементного Backup необходимо, чтобы бинарные логи были включены для требуемой базы данных.

Описание настройки бинарных инкрементных логов приведено по ссылке: Схема развертывания MySQL master-master replication с использованием keepalive

Процесс состоит из двух фаз:

  1. Создание первоначального полного снимка базы, выполняется аналогично варианту №3. В параметрах "mysqldump" указывается ключ --flush-logs, который приводит к принудительному сохранению бинарных логов, ротации файлов бинарных логов, чтобы при последующем их сохранении было известно с какого файла начинать синхронизацию.  mysqldump -uLOGIN -PPORT -hHOST -pPASS --flush-logs DBNAME > dump.sql
    Такой снимок базы выполняется изначально при запуске всего механизма Backup данных, а также рекомендуется повторно выполнять полные снимки базы один раз в месяц.
  2. Периодический Backup бинарных логов от момента предыдущего Backup. Эта операция выполняется простым копированием файлов (обычно расположены /var/log/mysql) с момента предыдущего инкрементного или полного Backup по текущий момент, за исключением последнего файла, в который записываются текущие изменения. Такой периодический Backup рекомендуется выполнять один раз в неделю.

Восстановление Backup из инкрементных логов происходит следующим образом:

  1. Восстанавливаем базы из последнего полного Backup.
  2. Накатывание инкрементных обновлений. Последовательно применяются к базе бинарные логи:  mysqlbinlog binlog_files | mysql -uLOGIN -pPASS .

Backup и восстановление LDAP

Не рекомендуется выполнять backup базы данных LDAP копированием по тем же причинам, что и MySQL.

С подробным описанием можно ознакомиться по ссылке: http://supportex.net/2011/02/backup-restore-ldap-database.

Скрипт для создания backup:

#!/bin/sh
LDAPBK=ldap-$( date +%y%m%d-%H%M ).ldif
BACKUPDIR=/home/backups
/usr/sbin/slapcat -v -b "dc=yourDC,dc=local" -l $BACKUPDIR/$LDAPBK
gzip -9 $BACKUPDIR/$LDAPBK
  • Необходимо изменить параметры dc=yourDC,dc=local на действующие.
  • Backup по данной схеме рекомендуется проводить один раз в неделю.

Восстановление из backup:

  1. Остановить slapd:

    ~$ sudo service slapd stop
  2. Удалить базу (убедиться, что вы находитесь в правильном каталоге для удаления командой rm):

    ~$ sudo rm -rf /var/lib/ldap/*
  3. Восстановить базу из LDIF-файла:

    ~$ sudo -u openldap /usr/sbin/slapadd -l backup.ldif
  4. Запустить slapd:

    ~$ sudo service slapd start

Полный backup сервера ECSS

Для полного backup используется копирование всего жесткого диска (dd). Необходимо сохранить все содержимое диска (таблица разделов, разделы, данные). Преимущество данного метода в том, что за один шаг сохраняются все установленные на жестком диске системы. При таком backup сохранятся все данные, относящиеся к загрузчику. Таким образом, после восстановления можно сразу же загрузиться с этого жесткого диска.

Создание образа

  1. Убедитесь, что ни один из разделов диска, с которого будет делаться backup не примонтирован. Для этого выполните команду mount без параметров.
  2. Выбрать раздел, на котором планируется разместить файл-образ. Это должен быть раздел другого жесткого диска с достаточным объемом свободного места. Объем свободного места должен соответствовать объему копируемого жесткого диска.
  3. Смонтировать backup-раздел

    sudo mount /dev/sdXY /mnt
  4. Выполнить команду

    sudo dd if=/dev/sdX bs=1M conv=noerror,sync | lzma -cv > /mnt/hdd.dd.lzma

    где «sdX» — диск для копирования без сжатия, а не раздел.

    В зависимости от размера жесткого диска и производительности компьютера процедура может занять продолжительное время (до нескольких часов).

  5. По завершении п. 4 отмонтировать backup-раздел

    sudo umount /mnt

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

  • Данный способ предполагает полный возврат к состоянию на момент создания архива с заменой всех данных!
  • Перед началом работы необходимо убедиться в надежности электропитания. При высокой интенсивности записи возрастает риск повреждения диска в случае сбоя питания.
  1. Убедиться, что ни один раздел восстанавливаемого диска не используется.
  2. Смонтировать backup-раздел

    sudo mount /dev/sdXY /mnt
  3. Выполнить команду

    bzip2 -dc /mnt/hdd.dd.bz | sudo dd of=/dev/sdX bs=1M conv=sync,noerror

    или для несжатого образа

    sudo dd if=/mnt/hdd.dd.bz of=/dev/sdX bs=1M conv=sync,noerror
  4. По завершении п.3 отмонтировать backup-раздел

    sudo umount /mnt
  • Если необходимо распаковать образ на другой жесткий диск, то он должен иметь размер не меньше оригинального. В случае, если новый диск большего объема, можно расширить разделы, либо создать новый раздел на свободном месте с помощью команды parted/fdisk/gparted/etc.
  • Не используйте оба жестких диска («дубликат» и «оригинал») одновременно! При подключении двух дисков в системе будет по два раздела на каждый UUID, что приведет к проблемам в работе или невозможности загрузки.

Клонирование сервера ECSS

  1. Подключить новый диск, на который будет производиться клонирование.
  2. Загрузить с liveCD ubuntu 18.04.
  3. Командой df -h или mount проверить, что ни один из разделов дисков (с которого будет делаться клон и на который будет делаться клон) не примонтирован. В случае если разделы примонтировались, то выполнить команду umount.
  4. В shell выполнить следующую команду:

    sudo dd if=/dev/sdX of=/dev/sdY bs=4M

    где sdX — диск, с которого будет производиться клонирование,
    sdY — диск, на который будет производиться клонирование.

    Ожидаем завершения выполнения команды. Операция может занять продолжительное время (до нескольких часов).

Backup конфигурации ECSS

В пакет ecss-ds добавлена утилита ecss-control (идет в пакете ecss-node).
Доступны следующие команды:

  • stash <DIRECTORY> — создание архива хостовой конфигурации ECSS-10 в заданной директории;
  • rollback <FILE> — восстановление ранее созданной хостовой конфигурации ECSS-10 из соответствующего архива.

В процессе работы утилита запрашивает пароль от пользователя root к mysql.

Пример:

hurd@insider:~$ ecss-control stash ~/
ERROR: this operation required root privilegies. Try with sudo

hurd@insider:~$ sudo ecss-control stash ~/
please enter root password for mysql db:
Enter password: 
stashing ECSS-10...
create stashed file: /home/hurd//ecss-stash-20180511-151933.tar.gz
done

hurd@insider:~$ sudo ecss-control rollback ~/ecss-stash-20180511-151933.tar.gz
rollback configuration from /home/hurd/ecss-stash-20180511-151933.tar.gz
please enter root password for mysql db:
Enter password: 
stashed file successfull rollbacked
hurd@insider:~$ 

После выполнения rollback для применения новой конфигурации из бекапа необходимо произвести перезагрузку подсистемы ds, используя команду:

hurd@insider:~$ sudo systemctl restart ecss-ds

Backup выполняется для следующих файлов конфигурации:

Каталоги:

  • /etc/ecss
  • /var/lib/ecss/adaptation
  • /var/lib/ecss/backups
  • /var/lib/ecss/cp
  • /var/lib/ecss/ecss-media-server
  • /var/lib/ecss/eep
  • /var/lib/ecss/modification
  • /var/lib/ecss/mycelium
  • /var/lib/ecss/oasys
  • /var/lib/ecss/oasys.backup
  • /var/lib/ecss/regime
  • /var/lib/ecss/routing
  • /var/lib/ecss/snmp

mysql db:

  • ecss_audit
  • ecss_subscribers
  • web_conf