В этом документе описаны развертывание, проверка, мониторинг, переключение и восстановление функции аварийного восстановления YMatrix 6.8.
Внимание!
Способ развертывания аварийного восстановления в YMatrix 6.8 изменился по сравнению с прежними версиями и не является обратно совместимым. При развертывании и эксплуатации используйте этот документ как основной источник. Не применяйте старую схему, в которой на стороне основного кластера развертывается только Subscriber, а на стороне резервного кластера только Publisher.
Аварийное восстановление (Disaster Recovery, DR) означает способность восстановить доступность и функции IT-инфраструктуры после аварийного события.
В YMatrix аварийное восстановление означает, что при аварии основного кластера YMatrix резервный кластер YMatrix принимает на себя обслуживание приложений, обеспечивая непрерывную доступность данных и сервиса базы данных.
YMatrix 6.8 DR является решением аварийного восстановления на уровне кластера базы данных и имеет следующие характеристики:
Кластер с полноценными функциями базы данных, включая компоненты высокой доступности и компоненты базы данных.
Кластер базы данных YMatrix, который хранит данные, защищаемые DR, и в нормальном режиме предоставляет сервисы базы данных.
Кластер базы данных YMatrix, который получает резервные данные из основного кластера и может восстановить и предоставить сервис базы данных после аварии.
Резервный кластер является полноценным кластером YMatrix. В резервной роли он копирует все данные из основного кластера и может выполнять некоторые операции только для чтения. После переключения DR резервный кластер становится обычным сервисным кластером YMatrix.
Внимание!
Согласованность данных резервного кластера действительна только в глобальных точках согласованности. Во время резервного копирования поддерживаются запросы только для чтения, но синхронизация воспроизведения WAL по шардам контролируется только в глобальных точках согласованности. Корректность результатов запросов в произвольный момент времени не гарантируется.
Компоненты, реализующие резервное копирование данных основного кластера и переключение сервиса при аварии. Основные компоненты: Subscriber и Publisher.
Компонент DR для подключения к основному кластеру. Он принимает запросы резервного копирования от Publisher на стороне резервного кластера и отправляет их в основной кластер. Он также получает резервные данные из основного кластера и отправляет их Publisher на стороне резервного кластера.
Компонент DR для подключения к резервному кластеру. Он принимает запросы резервного копирования на стороне резервного кластера и отправляет их Subscriber на стороне основного кластера. Он также получает резервные данные от Subscriber основного кластера и отправляет их в резервный кластер.
В YMatrix 6.8 для двусторонней передачи между основным и резервным кластерами Subscriber и Publisher должны быть развернуты на обеих сторонах. Subscriber и Publisher одной стороны могут находиться на одном pubsub-хосте. Обычно в один момент времени работает только один из двух компонентов на одной стороне кластера.
Перед развертыванием убедитесь, что выполнены требования:
Внимание!
Оценки памяти на один shard для Subscriber и Publisher основаны на тестировании релизной версии и могут измениться в будущих версиях. Резервируйте ресурсы с учетом фактического числа shard и бизнес-нагрузки.
При развертывании DR параметр GUC synchronous_commit основного кластера поддерживает только следующие значения:
offlocalremote_writeon, рекомендуетсяНе задавайте remote_apply.
На master основного кластера выполните от имени mxadmin:
gpconfig -c synchronous_commit -v <одно из допустимых значений>
Перезагрузите конфигурацию:
mxstop -u
matrixmgrПеред развертыванием на стороне основного кластера убедитесь, что база данных matrixmgr существует и расширение matrixmgr загружено.
Если в поставочной среде есть стандартный скрипт проверки matrixmgr или SQL, выполните проверку согласно локальному стандарту. До подтверждения состояния базы данных и расширения продолжать развертывание не следует.
Следующие инструкции в основном применимы, когда резервный кластер развертывается в другом дата-центре. В других сценариях настройте сеть по фактическому плану.
На стороне основного кластера:
На стороне резервного кластера:
Для связи между сторонами проверьте:
В командах этого документа <db_cluster_id>, <COUNT>, <shard_id> и {{...}} являются заполнителями. Замените их фактическими значениями кластера перед выполнением.
На pubsub-хосте стороны основного кластера установите ту же версию YMatrix, что и в основном кластере.
На всех узлах основного кластера от имени root настройте /etc/hosts, добавив имя pubsub-хоста с IP стороны основного кластера.
На master основного кластера от имени root создайте каталог конфигурации:
mkdir ~/pubsub
На master основного кластера от имени root выполните команды, чтобы добавить pubsub-хост в физический кластер:
# Инициализация expand
/opt/ymatrix/matrixdb6/bin/mxctl expand init > ~/pubsub/expand.init
# Добавление pubsub-хоста
cat ~/pubsub/expand.init | /opt/ymatrix/matrixdb6/bin/mxctl expand add --host {{имя pubsub-хоста или IP стороны основного кластера}} > ~/pubsub/expand.add
# Проверка сетевой связности
cat ~/pubsub/expand.add | /opt/ymatrix/matrixdb6/bin/mxctl expand netcheck > ~/pubsub/expand.nc
# Генерация plan
cat ~/pubsub/expand.nc | /opt/ymatrix/matrixdb6/bin/mxbox deployer expand --physical-cluster-only > ~/pubsub/expand.plan
# Выполнение plan
cat ~/pubsub/expand.plan | /opt/ymatrix/matrixdb6/bin/mxbox deployer exec
Отредактируйте pg_hba.conf на всех узлах базы данных основного кластера, включая master, standby, primary и mirror. Перед #user access rules, желательно перед первым правилом не trust, добавьте:
host all,replication mxadmin {{внутренний IP pubsub основного кластера}}/32 trust
На master основного кластера от имени mxadmin перезагрузите конфигурацию:
/opt/ymatrix/matrixdb6/bin/mxstop -u
На pubsub-хосте основного кластера от имени root создайте каталог конфигурации:
mkdir -p /etc/matrixdb6/pubsub
На pubsub-хосте основного кластера от имени root создайте /etc/matrixdb6/pubsub/subscriber.conf:
# /etc/matrixdb6/pubsub/subscriber.conf
module = 'subscriber'
perf_port = 5587 # HTTP-порт диагностики производительности; pprof по умолчанию выключен, см. раздел эксплуатации
verbose = true # Уровень логирования по необходимости
debug = false # Уровень логирования по необходимости
[[receiver]]
type = 'db'
cluster_id = '' # cluster_id основного кластера
host = '' # Имя хоста или IP master основного кластера
port = 4617 # Порт supervisor master основного кластера
# Необязательные параметры: если опущены, используются системные значения по умолчанию
# dbname = 'template1'
# username = 'mxadmin'
# restore_point_creation_interval = '60s' # Согласованность данных обеспечивается restore point. По умолчанию 60s.
[[sender]]
type = 'socket'
port = 9320 # Порт прослушивания Subscriber
На pubsub-хосте основного кластера от имени root создайте /etc/matrixdb6/service/subscriber_<db_cluster_id>.conf:
# /etc/matrixdb6/service/subscriber_<db_cluster_id>.conf
[program:subscriber_<db_cluster_id>]
process_name=subscriber_<db_cluster_id>
command=%(ENV_MXHOME)s/bin/mxdr -s <COUNT> -c /etc/matrixdb6/pubsub/subscriber.conf
directory=%(ENV_MXHOME)s/bin
autostart=true
autorestart=true
stopsignal=TERM
stdout_logfile=%(ENV_MXLOGDIR)s/subscriber_<db_cluster_id>.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
redirect_stderr=true
user=mxadmin
<COUNT> — число shard основного кластера. Получить его можно SQL-запросом на master основного кластера:
SELECT count(1) FROM gp_segment_configuration WHERE role='p';
На pubsub-хосте основного кластера от имени root выполните:
/opt/ymatrix/matrixdb6/bin/supervisorctl update
/opt/ymatrix/matrixdb6/bin/supervisorctl start subscriber_<db_cluster_id>
Проверьте состояние Subscriber:
/opt/ymatrix/matrixdb6/bin/supervisorctl status
Проверьте, что процесс subscriber_<db_cluster_id> существует, находится в состоянии Running, а журналы supervisor не содержат ошибок.
На pubsub-хосте основного кластера от имени root создайте /etc/matrixdb6/pubsub/publisher.conf:
# /etc/matrixdb6/pubsub/publisher.conf
module = 'publisher'
perf_port = 6698 # HTTP-порт диагностики производительности; pprof по умолчанию выключен, см. раздел эксплуатации
verbose = true # Уровень логирования по необходимости
debug = false # Уровень логирования по необходимости
[[receiver]]
type = 'socket'
host = '<нужно заполнить>' # IP соответствующего Subscriber, то есть внешний IP pubsub резервного кластера
port = 9320 # Порт прослушивания соответствующего Subscriber
[[sender]]
type = 'db'
host = '<нужно заполнить>' # Хост прослушивания Publisher, то есть внутренний IP pubsub основного кластера
listen = 6432 # Базовый порт Publisher, диапазон зависит от числа shard
# Необязательные параметры: если опущены, используются системные значения по умолчанию
# username = 'mxadmin'
# dbname = 'template1'
На pubsub-хосте основного кластера создайте /etc/matrixdb6/service/publisher_<db_cluster_id>.conf:
# /etc/matrixdb6/service/publisher_<db_cluster_id>.conf
[program:publisher_<db_cluster_id>]
process_name=publisher_<db_cluster_id>
command=%(ENV_MXHOME)s/bin/mxdr -s <COUNT> -c /etc/matrixdb6/pubsub/publisher.conf
directory=%(ENV_MXHOME)s/bin
autostart=true
autorestart=true
stopsignal=TERM
stdout_logfile=%(ENV_MXLOGDIR)s/publisher_<db_cluster_id>.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
redirect_stderr=true
user=mxadmin
Выполните:
/opt/ymatrix/matrixdb6/bin/supervisorctl update
/opt/ymatrix/matrixdb6/bin/supervisorctl start publisher_<db_cluster_id>
Проверьте состояние Publisher:
/opt/ymatrix/matrixdb6/bin/supervisorctl status
Убедитесь, что процесс publisher_<db_cluster_id> существует, находится в состоянии Running, а журналы не содержат ошибок.
На pubsub-хосте резервного кластера и машинах резервного кластера установите ту же версию YMatrix, что и на основном кластере, и установите зависимости. Подготовка аналогична развертыванию основного кластера.
На pubsub-хосте резервного кластера от имени root создайте каталог конфигурации:
mkdir -p /etc/matrixdb6/pubsub
Создайте рабочий каталог:
mkdir ~/pubsub
Mapping-конфигурация задает соответствие shard основного кластера primary-экземплярам резервного кластера.
На master основного кластера от имени mxadmin выполните SQL, чтобы создать шаблон /tmp/mapping.tmp:
COPY (
SELECT content, hostname, port, datadir
FROM gp_segment_configuration
WHERE role='p'
ORDER BY content
) TO '/tmp/mapping.tmp' DELIMITER '|';
Измените созданный файл:
Просмотреть описание конфигурации можно командой:
mxbox deployer dr pub config
После изменения перенесите файл в каталог ~/pubsub пользователя root на машине Publisher резервного кластера и используйте как mapping.conf.
На pubsub-хосте резервного кластера от имени root создайте /etc/matrixdb6/pubsub/publisher.conf:
# /etc/matrixdb6/pubsub/publisher.conf
module = 'publisher'
perf_port = 6698 # HTTP-порт диагностики производительности; pprof по умолчанию выключен, см. раздел эксплуатации
verbose = true # Уровень логирования по необходимости
debug = false # Уровень логирования по необходимости
[[receiver]]
type = 'socket'
host = '<нужно заполнить>' # IP соответствующего Subscriber, то есть внешний IP pubsub основного кластера
port = 9320 # Порт прослушивания соответствующего Subscriber
[[sender]]
type = 'db'
host = '<нужно заполнить>' # Хост прослушивания Publisher, то есть внутренний IP pubsub резервного кластера
listen = 6432 # Базовый порт Publisher, диапазон зависит от числа shard
# Необязательные параметры: если опущены, используются системные значения по умолчанию
# username = 'mxadmin'
# dbname = 'template1'
На pubsub-хосте резервного кластера от имени root создайте /etc/matrixdb6/pubsub/subscriber.conf:
# /etc/matrixdb6/pubsub/subscriber.conf
module = 'subscriber'
perf_port = 5587 # HTTP-порт диагностики производительности; pprof по умолчанию выключен, см. раздел эксплуатации
verbose = true # Уровень логирования по необходимости
debug = false # Уровень логирования по необходимости
[[receiver]]
type = 'db'
cluster_id = '' # cluster_id резервного кластера; здесь можно оставить пустым
host = '<нужно заполнить>' # Имя хоста или IP master резервного кластера
port = 4617 # Порт supervisor master резервного кластера
# Необязательные параметры: если опущены, используются системные значения по умолчанию
# dbname = 'template1'
# username = 'mxadmin'
# restore_point_creation_interval = '60s' # Согласованность данных обеспечивается restore point. По умолчанию 60s.
[[sender]]
type = 'socket'
port = 9320 # Порт прослушивания Subscriber
Следующие команды выполняются на pubsub-хосте резервного кластера от имени root.
Соберите информацию о машинах pubsub, master и segment:
# Сбор информации о pubsub-машине
/opt/ymatrix/matrixdb6/bin/mxctl setup collect --host localhost > ~/pubsub/collect.0
# Сбор информации о master
cat ~/pubsub/collect.0 | /opt/ymatrix/matrixdb6/bin/mxctl setup collect --host {{IP машины master резервного кластера}} > ~/pubsub/collect.1
# Сбор информации о других segment-машинах
cat ~/pubsub/collect.1 | /opt/ymatrix/matrixdb6/bin/mxctl setup collect --host {{IP другой машины резервного кластера}} > ~/pubsub/collect.2
...
# Сбор информации о других segment-машинах
cat ~/pubsub/collect.n-1 | /opt/ymatrix/matrixdb6/bin/mxctl setup collect --host {{IP другой машины резервного кластера}} > ~/pubsub/collect.n
Выполните проверку сетевой связности:
cat ~/pubsub/collect.n | /opt/ymatrix/matrixdb6/bin/mxctl setup netcheck > ~/pubsub/plan.nc
Сгенерируйте план развертывания:
/opt/ymatrix/matrixdb6/bin/mxbox deployer dr pub plan --wait --collect-file ~/pubsub/plan.nc --mapping-file ~/pubsub/mapping.conf --publisher-file /etc/matrixdb6/pubsub/publisher.conf --subscriber-file /etc/matrixdb6/pubsub/subscriber.conf > ~/pubsub/plan
Если на стороне резервного кластера нужно развернуть дополнительные mirror-копии, добавьте в команду plan параметр --with-mirror. При использовании этого параметра резервный кластер будет развернут со standby и mirror.
Выполните план развертывания:
/opt/ymatrix/matrixdb6/bin/mxbox deployer dr pub setup --plan-file ~/pubsub/plan
Этот шаг развертывает Subscriber, Publisher и резервный кластер, подключает Publisher и запускает резервное копирование.
На каждой машине primary основного кластера выполните от имени root:
ps aux | grep postgres | grep walsender
Должен существовать процесс, подключенный к Subscriber, в состоянии streaming.
На pubsub-хосте основного кластера выполните от имени mxadmin:
/opt/ymatrix/matrixdb6/bin/supervisorctl status
Должны существовать процессы subscriber_<db_cluster_id> и publisher_<db_cluster_id> в состоянии Running. Проверьте журналы на отсутствие ошибок.
На pubsub-хосте резервного кластера выполните от имени mxadmin:
/opt/ymatrix/matrixdb6/bin/supervisorctl status
Должны существовать процессы subscriber_<db_cluster_id> и publisher_<db_cluster_id> в состоянии Running. Проверьте журналы на отсутствие ошибок.
На каждой машине резервного кластера выполните от имени root:
ps aux | grep postgres | grep walreceiver
Должны существовать процессы, подключенные к Subscriber, в состоянии streaming. Общее число walreceiver-процессов, подключенных к Publisher в резервном кластере, должно совпадать с числом shard исходного кластера.
Если резервный кластер развернут со standby и mirror, репликация master-to-standby и primary-to-mirror внутри резервного кластера также использует walsender и walreceiver.
На каждой машине резервного кластера выполните от имени root:
ps aux | grep postgres | grep walsender
ps aux | grep postgres | grep walreceiver
Убедитесь, что соответствующие процессы walsender и walreceiver существуют, и проверьте связи репликации master-to-standby и primary-to-mirror согласно плану развертывания.
Подключитесь к master основного и резервного кластера и выполните от пользователя с правом запроса:
SELECT * FROM gp_segment_configuration ORDER BY content, dbid;
Сравните результаты.
Подключитесь к master основного кластера и создайте тестовую базу:
CREATE DATABASE test_dr;
Подключитесь к базе test_dr основного кластера и создайте таблицу:
CREATE TABLE test_1(c int) DISTRIBUTED BY (c);
Вставьте данные:
INSERT INTO test_1 SELECT * FROM generate_series(0,999);
Подключитесь к базе test_dr основного и резервного кластера и выполните:
SELECT gp_segment_id, count(1) FROM test_1 GROUP BY gp_segment_id;
Сравните результаты.
restore_point_creation_interval задает интервал создания restore point, по умолчанию 60s. При анализе журналов оценивайте интервал по явному значению или значению по умолчанию. Во время наблюдения можно продолжать вставлять данные в базу.
Путь к журналу соответствует stdout_logfile в /etc/matrixdb6/service/subscriber_<db_cluster_id>.conf. Выполните:
grep "Created global restore point" <subscriber_log_file>
Должен быть вывод, а интервал записей должен совпадать с настроенным интервалом restore point.
В каталоге log каждого primary основного кластера проверьте записи создания restore point:
grep "restore point" *.csv | grep "created at"
Должен быть вывод, показывающий, что основной кластер периодически создает restore point под управлением Subscriber.
В каталоге log master резервного кластера проверьте записи воспроизведения WAL до restore point:
grep "cluster wide WAL replayed to global restore point" *.csv
Должен быть вывод, показывающий, что резервный кластер воспроизвел WAL до restore point.
Проверьте прогресс воспроизведения WAL на резервном кластере. Подключитесь к master и каждому primary резервного кластера в utility mode с PGOPTIONS='-c gp_role=utility' и выполните на каждом экземпляре:
SHOW mx_redo_stop_pit;
SELECT pg_last_wal_receive_lsn(), pg_last_wal_replay_lsn();
Ожидаемые результаты:
pg_last_wal_replay_lsn всегда меньше или равен mx_redo_stop_pit.pg_last_wal_receive_lsn больше или равен mx_redo_stop_pit.Это означает, что резервный кластер через Subscriber и Publisher получил restore point, созданный основным кластером, и он вступил в силу.
System catalog основного кластера:
pg_catalog.gp_replication_slotspg_catalog.gp_stat_replicationИмя replication slot, используемого DR:
internal_disaster_recovery_rep_slot
На основном кластере выполните запрос replication slot от пользователя с нужными правами, например mxadmin:
SELECT *
FROM pg_catalog.gp_replication_slots
WHERE slot_name = 'internal_disaster_recovery_rep_slot'
ORDER BY gp_segment_id;
Запрос состояния replication:
SELECT *
FROM
pg_catalog.gp_replication_slots s
LEFT JOIN
pg_catalog.gp_stat_replication r
ON
s.gp_segment_id = r.gp_segment_id AND s.active_pid = r.pid
WHERE s.slot_name = 'internal_disaster_recovery_rep_slot'
ORDER BY s.gp_segment_id;
System catalog резервного кластера:
pg_catalog.gp_stat_wal_receiverНа резервном кластере выполните запрос состояния walreceiver от пользователя с нужными правами, например mxadmin:
SELECT *
FROM pg_catalog.gp_stat_wal_receiver
WHERE slot_name = 'internal_disaster_recovery_rep_slot'
ORDER BY gp_segment_id;
Диагностический интерфейс Subscriber и Publisher слушает порт perf_port, но путь pprof по умолчанию выключен.
На машине Subscriber или Publisher отправьте целевому процессу SIGUSR2, чтобы включить или выключить /debug/pprof:
kill -USR2 <pid>
Правила переключения:
SIGUSR2: включает /debug/pprof.SIGUSR2: выключает /debug/pprof.Примеры доступа:
http://<host>:5587/debug/pprof/http://<host>:6698/debug/pprof/Внимание!
Рекомендуется включать pprof только временно при диагностике. Не оставляйте диагностический интерфейс открытым постоянно.
В этом разделе описана обработка отказов внутренних копий резервного кластера, когда резервный кластер все еще работает как DR-кластер. Цель — сохранить способность непрерывно получать и воспроизводить WAL из основного кластера.
Примеры команд выполняются на master резервного кластера от имени mxadmin. Если локальный стандарт поставки требует иного порядка, следуйте ему.
| Команда | Назначение |
|---|---|
mxdr failover |
Если каталог данных текущего DR master или DR primary необратимо поврежден и не может продолжать резервное копирование, повышает standby или mirror того же shard до нового DR master или DR primary. |
mxdr rebuild |
Перестраивает standby или mirror из текущей здоровой копии, если каталог данных поврежден, либо после восстановления старого master или primary после failover. |
mxdr rebalance |
После failover и rebuild восстанавливает распределение ролей согласно плану, если текущие роли отличаются от preferred role и состояние кластера OK_UNBALANCED. |
Авария DR primary или DR master влияет на прием и воспроизведение WAL соответствующего shard и может вызвать накопление WAL на стороне основного кластера, поэтому ее нужно восстанавливать в первую очередь. Авария DR mirror или DR standby обычно не влияет на текущую синхронизацию, но снижает внутреннюю высокую доступность резервного кластера.
Если процесс DR primary, DR mirror, DR master или DR standby завершился аварийно, но каталог данных доступен, сначала перезапустите кластер через mxstop и mxstart:
# Остановить кластер
mxstop -a -f
# Запустить кластер
mxstart -a
Если файлы DR mirror или DR standby повреждены и не восстанавливаются перезапуском, но текущий DR primary или DR master исправен, выполните mxdr rebuild, чтобы перестроить копию из здорового primary или master:
# Выполнить mxdr rebuild для восстановления поврежденного mirror или standby
mxdr rebuild -s <shard_id>
Если каталог данных DR primary поврежден и больше не может принимать и воспроизводить WAL, сначала остановите резервный кластер, выполните mxdr failover, чтобы mirror того же shard временно принял синхронизацию, затем после восстановления primary выполните mxdr rebuild. Если кластер перейдет в OK_UNBALANCED, выполните mxdr rebalance. Этот порядок также применим, если невосстановим каталог данных DR master.
# Остановить кластер
mxstop -a
# Выполнить mxdr failover, чтобы резервная копия временно приняла роль
mxdr failover -s <shard_id>
# Запустить кластер
mxstart -a
# Выполнить mxdr rebuild для восстановления отказавшей копии
mxdr rebuild -s <shard_id>
# Выполнить mxdr rebalance для восстановления ролей
mxdr rebalance
Этот раздел применим, когда все машины стороны основного кластера физически недоступны. В этом случае операции выполняются только на стороне резервного кластера.
Переключение повышает резервный кластер до обычного сервисного кластера. Перед переключением убедитесь, что сервис базы данных действительно должен быть принят резервным кластером.
mxdr switchНа master резервного кластера выполните от имени mxadmin:
mxdr switch
Во время выполнения команда запросит подтверждение:
Continue promoting cluster for disaster recovery to normal cluster? Yy|Nn (default=N):
Можно добавить -a, чтобы пропустить подтверждение:
mxdr switch -a
После переключения на машине Publisher выполните от имени mxadmin:
/opt/ymatrix/matrixdb6/bin/supervisorctl status
Получите имя Publisher под управлением supervisor, например publisher_<db_cluster_id>.
Остановите Publisher:
/opt/ymatrix/matrixdb6/bin/supervisorctl stop publisher_<db_cluster_id>
Проверьте состояние снова:
/opt/ymatrix/matrixdb6/bin/supervisorctl status
Убедитесь, что Publisher перешел в состояние exited.
Subscriber можно также остановить тем же способом.
mxdr recoverПосле того как резервный кластер был повышен до обычного сервисного кластера через mxdr switch, если среда исходного основного кластера восстановлена и требуется снова включить его в DR-связь как кластер, синхронизируемый с новым основным кластером, используйте mxdr recover.
При использовании mxdr recover данные исходного основного кластера должны оставаться доступными, а состояние кластера должно быть восстанавливаемым до полностью нормального.
Когда исходный основной кластер понижается до кластера, синхронизируемого из другого кластера, правила pg_hba.conf на каждом узле базы данных сбрасываются к состоянию после инициализации кластера. Если пользователь вручную настраивал правила pg_hba.conf на master, после завершения понижения настройте их снова.
Формат команды:
mxdr recover [-a]
Параметр:
-a, --no-prompt: пропустить подтверждение. Если параметр не указан, команда спросит, преобразовать ли обычный кластер для синхронизации с его DR-кластером.Перед выполнением убедитесь, что:
mxstop -a -f.Шаги:
mxdr recover.mxdr recover на исходном основном кластере.Чтобы пропустить подтверждение:
mxdr recover -a
После переключения DR резервный кластер YMatrix переходит в обычную сервисную роль. Его использование не отличается от обычного кластера YMatrix. Приложения могут переключить подключения к этому кластеру и продолжить обслуживание.
mxdrmxdr используется для запуска Subscriber и Publisher, а также для управления переключением резервного кластера.
Tools for MatrixDB stream replication.
Usage:
mxdr [flags]
mxdr [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
failover Fail over within disaster recovery cluster
help Help about any command
rebalance Rebalance disaster recovery cluster
rebuild Rebuild old primary or master after disaster recovery failover
recover Convert a normal cluster to synchronize with its DR cluster
switch Promote disaster recovery cluster
Flags:
-c, --config-file string path of the configuration file to start up
-h, --help help for mxdr
-s, --shard-cnt int number of shards of the source database cluster
-v, --version version for mxdr
Use "mxdr [command] --help" for more information about a command.
Полные параметры подкоманды можно посмотреть так:
mxdr <command> --help
mxbox deployer drmxbox deployer dr используется для развертывания компонентов DR и резервного кластера.
Disaster recovery deployer
Usage:
mxbox deployer dr [command]
Available Commands:
pub Publisher deployer for dr
Flags:
-h, --help help for dr
Use "mxbox deployer dr [command] --help" for more information about a command.
mxbox deployer dr pub используется для развертывания Publisher, Subscriber и резервного кластера.
Publisher deployer for dr
Usage:
mxbox deployer dr pub [command]
Available Commands:
config Generate a config template file
plan Generate plan for migrating host.
setup Execute steps to deploy physical publisher.
Flags:
-h, --help help for pub
Use "mxbox deployer dr pub [command] --help" for more information about a command.
Полную справку можно посмотреть командами:
mxbox deployer dr --help
mxbox deployer dr pub --help
mxbox deployer dr pub <command> --help
В настоящее время DR не поддерживает изменение топологии кластера базы данных, поэтому расширение кластера с добавлением shard не поддерживается.
Не используйте tablespace в кластерах, где требуется включить DR.
Согласованность данных резервного кластера действительна только в глобальных точках согласованности.
Когда резервный кластер выполняет переключение после аварии, он переключается к глобальной точке согласованности, чтобы обеспечить итоговую согласованность резервных данных.
Во время резервного копирования резервный кластер поддерживает запросы только для чтения. Однако, поскольку синхронизация воспроизведения WAL по шардам контролируется только на уровне глобальных точек согласованности, корректность результатов запросов в произвольный момент времени не гарантируется.