В данном документе приводится описание различных действий, которые должны быть выполнены пользователем системы ECSS-10 для сохранения баз данных и конфигурации системы. Эти работы необходимы для выполнения восстановления данных в случае возникновения серьезной неисправности и обеспечения при этом максимально возможной надежности и минимального времени простоя системы.
Необходимо обратить особое внимание на то, чтобы избежать ошибок при выполнении последовательности сохранения и обеспечить соответствующую периодичность процедур сохранения.
В таблице приведен рекомендуемый перечень и периодичность работ по сохранению баз и конфигурации 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) | Копирование и архивирование | Замена директории из архива |
|
Для обеспечения надежности архивы рекомендуется скопировать на другой хост.
В зависимости от аварийной ситуации необходимо заменить текущий раздел на 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 с полномочиями root командой
sudo mc |




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

В пакет ecss-ds добавлена утилита ecss-control(идет в пакете ecss-node).
Доступны следующие команды:
Для выполнения backup требуется следующая команда:
sudo ecss-contol stash [<OPTIONS>] [<DESTINATION DIRECTORY>]
если <DESTINATION DIRECTORY> не указана, тогда сохранение будет выполнено в текущую директорию
Опции:
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, и не возможности использовать информацию с локального диска.
Сохранение выполнено.
В случае невозможности загрузки хоста с локальной БД или от партнера (проблема с файлами в директории /var/lib/ecss/oasys/). Выполнить восстановление следующей командой:
sudo ecss-contol rollback|rb [--no-clean] [--no-stash] <DESTINATION FILE>
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 |
В случае невозможности загрузки хоста с локальной БД или от партнера (проблема с файлами в директории /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 |
sudo systemctl stop ecss-mycelium.servicesudo systemctl stop ecss-ds.servicesudo systemctl stop ecss-core.servicesudo systemctl stop ecss-pa-sip.servicesudo systemctl stop ecss-mediator.servicesudo systemctl stop ecss-mycelium.servicesudo systemctl stop ecss-ds.servicesudo systemctl stop ecss-ds.servicesudo systemctl stop ecss-pa-sip.servicesudo systemctl stop ecss-mediator.servicesudo ecss-control rb ecss-backup-file.tar.gz, для примера:sudo ecss-control rb ecss-stash-no-log-20250724-130615.tar.gzsudo systemctl start ecss-mycelium.servicesudo systemctl start ecss-ds.servicesudo systemctl start ecss-core.servicesudo systemctl start ecss-pa-sip.servicesudo systemctl start ecss-mediator.servicesudo systemctl start ecss-mycelium.servicesudo systemctl start ecss-ds.servicesudo systemctl start ecss-core.servicesudo systemctl start ecss-pa-sip.servicesudo systemctl start ecss-mediator.serviceРезультат:
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 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 |
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 |
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-ов работает в автоматическом режиме, но при необходимости можно выполнить и ручное сохранение в любое удобное время. Останавливать эксплуатацию или нагрузку не нужно. Для включения автоматического создания 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 |
|
3. После выполнения скрипта требуется запустить команду ecss_cluster_resolver5439.sh:
sudo ecss_cluster_resolver5439.sh |
|
После успешного восстановления удалить временный файл ecss_storekeeper_db.sql командой:
sudo rm /var/lib/ecss-mysql/pgbackups/ecss_storekeeper_db.sql |
Проверить результат восстановления БД.
Если для авторизации абонентов используется LDAP, то также нужно выполнять периодическое резервное копирование. Не рекомендуется выполнять backup базы данных LDAP простым копированием по тем же причинам, что и MySQL.
С подробным описанием можно ознакомиться по ссылке: https://pro-ldap.ru/books/openldap-ubuntu-in-practice/backup.html
#!/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 |
|
Остановить slapd:
~$ sudo systemctl stop slapd |
Удалить базу (убедиться, что вы находитесь в правильном каталоге для удаления командой rm):
~$ sudo rm -rf /var/lib/ldap/* |
Восстановить базу из LDIF-файла:
~$ sudo -u openldap /usr/sbin/slapadd -l backup.ldif |
Запустить slapd:
~$ sudo systemctl start slapd |
Для полного backup используется копирование всего жесткого диска (dd). Необходимо сохранить все содержимое диска (таблица разделов, разделы, данные). Преимущество данного метода в том, что за один шаг сохраняются все установленные на жестком диске системы. При таком backup сохранятся все данные, относящиеся к загрузчику. Таким образом, после восстановления можно сразу же загрузиться с этого жесткого диска.
mount без параметров.Смонтировать backup-раздел
sudo mount /dev/sdXY /mnt |
Выполнить команду
sudo dd if=/dev/sdX bs=1M conv=noerror,sync | lzma -cv > /mnt/hdd.dd.lzma
где «sdX» — диск для копирования без сжатия, а не раздел.
В зависимости от размера жесткого диска и производительности компьютера процедура может занять продолжительное время (до нескольких часов).
По завершении п. 4 отмонтировать backup-раздел
sudo umount /mnt |
|
Смонтировать backup-раздел
sudo mount /dev/sdXY /mnt |
Выполнить команду
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 |
По завершении п.3 отмонтировать backup-раздел
sudo umount /mnt |
|
df -h или mount проверить, что ни один из разделов дисков (с которого будет делаться клон и на который будет делаться клон) не примонтирован. В случае если разделы примонтировались, то выполнить команду umount.В shell выполнить следующую команду:
sudo dd if=/dev/sdX of=/dev/sdY bs=4M
где sdX — диск, с которого будет производиться клонирование,
sdY — диск, на который будет производиться клонирование.
Ожидаем завершения выполнения команды. Операция может занять продолжительное время (до нескольких часов).
В системе ECSS-10 также имеется инструмент сохранения и восстановления конфигурации отдельного домена. Это производится с помощью команд CLI по пути /domain/<DOMAIN>/backup/.
Ниже приведено описание и примеры команд.