跨集群容灾#

概述#

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 自动同步。

注意事项#

  1. 目标集群需提前创建数据库,并配置 同名的用户和表空间

  2. include-object 仅包含表级或 schema 级对象,则需在目标集群 预先创建同名的 schema 和 database

  3. 当前 sync_staging_dir 只支持 HDFS 目录,需要主备集群都可访问。

Failover 操作#

在切换到备集群后,需执行以下命令解除只读模式,使数据库可写:

ALTER DATABASE yourdb SET default_transaction_read_only = off;

完成以上步骤后,业务可继续在目标集群正常运行。