用途:帮助开发者在 CockroachDB 中为多区域读写行为建模,选择并落地合适的多区域模式,并附带验证与演示流程。适用于决定主动-主动还是主动-被动架构、在 REGIONAL BY ROW 与手动地理分区之间取舍、理解 GLOBAL 表行为、设计多区域本地读写、搭建多区域演示或工作坊、验证 leaseholder 分布与 zone 配置、优化跨区域事务延迟。若问题仅涉及 SQL 语法、索引或普通表结构设计则不应使用。
主要能力:先判断应用写入模型(单一写入主场还是多主场),再在普通区域表(主动-被动)、手动地理分区、REGIONAL BY ROW、GLOBAL 表之间给出选型;解释各模式的读写本地性、运维负担与配置方式;说明存活目标选择:SURVIVE ZONE FAILURE 需 3+ 可用区、写延迟低,SURVIVE REGION FAILURE 需 3+ 区域、写延迟更高但可承受整区域故障;提供演示集群搭建与验证查询(如 SHOW RANGES ... WITH DETAILS)核对 leaseholder 位置;给出跨区域延迟参考与迁移检查清单。
使用方式:需先具备 CockroachDB range 与 leaseholder 概念,并有多区域集群,节点以 --locality=region=...,zone=... 启动,否则 DDL 会因区域不存在或约束无匹配节点而报错。本地可快速运行:cockroach demo --no-example-database --nodes=9 --demo-locality=... ;长驻集群参见 setting-up-local-cluster,并在每个 cockroach start 加 --locality。示例 DDL 含普通区域表、手动分区 CONFIGURE ZONE、REGIONAL BY ROW 与 GLOBAL 表声明,以及 SURVIVE 语句。
限制与注意:普通主区域表不提供所有区域的对称低延迟写;GLOBAL 表面向广泛读取本地性,不应在未核实官方文档时宣传为到处可低延迟写;手动与抽象方案不应混讲,除非明确对比;始终包含验证而非仅 DDL;区域名与 locality 标签需保持一致。多区域配置影响全集群数据放置,应在演示或预发环境测试,变更后验证 leaseholder,并留出 range 再平衡时间。演示建议先讲手动地理分区再讲 REGIONAL BY ROW 并对比运维表面。