Описание

В данном документе приводится описание различных действий, которые должны быть выполнены пользователем системы ECSS-10 для сохранения баз данных и конфигурации системы. Эти работы необходимы для выполнения восстановления данных в случае возникновения серьезной неисправности и обеспечения при этом максимально возможной надежности и минимального времени простоя системы.

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

Перечень каталогов, где расположены файлы ECSS

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

Периодичность резервного копирования

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

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

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

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

Описан в разделе Backup и восстановление LDAP
выполняется автоматически каждый деньБД PostgreSQL  — полное резервное копирование (backup)Описан в разделе Backup и восстановление PostgreSQLОписан в  разделе Backup и восстановление PostgreSQL

Внеплановые:

  • до обновления релиза
  • После успешной первоначальной инсталляции
  • После успешного обновления

Все вышеперечисленное(полное резервное копирование указанных каталогов и баз данных), а также дополнительно /usr/lib/ecss – компоненты ECSS, полное резервное копирование (backup)


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

Для обеспечения надежности архивы рекомендуется скопировать на другой хост.

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

Методика резервного копирования каталогов

Ручное копирование

Полное копирование на примере каталога /etc:

cp -rv /<NAME> /tmp/etc

Инкрементное копирование на примере каталога /etc:

cp -ruv /etc /tmp/etc

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

Архивирование на примере каталога /etc:
tar -zcvf <NAME> /tmp/etc/

где
<NAME> — имя архива, например, etc.tar.gz.

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

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

Копирование и архивация с помощью Midnight Commander:


 Запустите Midnight Commander с полномочиями root командой 

копирование с внешнего сервера
sudo mc
  • архивирование — F2, выбрать из меню пункт 3; для примера сделать архив директории /etc  → в левой панели выберите директорию для которой хотите сделать бэкап (войдите в эту директорию, в данном примере /etc) , нажмите клавишу "F2" по умолчанию будет пункт 3 , укажите желаемое имя для будущего бэкапа, нажмите "Enter". Будьте аккуратны файл будет создан в директории /.

  • копирование — F5/ перенос – F6;   → в правом окне перейдите в желаемую директорию (для примера /home/abf/Backup/), в левом окне выберите ранее созданный файл (в нашем примере /test.etc.tar.gz)  нажмите клавишу "F6" , затем подтвердите действие нажав "Enter", наш бэкап файл будет перемещен из /test.etc.tar.gz в /home/abf/Backup/test.etc.tar.gz.

  • разархивирование — F2, выбрать из меню пункт y. Выберите файл архива, нажмите клавишу "F2" затем "y" файл будет распакован.

Двойным кликом можете его открыть для просмотра или замены испорченного файла на копию из архива.

Backup и Restore БД Mnesia и конфигурации ssw с использованием скрипта ecss-control

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

  • stash <DIRECTORY> — создание архива хостовой конфигурации ECSS-10 в заданной директории;
  • rollback <FILE> — восстановление ранее созданной хостовой конфигурации ECSS-10 из соответствующего архива.
  • detach — позволяет вывести ноду из кластера.
  • attach — возвращает ранее изолированную ноду в кластер и разблокирует весь трафик между ними.

Создание Backup базы Mnesia

Для выполнения backup требуется следующая команда:

sudo ecss-contol stash [<OPTIONS>] [<DESTINATION DIRECTORY>]

если <DESTINATION DIRECTORY> не указана, тогда сохранение будет выполнено в текущую директорию

Опции:

  • --no-sql — не копировать базы MySQL;
  • --no-log — не копировать логи;
  • --no-config — не копировать конфигурацию;
  • --last-log — брать только последние логи.
sudo ecss-control stash --no-sql


пример
sudo ecss-control stash --no-sql
WARNING: no such file or directory: '/var/lib/ecss/ecss-data.json', ignored
stashing ECSS-10 ...
create stashed file: /home/abf/ecss-stash-no-sql-20250507-162816.tar.gz
done

ll
total 318M
drwxr-x--- 6 abf  abf  4,0K мая  7 16:28 ./
drwxr-xr-x 3 root root 4,0K янв 21 13:45 ../
. . .
-rw-r--r-- 1 root root 140M мая  7 16:28 ecss-stash-no-sql-20250507-162816.tar.gz

В файле backup -a:

Данный файл (в примере ecss-stash-no-sql-20250507-162816.tar.gz) скопировать на внешний сервер, для возможности восстановления в случае падения ssw, и не возможности использовать информацию с локального диска.

