本文档介绍 YMatrix 6.8 灾难恢复功能的部署、检查、监控、切换和恢复方法。
注意!
YMatrix 6.8 灾难恢复部署方式与旧版本相比发生变化,且不向前兼容。部署和运维操作请以本文档为准,不要沿用旧版本中“主集群侧仅部署 Subscriber、备份集群侧仅部署 Publisher”的部署方式。
灾难恢复(Disaster Recovery,DR,又称灾备或容灾)指在灾难事件发生后恢复 IT 基础设施访问和功能的能力。
YMatrix 灾难恢复指 YMatrix 数据库集群(主集群)发生灾难时,由备份的 YMatrix 数据库集群承接主集群对应用的数据服务功能,保证数据库内数据和数据库服务持续可用。
YMatrix 6.8 灾难恢复是数据库集群级别的灾难恢复方案,具备以下特征:
具备完整数据库功能的集群,包括高可用组件、数据库组件等。
存储 DR 要保护的数据,并在正常情况下提供数据服务的 YMatrix 数据库集群。
从主集群备份数据,并在灾难发生时恢复并提供数据服务的 YMatrix 数据库集群。
备份集群是具备完整功能的 YMatrix 数据库集群。作为备份角色运行时,备份集群从主集群备份全部数据,并可以执行部分只读操作。发生灾难恢复切换后,备份集群会变为正常服务角色的 YMatrix 数据库集群。
注意!
备份集群的数据一致性只在全局一致性点处有效。备份过程中虽然支持只读查询,但各分片日志播放同步粒度只控制在全局一致性点,不保证任意时刻查询结果正确。
实现主集群数据备份和灾难恢复数据服务切换的组件,主要包括 Subscriber 和 Publisher。
用于连接主集群的灾难恢复功能组件。负责从备份集群侧的 Publisher 接收备份请求并发送到主集群,同时接收主集群的备份数据,并将数据从主集群侧发送到备份集群侧的 Publisher。
用于连接备份集群的灾难恢复功能组件。负责从备份集群侧接收备份请求并发送到主集群侧 Subscriber,同时接收主集群侧 Subscriber 发送的备份数据,并发送给备份集群。
YMatrix 6.8 中,为让主集群和备份集群能够双向传输,主集群侧和备份集群侧均需部署 Subscriber 和 Publisher。同一集群侧的 Subscriber 和 Publisher 可以部署在同一台 pubsub 主机上。一般情况下,同一时刻同一集群侧的 Subscriber 和 Publisher 只有一个在工作。
部署前,请确认满足以下要求:
注意!
Subscriber 和 Publisher 的单 shard 内存估算值来自发布版本测试,后续版本可能变化。请结合实际 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
编辑主集群所有数据库节点(master、standby、primary、mirror)的 pg_hba.conf,在 #user access rules 之前,建议在第一个非 trust 规则之前,新增以下规则:
host all,replication mxadmin {{pubsub 主集群侧 IP 地址}}/32 trust
在主集群 master 机器,以 mxadmin 用户身份重新加载配置:
/opt/ymatrix/matrixdb6/bin/mxstop -u
在主集群侧 pubsub 主机,以 root 用户身份创建配置目录:
mkdir -p /etc/matrixdb6/pubsub
在主集群侧 pubsub 主机,以 root 用户身份创建 Subscriber 配置文件 /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 = '' # 主集群 master 的主机名或 IP
port = 4617 # 主集群 master supervisor 监听端口号
# 可选参数:省略时使用系统默认值
# dbname = 'template1'
# username = 'mxadmin'
# restore_point_creation_interval = '60s' # 数据一致性通过 restore point 保障,该项控制创建 restore point 的时间间隔,默认 60s
[[sender]]
type = 'socket'
port = 9320 # Subscriber 的监听端口
在主集群侧 pubsub 主机,以 root 用户身份在 /etc/matrixdb6/service 下创建 supervisor 配置文件 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 数量。可在主集群 master 上执行以下 SQL 获取:
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> 的进程。在主集群侧 pubsub 主机,以 root 用户身份创建 Publisher 配置文件 /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 = '<需填入>' # 对应的 Subscriber IP 地址,即“备份集群 pubsub 对外 IP 地址”
port = 9320 # 对应的 Subscriber 的监听端口
[[sender]]
type = 'db'
host = '<需填入>' # Publisher 监听的主机,即“主集群 pubsub 对内 IP 地址”
listen = 6432 # Publisher 监听基础端口,范围随 shard 数量变化
# 可选参数:省略时使用系统默认值
# username = 'mxadmin'
# dbname = 'template1'
在主集群侧 pubsub 主机,以 root 用户身份在 /etc/matrixdb6/service 下创建 supervisor 配置文件 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
在主集群侧 pubsub 主机,以 root 用户身份执行:
/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> 的进程。在备份集群侧 pubsub 主机和备份集群机器上安装与主集群相同的 YMatrix 软件,并安装依赖。准备工作与部署主集群相同。
在备份集群侧 pubsub 主机,以 root 用户身份创建 pubsub 配置目录:
mkdir -p /etc/matrixdb6/pubsub
在备份集群侧 pubsub 主机,以 root 用户身份创建工作目录:
mkdir ~/pubsub
mapping 配置用于建立主集群 shard 到备份集群 primary 的映射关系。
在主集群 master 机器,以 mxadmin 用户身份执行 SQL,为备份集群 shard 映射配置文件生成模板 /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
修改完成后,将文件移动到备份集群侧 Publisher 机器 root 用户的 ~/pubsub 目录下,并作为 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 = '<需填入>' # 对应的 Subscriber IP 地址,即“主集群 pubsub 对外 IP 地址”
port = 9320 # 对应的 Subscriber 的监听端口
[[sender]]
type = 'db'
host = '<需填入>' # Publisher 监听的主机,即“备份集群 pubsub 对内 IP 地址”
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 = '<需填入>' # 备份集群 master 的主机名或 IP
port = 4617 # 备份集群 master supervisor 监听端口号
# 可选参数:省略时使用系统默认值
# dbname = 'template1'
# username = 'mxadmin'
# restore_point_creation_interval = '60s' # 数据一致性通过 restore point 保障,该项控制创建 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 {{备份集群 master 所在机器 IP}} \
> ~/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 状态。备份集群中,与 Publisher 连接的 walreceiver 进程数量总和应与原集群 shard 数量相同。
如果备份集群部署了 standby 和 mirror,备份集群内的 master 到 standby、primary 到 mirror 同样使用 walsender 和 walreceiver 进行备份。
在备份集群各个机器,以 root 用户身份执行:
ps aux | grep postgres | grep walsender
ps aux | grep postgres | grep walreceiver
确认备份集群内部存在对应的 walsender 和 walreceiver 进程,并按部署规划核对 master 到 standby、primary 到 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。观察日志时,应按显式配置值或默认值判断 restore point 生成间隔是否符合预期。观察期间可以向数据库持续插入数据。
日志路径以 /etc/matrixdb6/service/subscriber_<db_cluster_id>.conf 中的 stdout_logfile 配置为准。按该路径执行:
grep "Created global restore point" <subscriber_log_file>
应有输出,日志时间间隔应与配置的 restore point 间隔相同。
在主集群各 primary 数据目录的 log 目录中检查 restore point 创建记录:
grep "restore point" *.csv | grep "created at"
应有输出,表明主集群在 Subscriber 控制下定期创建 restore point。
在备份集群 master 数据目录的 log 目录中检查 WAL 回放到 restore point 的记录:
grep "cluster wide WAL replayed to global restore point" *.csv
应有输出,显示备份集群已经将 WAL 播放到某个 restore point。
检查备份集群 WAL 播放进度。分别连接到备份集群 master 和各个 primary,使用 utility 模式 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_replicationDR 使用的 replication slot 名称为:
internal_disaster_recovery_rep_slot
在主集群上,使用具备对应权限的用户(如 mxadmin)查询 replication slot:
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在备份集群上,使用具备对应权限的用户(如 mxadmin)查询 walreceiver 状态:
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/pprofSIGUSR2:关闭 /debug/pprof访问示例:
http://<host>:5587/debug/pprof/http://<host>:6698/debug/pprof/注意!
建议仅在排查问题时临时开启 pprof,避免长期暴露诊断接口。
本节说明备份集群内部副本故障时的处理方式。这里的操作发生在备份集群仍作为 DR 集群运行时,目标是维持从主集群持续接收和回放 WAL 的能力。
本节示例命令在备份集群 master 机器上以 mxadmin 用户身份执行;如果现场交付规范另有要求,请按现场规范执行。
相关命令用途如下:
| 命令 | 用途 |
|---|---|
mxdr failover |
当前 DR master 或 DR primary 的数据目录不可恢复,短时间内无法继续承担备份任务时,将同 shard 内的 standby 或 mirror 提升为新的 DR master 或 DR primary。 |
mxdr rebuild |
某个 standby 或 mirror 数据目录损坏,或 failover 后旧 master 或 primary 修复完成后,用当前健康副本重新构建目标副本。 |
mxdr rebalance |
failover 和 rebuild 完成后,当前运行角色与部署规划中的 preferred role 不一致,集群状态为OK_UNBALANCED 时,将角色分布恢复到部署规划。 |
DR primary 或 DR master 异常会影响对应 shard 的 WAL 接收和回放,还会导致主集群侧 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,让同 shard 的 mirror 接管数据同步;故障 primary 修复后执行 mxdr rebuild;如果集群进入 OK_UNBALANCED,再执行 mxdr rebalance 恢复 preferred role。如果 DR master 数据目录不可恢复,也属于 mxdr failover 的适用范围。
# 停止集群
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
获取 supervisor 管理的 Publisher 名称,例如 publisher_<db_cluster_id>。
停止 Publisher:
/opt/ymatrix/matrixdb6/bin/supervisorctl stop publisher_<db_cluster_id>
再次检查状态:
/opt/ymatrix/matrixdb6/bin/supervisorctl status
确认 Publisher 状态变为 exited。
Subscriber 也可选停止,操作方式与 Publisher 相同。
mxdr recover 使用场景备份集群已经通过 mxdr switch 提升为正常服务集群后,如果原主集群所在环境恢复,且希望让原主集群重新加入灾备关系,作为同步到新主的集群继续运行,可以使用 mxdr recover。
使用 mxdr recover 时,原主集群的数据仍应可用,集群状态仍能恢复为完全正常状态。
在原主集群降级为从其他集群同步的集群时,各个数据库节点的 pg_hba.conf 规则会重置为集群初始化时的状态。如果用户手动配置过 master 的 pg_hba.conf 规则,需要在降级完成后重新配置。
mxdr recover 命令格式如下:
mxdr recover [-a]
参数说明:
-a, --no-prompt:跳过确认提示。未指定时会提示是否将普通集群转换为同步到其 DR 集群。执行前请确认以下条件:
mxstop -a -f。操作步骤:
mxdr recover 要求。mxdr recover 命令。如需跳过确认提示,执行:
mxdr recover -a
灾难恢复切换后,备份集群的 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 用于部署灾难恢复组件和备份集群。
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 尚未支持数据库集群拓扑发生变化的情况,因此不支持增加分片的集群扩容。
需要开启 DR 的集群不要使用 tablespace 功能。
备份集群的数据一致性只在全局一致性点处有效。
备份集群在灾难发生后进行主备切换时,会切换至一个全局一致性点,以保证备份数据的最终一致性。
在数据备份过程中,备份集群虽然支持只读查询,但由于各个数据分片的日志播放同步粒度只控制在全局一致性点的位置,并不能保证任意时刻查询结果正确。