Восстановление
-
Остановите сервис базы данных на всех управляющих узлах:
$ sudo systemctl stop mariadb-octavia -
Удалите все предыдущие данные на всех управляющих узлах:
$ sudo rm -rf /srv/mysql/octavia/data/* -
Зайдите по SSH на первый управляющий узел и распакуйте архив с резервной копией:
$ cd /srv/backup/galera/backup_octavia$ tar xzvf xtrabackup_OCTAVIA_db_bcp_<ДАТА>_<ВРЕМЯ>.tgzЗдесь:
<ДАТА>— дата создания резервной копии.<ВРЕМЯ>— время создания резервной копии.
-
Выведите содержимое файла
xtrabackup_galera_info:$ cat /srv/backup/galera/backup_octavia/srv/backup/galera/backup_octavia/temp_xtrabackup_octavia/xtrabackup_galera_info -
В выводе получите строку вида
<UUID>:<SEQNO>с двумя значениями, разделенными двоеточием.Пример команды и ожидаемого результата# cat /srv/backup/galera/backup_octavia/srv/backup/galera/backup_octavia/temp_xtrabackup_octavia/xtrabackup_galera_info14d8e79f-5d88-11f0-a533-ee5d5d20110a:28344 -
Создайте файл
/srv/backup/galera/backup_octavia/temp_xtrabackup_octavia/grastate.datследующего содержания:version: 2.1uuid: <UUID>seqno: <SEQNO>safe_to_bootstrap: 1Здесь:
<UUID>— первое значение из файлаxtrabackup_galera_info(в примере выше —14d8e79f-5d88-11f0-a533-ee5d5d20110a).<SEQNO>— второе значение из файлаxtrabackup_galera_info(в примере выше —28344).
-
Восстановите данные из резервной копии:
$ sudo mariabackup --defaults-file=/etc/octavia.cnf --copy-back \--target-dir=/srv/backup/galera/backup_octavia/srv/backup/galera/backup_octavia/temp_xtrabackup_octavia/ -
Установите владельца директории:
$ sudo chown -R mysql:root /srv/mysql/octavia/data -
Отредактируйте файл
/etc/octavia.cnf:-
Закомментируйте строку
wsrep_cluster_addressс адресами. -
Добавьте строку
wsrep_cluster_address="gcomm://".Пример...# wsrep_cluster_address="gcomm://10.33.3.11:13003,10.33.3.12:13003,10.33.3.13:13003"wsrep_cluster_address="gcomm://"...
-
-
На первом управляющем узле запустите сервис БД и проверьте, что он успешно запустился:
$ sudo systemctl start mariadb-octavia$ sudo systemctl status mariadb-octavia -
Запустите сервис на остальных управляющих узлах и проверьте, что он успешно запустился:
$ sudo systemctl start mariadb-octavia$ sudo systemctl status mariadb-octavia -
На первом управляющем узле отредактируйте файл
/etc/octavia.cnf:-
Удалите строку
wsrep_cluster_address="gcomm://", добавленную ранее. -
Раскомментируйте строку
wsrep_cluster_addressс адресами, закомментированную ранее.Пример...wsrep_cluster_address="gcomm://10.33.3.11:13003,10.33.3.12:13003,10.33.3.13:13003"...
-
-
На первом управляющем узле перезапустите сервис БД:
$ sudo systemctl restart mariadb-octavia
Восстановление БД mariadb-zabbix на сервере мониторинга проведите аналогично процедуре на управляющих узлах, приведенной в разделе Управляющие узлы.
-
Распакуйте архив резервной копии.
Пример команды$ cd /srv/backup/postgrestar xzvf sync_service_pg_20250714_1316.tgz -
Посмотрите содержимое файла
/srv/backup/postgres/backup_pg_sync_service.sh:$ cat /srv/backup/backup_pg_sync_service.shПример содержимого файлаcd /srv/backupDATE=`date "+%Y%m%d_%H%M"`export DB_NAME=sync_serviceexport PGPASSWORD="9h3n8R23HL0z283xBZ1j"pg_dump -h standby.postgresql-${DB_NAME}.service.compute \-U postgres -p 5439 -d ${DB_NAME} > ${DB_NAME}_pg_${DATE}.sqltar cvzf ${DB_NAME}_pg_${DATE}.tgz ${DB_NAME}_pg_${DATE}.sqlrm -f ${DB_NAME}_pg_${DATE}.sql -
Запомните порт
5439. Подставьте значение${DB_NAME}из этого файла в строкуstandby.postgresql-${DB_NAME}.service.compute, а также замените подстрокуstandbyнаmaster. Если в названии БД есть символы нижнего подчеркивания (_), замените их на дефисы (-). -
Получите пароль для Postgres из vault-файла:
$ cd inventory/vkcloud/$ ansible -m debug -i vkcloud.yml -a "msg=\"\n\n{{ vault_postgresql_login_password }}\n\n\"" all[0] | sed 's/\\n/\n/g' -
Войдите в консоль управления БД, подставив адрес и порт:
$ psql -h master.postgresql-sync-service.service.compute \-U postgres -p 5439 -d sync_service -c '\dt'Здесь:
master.postgresql-sync-service.service.compute— значение адреса.5439— значение порта, полученное на шаге 2.
Пример ожидаемого результатаPassword for user postgres:psql (12.12)Type "help" for help.sync_service=# \dtList of relationsSchema | Name | Type | Owner--------+------------------------+-------+---------------public | _migrations | table | sync_servicepublic | sync_group_users | table | sync_servicepublic | sync_groups | table | sync_servicepublic | sync_users | table | sync_service(4 rows) -
Если в БД есть таблицы, удалите их:
$ psql -h master.postgresql-sync-service.service.compute \-U postgres -p 5439 -d sync_service \-c 'drop table addon,cluster_addon,cluster_template_addon,schema_migrations,transition_log' -
Восстановите данные из резервной копии:
$ psql -h master.postgresql-sync-service.service.compute \-U postgres -p 5439 \-d sync_service < sync_service_pg_20250714_1316.sql
Проверьте, что сервис, использующий БД, запущен и работает без ошибок.
-
Проверьте, что на управляющем узле есть резервные копии:
$ sudo ls -lah /srv/backup/tarantool/breeze_01/ -
Убедитесь, что первый управляющий узел является мастером:
$ export ETCDCTL_API=2$ etcdctl -u root:{{ vault_etcd_bootstrap_password }}" --endpoints=http://127.0.0.1:22379 get /mcs/tarantool/breeze/clusters/breeze/master$ etcdctl -u root:{{ vault_etcd_bootstrap_password }}" --endpoints=http://127.0.0.1:22379 get /mcs/tarantool/breeze/clusters/dusk/master -
Поочередно подключитесь по SSH к каждому управляющему узлу, остановите сервисы БД и Overlord для сервисов:
$ ssh <УЗЕЛ>$ sudo systemctl stop tarantool@<УЗЕЛ_BREEZE>.service tarantool@<УЗЕЛ_DUSK>.service overlord@<УЗЕЛ_BREEZE>.service overlord@<УЗЕЛ_DUSK>.service$ exitЗдесь:
<УЗЕЛ>— имя управляющего узла, напримерcpn001.<УЗЕЛ_BREEZE>— имя узла Breeze, напримерbreeze_01.<УЗЕЛ_DUSK>— имя узла Dusk, напримерdusk_01.
-
При наличии файлов существующей БД скопируйте их:
$ sudo mv /var/lib/tarantool/xlogs/<УЗЕЛ_BREEZE> /var/lib/tarantool/xlogs/<УЗЕЛ_BREEZE>_old$ sudo mv /var/lib/tarantool/snaps/<УЗЕЛ_BREEZE> /var/lib/tarantool/snaps/<УЗЕЛ_BREEZE>_old$ sudo mv /var/lib/tarantool/xlogs/<УЗЕЛ_DUSK> /var/lib/tarantool/xlogs/<УЗЕЛ_DUSK>_old$ sudo mv /var/lib/tarantool/snaps/<УЗЕЛ_DUSK> /var/lib/tarantool/snaps/<УЗЕЛ_DUSK>_oldЗдесь:
<УЗЕЛ_BREEZE>— имя узла Breeze, напримерbreeze_01.<УЗЕЛ_DUSK>— имя узла Dusk, напримерdusk_01.
-
На первом управляющем узле восстановите данные из резервной копии:
$ ssh cpn001$ sudo cp -r /srv/backup/tarantool/breeze_01/<ДАТА>_<ВРЕМЯ>/* /var/lib/tarantool/snaps/breeze_01/$ sudo cp -r /srv/backup/tarantool/dusk_01/<ДАТА>_<ВРЕМЯ>/* /var/lib/tarantool/snaps/dusk_01/$ sudo chown -R tarantool:tarantool /var/lib/tarantool$ exitЗдесь:
<ДАТА>— дата создания резервной копии.<ВРЕМЯ>— время создания резервной копии.
-
На остальных управляющих узлах создайте пустые директории для сервисов:
$ sudo mkdir /var/lib/tarantool/snaps/<УЗЕЛ_BREEZE> /var/lib/tarantool/xlogs/<УЗЕЛ_BREEZE>$ sudo chown tarantool:tarantool /var/lib/tarantool/snaps/<УЗЕЛ_BREEZE>$ sudo chown tarantool:tarantool /var/lib/tarantool/xlogs/<УЗЕЛ_BREEZE>$ sudo mkdir /var/lib/tarantool/snaps/<УЗЕЛ_DUSK> /var/lib/tarantool/xlogs/<УЗЕЛ_DUSK>$ sudo chown tarantool:tarantool /var/lib/tarantool/snaps/<УЗЕЛ_DUSK>$ sudo chown tarantool:tarantool /var/lib/tarantool/xlogs/<УЗЕЛ_DUSK>Здесь:
<УЗЕЛ_BREEZE>— имя узла Breeze, напримерbreeze_02.<УЗЕЛ_DUSK>— имя узла Dusk, напримерdusk_02.
-
Запустите сервисы на всех управляющих узлах, начиная с первого:
$ sudo systemctl start tarantool@<УЗЕЛ_BREEZE>.service$ sudo systemctl status tarantool@<УЗЕЛ_BREEZE>.service$ sudo systemctl start overlord@<УЗЕЛ_BREEZE>.service$ sudo systemctl status overlord@<УЗЕЛ_BREEZE>.service$ sudo systemctl start tarantool@<УЗЕЛ_DUSK>.service$ sudo systemctl status tarantool@<УЗЕЛ_DUSK>.service$ sudo systemctl start overlord@<УЗЕЛ_DUSK>.service$ sudo systemctl status overlord@<УЗЕЛ_DUSK>.serviceЗдесь:
<УЗЕЛ_BREEZE>— имя узла Breeze, напримерbreeze_01.<УЗЕЛ_DUSK>— имя узла Dusk, напримерdusk_01.
-
Проверьте корректность восстановления: авторизуйтесь в Портале самообслуживания. Если авторизация прошла успешно, БД восстановлены корректно.
-
Распакуйте резервную копию:
$ sudo tar -xzvf /srv/backup/opensearch/opensearch-<ДАТА>-<ВРЕМЯ>.tar.gz -C /Здесь:
<ДАТА>— дата создания резервной копии.<ВРЕМЯ>— время создания резервной копии.
-
Остановите OpenSearch, восстановите данные из резервной копии и запустите OpenSearch:
$ sudo docker stop opensearch opensearch_dashboards \&& sudo mv /srv/backup/opensearch/<ДАТА>/opensearch-data1 /var/lib/docker/volumes/ \&& sudo cp /srv/backup/opensearch/<ДАТА>/opensearch-dashboards.yml /etc/opensearch/opensearch-dashboards.yml \&& sudo chown -R centos:centos /var/lib/docker/volumes/opensearch-data1/_data \&& sudo chown opensearch:opensearch /etc/opensearch/opensearch-dashboards.yml \&& sudo docker start opensearch opensearch_dashboards
-
Остановите etcd:
$ sudo systemctl stop etcd-iam-node<НОМЕР>Здесь
<НОМЕР>— номер управляющего узла, например1. -
При наличии файлов существующей БД скопируйте их:
$ sudo mv /srv/etcd/etcd-iam-node<НОМЕР> /srv/etcd/etcd-iam-node<НОМЕР>-oldЗдесь
<НОМЕР>— номер управляющего узла, например1. -
Восстановите данные из резервной копии на всех управляющих узлах:
$ sudo etcdctl --endpoints=127.0.0.1:22379 snapshot restore --data-dir /srv/etcd/etcd-iam-node<НОМЕР>/default.etcd/ iam.dbЗдесь
<НОМЕР>— номер управляющего узла, например1. -
Установите права на восстановленную БД:
$ chown -R etcd:etcd /srv/etcd/etcd-iam-node<НОМЕР>/Здесь
<НОМЕР>— номер управляющего узла, например1. -
Запустите etcd:
$ sudo systemctl start etcd-iam-node<НОМЕР>Здесь
<НОМЕР>— номер управляющего узла, например1.
-
Остановите etcd:
$ sudo systemctl stop etcd-magnum-node<НОМЕР>Здесь
<НОМЕР>— номер управляющего узла, например1. -
При наличии файлов существующей БД скопируйте их:
$ sudo mv /srv/etcd/etcd-magnum-node<НОМЕР> /srv/etcd/etcd-magnum-node<НОМЕР>-oldЗдесь
<НОМЕР>— номер управляющего узла, например1. -
Восстановите данные из резервной копии на всех управляющих узлах:
$ sudo etcdctl --endpoints=127.0.0.1:23379 snapshot restore --data-dir /srv/etcd/etcd-magnum-node<НОМЕР>/default.etcd/ magnum.dbЗдесь
<НОМЕР>— номер управляющего узла, например1. -
Установите права на восстановленную БД:
$ chown -R etcd:etcd /srv/etcd/etcd-magnum-node<НОМЕР>/Здесь
<НОМЕР>— номер управляющего узла, например1. -
Запустите etcd:
$ sudo systemctl start etcd-magnum-node<НОМЕР>Здесь
<НОМЕР>— номер управляющего узла, например1.
-
Остановите etcd:
$ sudo systemctl stop etcd-scrooge-node<НОМЕР>Здесь
<НОМЕР>— номер управляющего узла, например1. -
При наличии файлов существующей БД скопируйте их:
$ sudo mv /srv/etcd/etcd-scrooge-node<НОМЕР> /srv/etcd/etcd-scrooge-node<НОМЕР>-oldЗдесь
<НОМЕР>— номер управляющего узла, например1. -
Восстановите данные из резервной копии на всех управляющих узлах:
$ sudo etcdctl --endpoints=127.0.0.1:24379 snapshot restore --data-dir /srv/etcd/etcd-scrooge-node<НОМЕР>/default.etcd/ scrooge.dbЗдесь
<НОМЕР>— номер управляющего узла, например1. -
Установите права на восстановленную БД:
$ chown -R etcd:etcd /srv/etcd/etcd-scrooge-node<НОМЕР>/Здесь
<НОМЕР>— номер управляющего узла, например1. -
Запустите etcd:
$ sudo systemctl start etcd-scrooge-node<НОМЕР>Здесь
<НОМЕР>— номер управляющего узла, например1.
-
При наличии файлов существующей БД скопируйте их:
$ sudo mv /var/lib/zookeeper /var/lib/zookeeper-old -
Распакуйте архив резервной копии:
$ sudo tar -xvf /srv/backup/zookeeper-<ДАТА>_<ВРЕМЯ>.tar.gz -C /Здесь:
<ДАТА>— дата создания резервной копии.<ВРЕМЯ>— время создания резервной копии.
-
Перезапустите службу Apache Zookeeper:
$ sudo systemctl restart zookeeper -
Проверьте состояние кластера:
$ echo ruok | nc localhost 2181$ echo stat | nc localhost 2181