Сохранение выполнено.



Восстановление/Restore (rollback) c backup файла

В случае невозможности загрузки хоста с локальной БД или от партнера (проблема с файлами в директории /var/lib/ecss/oasys/). Выполнить восстановление следующей командой:

sudo ecss-contol rollback|rb [--no-clean] [--no-stash] <DESTINATION FILE>

rollback работает следующим образом:

  1. Выполняется stash текущей конфигурации и логов, при этом парсится имя файла на наличие опций (можно пропустить опцией --no-stash);
  2. Выполняется clean с теми же опциями (можно пропустить опцией --no-clean);
  3. Выполняется rollback.


sudo ecss-control rb ecss-stash-no-sql-20250507-153908.tar.gz


пример
ll
total 85828
drwxr-x--- 5 abf  abf      4096 мая  7 15:39 ./
drwxr-xr-x 3 root root     4096 янв 21 13:45 ../
. . .
-rw-r--r-- 1 root root 87818240 мая  7 15:39 ecss-stash-no-sql-20250507-153908.tar.gz
. . .

sudo ecss-control rb ecss-stash-no-sql-20250507-153908.tar.gz
WARNING: Before rollback current configuration and logs will be stashed and then cleared
         Stash archive will be saved at /home/abf
WARNING: no such file or directory: '/var/lib/ecss/ecss-data.json', ignored
stashing ECSS-10 ...
create stashed file: /home/abf/ecss-stash-no-log-no-sql-20250507-171515.tar.gz
done
WARNING: unexpected option: --no-sql
ignored
cleaning ECSS-10...
Excluded files: [ecss-control.conf]
done
rollback configuration from ecss-stash-no-sql-20250507-153908.tar.gz
tar: Removing leading `/' from member names

gzip: stdin: unexpected end of file
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now
WARNING: mysql db missed in stash file. Restore mysql db ignored
stashed file successfull rollbacked


ll /var/lib/ecss/oasys/
total 16
drwxrwxr-x  4 ssw ssw 4096 мая  7 15:36  ./
drwxrwxr-x 27 ssw ssw 4096 апр 18 09:14  ../
drwxrwxr-x  2 ssw ssw 4096 мая  7 15:37 'Mnesia.ds1@ecss2'/
drwxrwxr-x  2 ssw ssw 4096 мая  7 15:28 'Mnesia.md1@ecss2'/

После загрузки БД из backup файла на диск требуется перезагрузить ecss-ds / ecss-pa-sip сервисы следующими командами:

sudo systemctl restart ecss-ds
sudo systemctl restart ecss-pa-sip

Восстановление/Restore (rollback) c backup файла в конфигурации кластер

В случае невозможности загрузки хоста с локальной БД или от партнера (проблема с файлами в директории /var/lib/ecss/oasys/). Выполнить восстановление следующей командой на ecss1:

sudo ecss-contol  rollback|rb [--no-clean] [--no-stash] <DESTINATION FILE>

rollback работает следующим образом:

Выполняется stash текущей конфигурации и логов, при этом парсится имя файла на наличие опций (можно пропустить опцией --no-stash);
Выполняется clean с теми же опциями (можно пропустить опцией --no-clean);
Выполняется rollback.

Предварительное условие : остановить сервисы ecss-mycelium ecss-ds ecss-core ecss-pa-sip ecss-mediator

Пример восстановления БД на кластере

  1. Останавливаем сервисы на ecss2 выполнив следующие команды:
    1. sudo systemctl stop ecss-mycelium.service
    2. sudo systemctl stop ecss-ds.service
    3. sudo systemctl stop ecss-core.service
    4. sudo systemctl stop ecss-pa-sip.service
    5. sudo systemctl stop ecss-mediator.service
  2. Останавливаем сервисы на ecss1 выполнив следующие команды: 
    1. sudo systemctl stop ecss-mycelium.service
    2. sudo systemctl stop ecss-ds.service
    3. sudo systemctl stop ecss-ds.service
    4. sudo systemctl stop ecss-pa-sip.service
    5. sudo systemctl stop ecss-mediator.service
  3. Выполнить восстановление с backup файла на сервере ecss1 командой — sudo ecss-control rb ecss-backup-file.tar.gz, для примера:
    sudo ecss-control rb ecss-stash-no-log-20250724-130615.tar.gz
  4. На ecss1 активизировать сервисы выполнив следующие команды:
    1. sudo systemctl start ecss-mycelium.service
    2. sudo systemctl start ecss-ds.service
    3. sudo systemctl start ecss-core.service
    4. sudo systemctl start ecss-pa-sip.service
    5. sudo systemctl start ecss-mediator.service
  5. На ecss2 активизировать сервисы выполнив следующие команды:
    1. sudo systemctl start ecss-mycelium.service
    2. sudo systemctl start ecss-ds.service
    3. sudo systemctl start ecss-core.service
    4. sudo systemctl start ecss-pa-sip.service
    5. sudo systemctl start ecss-mediator.service
  6. Войти в cocon и проверить статус системы

Результат:

на ecss2
sudo systemctl stop ecss-mycelium.service 
sudo systemctl stop ecss-ds
sudo systemctl stop ecss-core
sudo systemctl stop ecss-pa-sip.service 
sudo systemctl stop ecss-mediator.service 
на ecss1
sudo systemctl stop ecss-mycelium.service 
sudo systemctl stop ecss-ds
sudo systemctl stop ecss-core
sudo systemctl stop ecss-pa-sip.service 
sudo systemctl stop ecss-mediator.service 


sudo ecss-control rb ecss-stash-no-log-20250724-130615.tar.gz
WARNING: Before rollback current configuration and logs will be stashed and then cleared
         Stash archive will be saved at /home/abf
WARNING: no such file or directory: '/var/lib/ecss/ecss-data.json', ignored
please enter root password for mysql db:
Enter password: 
stashing ECSS-10 ...
create stashed file: /home/abf/ecss-stash-no-log-20250724-142420.tar.gz
done
cleaning ECSS-10...
Excluded files: [ecss-control.conf]
done
rollback configuration from ecss-stash-no-log-20250724-130615.tar.gz
tar: Removing leading `/' from member names
please enter root password for mysql db:
Enter password: 
stashed file successfull rollbacked


