全部产品
Search
文档中心

云原生数据库 PolarDB:多活模式

更新时间:Jan 28, 2026

当业务增长需要跨地域或跨可用区部署应用与数据库,以实现异地容灾和就近访问时,如何处理两地同时写入带来的数据冲突,成为架构设计的核心挑战。GDN为此提供了多活模式,通过支持主从实例间的双向数据写入,帮助您构建两地多活的数据库服务,提升业务连续性和访问体验。为确保双向写入时的数据一致性,您需要了解并配置其核心的DDL同步规则与数据冲突处理策略。

适用范围

在使用GDN多活模式前,请确认您的业务场景和技术架构满足以下条件:

  • 架构限制:当前仅支持一主一从的双活架构。

  • DDL操作限制:所有DDL操作(如创建、修改表结构)需在主实例上执行。禁止在从实例执行DDL,否则将导致数据同步异常。

DDL同步规则

  • DML同步:双向同步。任意一方实例的INSERTUPDATEDELETE等操作都会被同步到对端。

  • DDL同步:单向同步。仅在主实例上执行的表结构变更(例如CREATE/ALTER TABLE)会被同步至从实例。主实例作为唯一的结构变更入口,确保整个集群的结构一致性。

数据冲突处理策略

当主实例和从实例同时接收到对同一唯一键(UK)的写入请求时,会产生数据冲突。您可以在创建多活实例时指定一种冲突处理策略,以定义数据库应如何自动解决这些冲突。

说明

该策略仅对DML(INSERTUPDATEDELETE等)操作生效,DDL操作(CREATE/ALTER TABLE等)依然遵循单向同步规则。

冲突策略

描述

适用场景

INTERRUPT(中断同步)

当发生唯一键冲突时,数据同步将立即中断,等待人工介入处理。

对数据一致性要求极高、需要对冲突进行精确审计的业务,如金融交易系统。

IGNORE(忽略冲突)

当发生唯一键冲突时,忽略来自源实例的写入操作,保留目标实例的现有数据。

允许少量数据差异的非核心业务,如日志记录。

OVERWRITE(覆盖冲突)

当发生唯一键冲突时,使用来自源实例的数据覆盖目标实例的现有数据。

需要保留最新写入记录的业务,如用户状态更新、缓存预热。

DIRECT_OVERWRITE(强制覆盖)

通过REPLACE INTO语义执行同步,强制使用源实例的数据覆盖目标实例。

需要强行统一数据的场景,如数据订正、订单状态同步。

最佳实践建议

  • INTERRUPT(中断同步):建议配合完善的监控告警系统,确保在同步中断时能及时收到通知并进行处理。

  • OVERWRITE(覆盖冲突)/DIRECT_OVERWRITE(强制覆盖):为避免覆盖操作导致非预期的结果,建议在业务逻辑层面实现幂等性设计。

  • IGNORE(忽略冲突):在使用前请仔细评估业务对数据丢失的容忍度,仅建议用于非核心业务表。