跨集群容灾
本页目录
跨集群容灾#
概述#
OushuDB 提供了 oushudb-dr
工具,用于实现跨集群数据同步。该工具支持持续增量同步,将一个集群中的数据同步到另一个集群,实现跨集群容灾。
使用 oushudb-dr
进行数据同步#
1. 配置 oushudb-dr
#
创建 oushudb-dr
配置文件(YAML 格式),指定源集群(src)和目标集群(dest)等信息。
示例配置文件:
include_objects:
- "db1"
jobs: 4
sync_staging_dir: "hdfs://localhost:9000/hawq_default3"
sync_history_limit: -1 # -1 表示保留所有同步历史,或>=1 指定保留的同步次数。
log_dir: "/usr/local/oushu/log/oushudb/dr"
cron_schedule: "* 1 * * *" # 每天凌晨 1 点执行
full_sync_every: -1 # -1 表示始终执行增量同步
db_mapping:
- "db1=db2" # 若目标集群数据库与源集群同名,则不需要此映射
src:
host: "host1"
port: 7000
user: "oushu"
password: ""
dest:
host: "host2"
port: 7000
user: "oushu"
password: ""
2. 手动执行同步#
oushudb-dr --config /usr/local/oushu/conf/oushudb/oushudb_br.yaml --manual-sync
增量同步:默认按照
full_sync_every
配置执行增量同步。全量同步:如需强制执行全量同步,可添加
--full
参数。
3. 自动执行同步#
oushudb-dr --config /usr/local/oushu/conf/oushudb/oushudb_br.yaml --auto-sync
4. 停止同步任务#
oushudb-dr --config /usr/local/oushu/conf/oushudb/oushudb_br.yaml --stop
5. 查看同步状态#
oushudb-dr --config /usr/local/oushu/conf/oushudb/oushudb_br.yaml --status
OushuDB 容灾实施注意事项#
oushudb-dr
仅支持同步库级及以下对象。为了确保容灾切换到备库后,业务 SQL 依赖的元数据对象能够正确运行,用户需自行同步必要的全局级对象。
关键规则#
配置文件:按需自行同步。
全局元数据:用户需自行同步,如用户、表空间、资源队列等。
库级元数据:
oushudb-dr
自动同步。
注意事项#
目标集群需提前创建数据库,并配置 同名的用户和表空间。
若
include-object
仅包含表级或 schema 级对象,则需在目标集群 预先创建同名的 schema 和 database。当前
sync_staging_dir
只支持 HDFS 目录,需要主备集群都可访问。
Failover 操作#
在切换到备集群后,需执行以下命令解除只读模式,使数据库可写:
ALTER DATABASE yourdb SET default_transaction_read_only = off;
完成以上步骤后,业务可继续在目标集群正常运行。