ll /var/lib/ecss/oasys/
total 24K
drwxrwxr-x  4 ssw ssw 4,0K мая  7 15:34  ./
drwxrwxr-x 30 ssw ssw 4,0K июл 14 00:00  ../
drwxrwxr-x  2 ssw ssw  12K июл 24 13:05 'Mnesia.ds1@ecss1'/
drwxrwxr-x  2 ssw ssw 4,0K июл 23 14:15 'Mnesia.md1@ecss1'/


sudo systemctl start ecss-mycelium.service 
abf@ecss1:~$ sudo systemctl start ecss-ds
abf@ecss1:~$ sudo systemctl start ecss-core.service 
abf@ecss1:~$ sudo systemctl start ecss-pa-sip.service 
abf@ecss1:~$ sudo systemctl start ecss-mediator.service 
на ecss2
sudo systemctl start ecss-mycelium.service 
sudo systemctl start ecss-ds
sudo systemctl start ecss-core.service 
sudo systemctl start ecss-pa-sip.service 
sudo systemctl start ecss-mediator.service 
выполняется в CoCon
system-status   
Checking...
┌─┬───────────────┬────────────────────────────┬───────────────────────────────┬─────────────────────┬──────┐
│ │     Node      │          Release           │         Erlang nodes          │    Mnesia nodes     │Uptime│
├─┼───────────────┼────────────────────────────┼───────────────────────────────┼─────────────────────┼──────┤
│ │core1@ecss1    │ecss-core-3.14.16.0.1495    │core1@ecss1,core1@ecss2        │not running          │1m 46s│
│ │core1@ecss2    │ecss-core-3.14.16.0.1495    │core1@ecss1,core1@ecss2        │not running          │47s   │
│ │ds1@ecss1      │ecss-ds-3.14.16.0.1495      │ds1@ecss1,ds1@ecss2            │ds1@ecss1,ds1@ecss2  │1m 51s│
│ │ds1@ecss2      │ecss-ds-3.14.16.0.1495      │ds1@ecss1,ds1@ecss2            │ds1@ecss1,ds1@ecss2  │53s   │
│ │md1@ecss1      │ecss-mediator-3.14.16.0.1495│md1@ecss1,md1@ecss2            │md1@ecss1,md1@ecss2  │1m 31s│
│ │md1@ecss2      │ecss-mediator-3.14.16.0.1495│md1@ecss1,md1@ecss2            │md1@ecss1,md1@ecss2  │35s   │
│ │mycelium1@ecss1│ecss-mycelium-3.14.16.0.1495│mycelium1@ecss1,mycelium1@ecss2│not running          │1m 58s│
│ │mycelium1@ecss2│ecss-mycelium-3.14.16.0.1495│mycelium1@ecss1,mycelium1@ecss2│not running          │59s   │
│ │sip1@ecss1     │ecss-pa-sip-3.14.16.0.1495  │sip1@ecss1,sip1@ecss2          │sip1@ecss1,sip1@ecss2│1m 39s│
│ │sip1@ecss2     │ecss-pa-sip-3.14.16.0.1495  │sip1@ecss1,sip1@ecss2          │sip1@ecss1,sip1@ecss2│41s   │
└─┴───────────────┴────────────────────────────┴───────────────────────────────┴─────────────────────┴──────┘

