VK Private Cloud logo
Помощь
Обновлена 21 августа 2026 г. в 08:12

Восстановление

MySQL/Galera

Управляющие узлы

  1. Остановите сервис базы данных на всех управляющих узлах:

    $ sudo systemctl stop mariadb-octavia
  2. Удалите все предыдущие данные на всех управляющих узлах:

    $ sudo rm -rf /srv/mysql/octavia/data/*
  3. Зайдите по SSH на первый управляющий узел и распакуйте архив с резервной копией:

    $ cd /srv/backup/galera/backup_octavia$ tar xzvf xtrabackup_OCTAVIA_db_bcp_<ДАТА>_<ВРЕМЯ>.tgz

    Здесь:

    • <ДАТА> — дата создания резервной копии.
    • <ВРЕМЯ> — время создания резервной копии.
  4. Выведите содержимое файла xtrabackup_galera_info:

    $ cat /srv/backup/galera/backup_octavia/srv/backup/galera/backup_octavia/temp_xtrabackup_octavia/xtrabackup_galera_info
  5. В выводе получите строку вида <UUID>:<SEQNO> с двумя значениями, разделенными двоеточием.

    Пример команды и ожидаемого результата
    # cat /srv/backup/galera/backup_octavia/srv/backup/galera/backup_octavia/temp_xtrabackup_octavia/xtrabackup_galera_info14d8e79f-5d88-11f0-a533-ee5d5d20110a:28344
  6. Создайте файл /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).
  7. Восстановите данные из резервной копии:

    $ sudo mariabackup --defaults-file=/etc/octavia.cnf --copy-back \  --target-dir=/srv/backup/galera/backup_octavia/srv/backup/galera/backup_octavia/temp_xtrabackup_octavia/
  8. Установите владельца директории:

    $ sudo chown -R mysql:root /srv/mysql/octavia/data
  9. Отредактируйте файл /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://"...
  10. На первом управляющем узле запустите сервис БД и проверьте, что он успешно запустился:

    $ sudo systemctl start mariadb-octavia$ sudo systemctl status mariadb-octavia
  11. Запустите сервис на остальных управляющих узлах и проверьте, что он успешно запустился:

    $ sudo systemctl start mariadb-octavia$ sudo systemctl status mariadb-octavia
  12. На первом управляющем узле отредактируйте файл /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"...
  13. На первом управляющем узле перезапустите сервис БД:

    $ sudo systemctl restart mariadb-octavia

Мониторинг

Восстановление БД mariadb-zabbix на сервере мониторинга проведите аналогично процедуре на управляющих узлах, приведенной в разделе Управляющие узлы.

Postgres

  1. Распакуйте архив резервной копии.

    Пример команды
    $ cd /srv/backup/postgrestar xzvf sync_service_pg_20250714_1316.tgz
  2. Посмотрите содержимое файла /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
  3. Запомните порт 5439. Подставьте значение ${DB_NAME} из этого файла в строку standby.postgresql-${DB_NAME}.service.compute, а также замените подстроку standby на master. Если в названии БД есть символы нижнего подчеркивания (_), замените их на дефисы (-).

  4. Получите пароль для 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'
  5. Войдите в консоль управления БД, подставив адрес и порт:

    $ 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=# \dt                    List of relations Schema |          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)
  6. Если в БД есть таблицы, удалите их:

    $ 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'
  7. Восстановите данные из резервной копии:

    $ psql -h master.postgresql-sync-service.service.compute \ -U postgres -p 5439 \ -d sync_service < sync_service_pg_20250714_1316.sql

Проверьте, что сервис, использующий БД, запущен и работает без ошибок.

Tarantool

  1. Проверьте, что на управляющем узле есть резервные копии:

    $ sudo ls -lah /srv/backup/tarantool/breeze_01/
  2. Убедитесь, что первый управляющий узел является мастером:

    $ 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
  3. Поочередно подключитесь по 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.
  4. При наличии файлов существующей БД скопируйте их:

    $ 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.
  5. На первом управляющем узле восстановите данные из резервной копии:

    $ 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

    Здесь:

    • <ДАТА> — дата создания резервной копии.
    • <ВРЕМЯ> — время создания резервной копии.
  6. На остальных управляющих узлах создайте пустые директории для сервисов:

    $ 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.
  7. Запустите сервисы на всех управляющих узлах, начиная с первого:

    $ 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.
  8. Проверьте корректность восстановления: авторизуйтесь в Портале самообслуживания. Если авторизация прошла успешно, БД восстановлены корректно.

OpenSearch

  1. Распакуйте резервную копию:

    $ sudo tar -xzvf /srv/backup/opensearch/opensearch-<ДАТА>-<ВРЕМЯ>.tar.gz -C /

    Здесь:

    • <ДАТА> — дата создания резервной копии.
    • <ВРЕМЯ> — время создания резервной копии.
  2. Остановите 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

IAM

  1. Остановите etcd:

    $ sudo systemctl stop etcd-iam-node<НОМЕР>

    Здесь <НОМЕР> — номер управляющего узла, например 1.

  2. При наличии файлов существующей БД скопируйте их:

    $ sudo mv /srv/etcd/etcd-iam-node<НОМЕР> /srv/etcd/etcd-iam-node<НОМЕР>-old

    Здесь <НОМЕР> — номер управляющего узла, например 1.

  3. Восстановите данные из резервной копии на всех управляющих узлах:

    $ sudo etcdctl --endpoints=127.0.0.1:22379 snapshot restore --data-dir /srv/etcd/etcd-iam-node<НОМЕР>/default.etcd/ iam.db

    Здесь <НОМЕР> — номер управляющего узла, например 1.

  4. Установите права на восстановленную БД:

    $ chown -R etcd:etcd /srv/etcd/etcd-iam-node<НОМЕР>/

    Здесь <НОМЕР> — номер управляющего узла, например 1.

  5. Запустите etcd:

    $ sudo systemctl start etcd-iam-node<НОМЕР>

    Здесь <НОМЕР> — номер управляющего узла, например 1.

Magnum

  1. Остановите etcd:

    $ sudo systemctl stop etcd-magnum-node<НОМЕР>

    Здесь <НОМЕР> — номер управляющего узла, например 1.

  2. При наличии файлов существующей БД скопируйте их:

    $ sudo mv /srv/etcd/etcd-magnum-node<НОМЕР> /srv/etcd/etcd-magnum-node<НОМЕР>-old

    Здесь <НОМЕР> — номер управляющего узла, например 1.

  3. Восстановите данные из резервной копии на всех управляющих узлах:

    $ sudo etcdctl --endpoints=127.0.0.1:23379 snapshot restore --data-dir /srv/etcd/etcd-magnum-node<НОМЕР>/default.etcd/ magnum.db

    Здесь <НОМЕР> — номер управляющего узла, например 1.

  4. Установите права на восстановленную БД:

    $ chown -R etcd:etcd /srv/etcd/etcd-magnum-node<НОМЕР>/

    Здесь <НОМЕР> — номер управляющего узла, например 1.

  5. Запустите etcd:

    $ sudo systemctl start etcd-magnum-node<НОМЕР>

    Здесь <НОМЕР> — номер управляющего узла, например 1.

Scrooge

  1. Остановите etcd:

    $ sudo systemctl stop etcd-scrooge-node<НОМЕР>

    Здесь <НОМЕР> — номер управляющего узла, например 1.

  2. При наличии файлов существующей БД скопируйте их:

    $ sudo mv /srv/etcd/etcd-scrooge-node<НОМЕР> /srv/etcd/etcd-scrooge-node<НОМЕР>-old

    Здесь <НОМЕР> — номер управляющего узла, например 1.

  3. Восстановите данные из резервной копии на всех управляющих узлах:

    $ sudo etcdctl --endpoints=127.0.0.1:24379 snapshot restore --data-dir /srv/etcd/etcd-scrooge-node<НОМЕР>/default.etcd/ scrooge.db

    Здесь <НОМЕР> — номер управляющего узла, например 1.

  4. Установите права на восстановленную БД:

    $ chown -R etcd:etcd /srv/etcd/etcd-scrooge-node<НОМЕР>/

    Здесь <НОМЕР> — номер управляющего узла, например 1.

  5. Запустите etcd:

    $ sudo systemctl start etcd-scrooge-node<НОМЕР>

    Здесь <НОМЕР> — номер управляющего узла, например 1.

Apache Zookeeper

  1. При наличии файлов существующей БД скопируйте их:

    $ sudo mv /var/lib/zookeeper /var/lib/zookeeper-old
  2. Распакуйте архив резервной копии:

    $ sudo tar -xvf /srv/backup/zookeeper-<ДАТА>_<ВРЕМЯ>.tar.gz -C /

    Здесь:

    • <ДАТА> — дата создания резервной копии.
    • <ВРЕМЯ> — время создания резервной копии.
  3. Перезапустите службу Apache Zookeeper:

    $ sudo systemctl restart zookeeper
  4. Проверьте состояние кластера:

    $ echo ruok | nc localhost 2181$ echo stat | nc localhost 2181
Была ли статья полезна?