文档首页/ 云数据库 TaurusDB/ 用户指南/ RegionlessDB集群(公测)/ 使用RegionlessDB集群实现异地多活
更新时间:2026-01-14 GMT+08:00
分享

使用RegionlessDB集群实现异地多活

操作场景

业务部署在多区域时,可以使用RegionlessDB集群从就近区域访问数据库。如图1所示,一个RegionlessDB集群拥有一个主实例和两个从实例,主实例负责接收和处理读写请求,而从实例仅接收读请求。当开启写转发功能后,从实例接收到的写请求将自动转发到主实例进行处理。主实例完成写入操作后,会将数据同步到其他所有从实例,从而降低跨区域网络时延。使用写转发可以简化写数据流程,直接通过从实例IP地址接入数据库服务执行读写操作,同时在保持数据一致性的情况下,不影响就近读取的能力。

图1 异地多活原理图

RegionlessDB集群约束限制

请参见约束与限制

写转发约束限制

  • 写转发会创建用户“_@gdb_WriteForward@_”,请不要修改或者删除该用户,否则写转发功能无法正常运行。
  • 针对会隐式提交的命令,在不支持写转发的情况下,也会自动提交当前节点和主节点对应的事务。
  • 针对全局一致性级别,每个事务第一次访问数据之前,需要使用会话池中的连接,从主节点获取数据点位(LSN),如果没有可以使用的会话,可能会导致读取数据的命令失败。
  • 如果用户使用写转发的会话出现连接错误,并且用户处于多语句事务中,服务端会主动关闭与客户端和主节点的连接,保证客户端能够感知到对应的错误。
  • 主从实例的版本需要保持为最新版本。
  • 由于写转发是转发到主节点上执行,如果只读节点有相同数据库下的同名临时表,最终以主节点的数据为准。
  • 从实例如果参与了故障转移,写转发相关参数(“rds_open_write_forwarding”“rds_write_forward_read_consistency”)会恢复为默认值。
  • 支持与不支持的场景如表1所示。
    表1 写转发支持与不支持的场景说明

    约束限制

    说明

    支持场景

    • 写转发只有在从实例的事务隔离级别为RR的场景下才支持。
    • 写转发支持如下命令:
      • SQLCOM_UPDATE
      • SQLCOM_INSERT
      • SQLCOM_DELETE
      • SQLCOM_INSERT_SELECT
      • SQLCOM_REPLACE
      • SQLCOM_REPLACE_SELECT
      • SQLCOM_DELETE_MULTI
      • SQLCOM_UPDATE_MULTI
      • SQLCOM_ROLLBACK
      如果执行了不支持的写转发命令,会出现如下报错信息:
      ERROR xxx (yyy): This version of MySQL doesn't yet support 'operation with write forwarding'.

      其中“operation”为具体不支持的操作类型。

    不支持场景

    • 当前版本从实例进行写转发时,暂不支持显示WARNING和RECORD信息。
    • 当前版本从实例进行写转发时,暂不支持中断执行中的SQL请求。
    • 不支持SELECT FOR UPDATE语句。
    • 不支持EXPLAIN写转发语句。
    • 不支持写转发的语句包含SET VARIABLE。
    • 在写转发开启的场景下,不支持SAVEPOINT。
    • XA事务中不支持写转发。
    • 当前不支持START TRANSACTION READ WRITE,可以直接使用START TRANSACTION进行测试写转发。
    • 存储过程中不支持写转发。
    • 写转发开启时,不支持创建临时表,如果需要创建临时表,可以暂时关闭写转发进行创建。

操作步骤

相关文档