All services are started.

  Active media resource selected list specific:
┌─────────────┬───────────┬───────────────┬───────────┬───────────┐
│    Node     │    MSR    │      MSR      │ Cc-status │ Cc-uptime │
│             │           │    version    │           │           │
├─────────────┼───────────┼───────────────┼───────────┼───────────┤
│ core1@ecss1 │ msr.ecss1 │ 3.14.16.0.118 │ connected │ 00:01:14  │
│             │ msr.ecss2 │ 3.14.16.0.118 │ connected │ 00:01:13  │
│ core1@ecss2 │ msr.ecss1 │ 3.14.16.0.118 │ connected │ 00:00:12  │
│             │ msr.ecss2 │ 3.14.16.0.118 │ connected │ 00:00:11  │
└─────────────┴───────────┴───────────────┴───────────┴───────────┘

 

Backup и Restore БД PostgreSQL

Создание Backup базы PostgreSQL

Система создания Backup-ов работает в автоматическом режиме, но при необходимости можно выполнить и ручное сохранение в любое удобное время. Останавливать эксплуатацию или нагрузку не нужно. Для включения автоматического создания Backup-ов необходимо выполнить следующие команды на обоих хостах:

на обоих хостах
sudo systemctl enable ssw_dump_postgres.timer
на обоих хостах
sudo systemctl start ssw_dump_postgres.timer

В результате выполнения данных команд мы получим автоматически созданный дамп  PostgreSQL для SSW. Время выполнения дампа 00:00 каждые сутки. Данные файлы дампа будут сохранены в директории /var/lib/ecss-mysql/pgbackups. Директория создается автоматически (если не существовала ранее) при установке SSW или перезапуске сервиса ecss-ds.

При выполнении скрипта, создается дамп БД и добавляется префикс - номер текущего дня недели согласно спецификации ISO 8601 (например 2ecss_storekeeper_db.sql - дамп созданный во вторник). Файл будет хранится, в указанной директории, в течении недели, при выполнении следующего сохранения старый файл будет удалён автоматически.

В данном примере показан Backup PostgreSQL за вторник:

ll /var/lib/ecss-mysql/pgbackups
total 264M
drwxrwxr-x 2 ssw  ssw  4,0K мар 10 13:36 ./
drwxr-xr-x 3 root root 4,0K мар 10 13:18 ../
-rw-r--r-- 1 root root 132M мар 10 00:00 1ecss_storekeeper_db.sql
-rw-r--r-- 1 root root 132M мар 10 00:00 2ecss_storekeeper_db.sql

 При необходимости, можно выполнить ручное сохранение следующими командами:

sudo systemctl start ssw_dump_postgres.service

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

sudo systemctl start ssw_dump_postgres.service

ll /var/lib/ecss-mysql/pgbackups
total 264M
drwxrwxr-x 2 ssw  ssw  4,0K мар 10 13:36 ./
drwxr-xr-x 3 root root 4,0K мар 10 13:18 ../
-rw-r--r-- 1 root root 132M мар 10 00:00 1ecss_storekeeper_db.sq
-rw-r--r-- 1 root root 132M мар 10 13:42 2ecss_storekeeper_db.sql

Рекомендуется выполнить сохранения на внешнем сервере Backup.


Восстановление из файла резервной копии

Процедура Восстановление / Restore выполняется за три этапа:

1. Подготовка файла восстановления из ранее созданного дампа.

Для того чтобы посмотреть возможные дампы для восстановления введите команду : 
sudo ecss-ssw-prepare-postgres-dumps.exs

