跨集群容灾
本页目录
跨集群容灾#
概述#
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;
完成以上步骤后,业务可继续在目标集群正常运行。