пример
sudo ecss-ssw-prepare-postgres-dumps.exs 
1 name:/var/lib/ecss-mysql/pgbackups/1ecss_storekeeper_db.sql size:131 Mb inserted_at: 2026-03-10 14:24:04 updated_at: 2026-03-09 00:00:00
2 name:/var/lib/ecss-mysql/pgbackups/2ecss_storekeeper_db.sql size:131 Mb inserted_at: 2026-03-10 14:24:17 updated_at: 2026-03-10 00:00:00
Please
    select
         id
           of file?
2
working with file /var/lib/ecss-mysql/pgbackups/2ecss_storekeeper_db.sql
Now you can run sudo /etc/ecss/ecss_ssw_restore_postgres.sh

complete

Цель скрипта - убрать из файла данных, таблицы относящихся к репликации bdr. Результатом выполнения данного скрипта будет файл без данных репликации, который на следующем шаге будет использован для выполнения RESTORE процедуры. Он будет иметь имя  без цифры дня недели и меньше размер.
В результате, получим готовый к восстановлению дамп с именем ecss_storekeeper_db.sql расположенный в директории /var/lib/ecss-mysql/pgbackups.

результат
/var/lib/ecss-mysql/pgbackups$ ll
total 395M
drwxrwxr-x 2 ssw  ssw  4,0K мар 10 14:24 ./
drwxr-xr-x 3 root root 4,0K мар 10 13:19 ../
-rw-r--r-- 1 root root 132M мар  9 00:00 1ecss_storekeeper_db.sql
-rw-r--r-- 1 root root 132M мар 10 00:00 2ecss_storekeeper_db.sql
-rw-r--r-- 1 root root 132M мар 10 14:24 ecss_storekeeper_db.sql

2. Для запуска процедуры восстановления, необходимо:
Перезапустить DS командой:

sudo systemctl restart ecss-ds

Запустить следующий скрипт (из любой точки):

sudo ecss_ssw_restore_postgres.sh
Пример
sudo ecss_ssw_restore_postgres.sh
[sudo] password for abf: 
NOTICE:  truncate cascades to table "audit_users_settings2"
NOTICE:  truncate cascades to table "audit_groups_users"
TRUNCATE TABLE
NOTICE:  truncate cascades to table "audit_role_group"
NOTICE:  truncate cascades to table "audit_groups_users"
TRUNCATE TABLE
NOTICE:  truncate cascades to table "audit_role_group"
NOTICE:  truncate cascades to table "audit_roles_settings"
TRUNCATE TABLE
SET
SET
SET
SET
SET
SET
SET
COPY 0
COPY 0
COPY 8
COPY 5
COPY 14
COPY 0
COPY 3
COPY 1
COPY 9
COPY 11
COPY 0
COPY 0
COPY 0
COPY 0
COPY 0

Run ecss_cluster_resolver5439.sh

3. После выполнения скрипта требуется запустить команду ecss_cluster_resolver5439.sh:

sudo ecss_cluster_resolver5439.sh
Пример
sudo ecss_cluster_resolver5439.sh
 pg_toast
 pg_temp_1
 pg_toast_temp_1
 pg_catalog
 information_schema
 bdr
 public
 postgres_exporter
 pg_toast
 pg_temp_1
 pg_toast_temp_1
 pg_catalog
 information_schema
 bdr
 public
 postgres_exporter
pg_toast pg_temp_1 pg_toast_temp_1 pg_catalog information_schema bdr public postgres_exporter
my_array
pg_catalog
pg_toast
pg_toast
my_array end
filtered_list
public
postgres_exporter


public postgres_exporter
tag_of_service bw_list numbers_plan system_numbers marshrut_cadc marshrutisation_a marshrutisation_b address_book_contact address_book_source address_book_email address_book_external address_book_label calls_cdr calls_tolltickets calls_ss calls_counters calls_inodes calls_tree calls_data calls_variables audit_users_settings2 audit_restrictions audit_users audit_groups audit_groups_users audit_sessions audit_role_group audit_roles audit_roles_settings audit_commands statistics_realtime_statistics statistics_realtime_statistics_0 statistics_realtime_statistics_1 statistics_realtime_statistics_2 statistics_realtime_statistics_3 statistics_realtime_statistics_4 statistics_realtime_statistics_5 statistics_realtime_statistics_6 statistics_realtime_statistics_7 statistics_realtime_statistics_8 statistics_realtime_statistics_9 statistics_realtime_statistics_10 statistics_realtime_statistics_11 statistics_realtime_statistics_template statistics_historical_hour_statistics statistics_historical_intrahour_statistics statistics_historical_daily_statistics statistics_historical_weekly_statistics statistics_historical_monthly_statistics system_versions address_book_changes address_book_phone statistics_five_votes statistics_hour_votes statistics_day_votes statistics_week_votes statistics_month_votes meeting_expiration_period meeting_event_history history_meetings meeting_history dialer_campaign_calls dialer_campaigns history_members subscribers_users subscribers_sessions key_value sip_state trunk_manager_state call_state megaco_ports calls_super_tree


. . .


public.call_state
$max_id3


public.megaco_ports
$max_id3


public.calls_super_tree
$max_id3
7623

После успешного восстановления удалить временный файл ecss_storekeeper_db.sql командой:

sudo rm /var/lib/ecss-mysql/pgbackups/ecss_storekeeper_db.sql 

Проверить результат восстановления БД.


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

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

С подробным описанием можно ознакомиться по ссылке: https://pro-ldap.ru/books/openldap-ubuntu-in-practice/backup.html

Скрипт для создания 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 systemctl stop slapd
  2. Удалить базу (убедиться, что вы находитесь в правильном каталоге для удаления командой rm):

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

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

    ~$ sudo systemctl start slapd

Полный 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 — диск, на который будет производиться клонирование.

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

Сохранение и восстановление настроек отдельного домена (виртуальной АТС)

В системе ECSS-10 также имеется инструмент сохранения и восстановления конфигурации отдельного домена. Это производится с помощью команд CLI по пути /domain/<DOMAIN>/backup/.

Ниже приведено описание и примеры команд.

В текущем разделе описываются команды для сохранения и возврата к предыдущей версии конфигурации виртуальной АТС.

<DOMAIN> - имя виртуальной АТС.

Для администратора виртуальной АТС команды выполняются на уровне виртуальной АТС в разделе /domain/<DOMAIN>/backup/ и применяются только для определенной виртуальной АТС.

delete

Данной командой выполняется удаление архивного файла конфигурации домена.

Путь команды:

/domain/<DOMAIN>/backup/store

Синтаксис:

delete <NODE> --backup <FILENAME>

Параметры:

  • <NODE> - имя ноды;
  • <FILENAME> - имя файла сохраненной ранее конфигурации. Файл ищется в каталоге /var/lib/ecss/backups/<DOMAIN>.

Пример:

admin@ds1@ecss1:/$ domain/biysk.local/backup/delete ds1@ecss1 --backup bsk_2021_020_09/v_14_7_0_72490_2021_02_09_15_40_52.bterm
Domain's backup successfully deleted.

[exec at: 09.02.2021 22:52:40, exec time: 108ms, nodes: ds1@ecss1 v.3.14.7.562]

store

Данной командой выполняется сохранение конфигурации системы ECSS-10.

Путь команды:

/domain/<DOMAIN>/backup/store

Синтаксис:

store <NODE> [<FLAGS>]

Параметры:

  • <NODE> - имя ноды;
  • <FLAGS> - дополнительные действия, задаются опционально:
    • --prefix <PREFIX> - задается префикс имени файла для сохранения конфигурации;
    • --backup-dir <DIR> - задается путь относительно директории по умолчанию (/var/lib/ecss/backups/<DOMAIN>) для сохранения конфигурации.

Примеры:

admin@mycelium1@ecss1:/$ domain/biysk.local/backup/store ds1@ecss1 --prefix bsk             
Domain configuration are successfully stored to: /var/lib/ecss/backups/biysk.local/bsk_v_14_7_0_72494_2021_02_12_03_34_29.bterm

[exec at: 12.02.2021 10:34:29, exec time: 186ms, nodes: ds1@ecss1 v.3.14.7.566]

restore

Данной командой выполняется восстановление конфигурации - откат на ранее сохраненную конфигурацию системы.

Путь команды:

/domain/<DOMAIN>/backup/restore

Синтаксис:

restore <NODE> --backup <FILENAME>

Параметры:

  • <NODE> - имя ноды;
  • <FILENAME> - имя файла сохраненной ранее конфигурации. Файл ищется в каталоге /var/lib/ecss/backups/<DOMAIN>.

Пример:

admin@mycelium1@ecss1:/$ domain/biysk.local/backup/restore ds1@ecss1 --backup bsk_v_14_7_0_72494_2021_02_12_03_34_29.bterm
Start read backup...
Notify domain services before restore backup data...
Restore data from the backup...
Domain configuration successfully restored.

[exec at: 12.02.2021 10:35:27, exec time: 6s 196ms, nodes: ds1@ecss1 v.3.14.7.566]


  • Нет меток