Skip to content
返回部署

部署 CockroachDB

分布式 SQL,Postgres 线兼容、强一致和多区域。

平台高级

为什么

CockroachDB 是分布式 SQL 数据库,线兼容 Postgres。强一致(可串行化)存活节点/区域故障,地理分区低延迟。

平台即服务采用率 2024 年增长 24%,团队从虚拟机管理转向 git push 部署。the cloud infrastructure market reached $330B in 2024, growing 22% year-over-year (Synergy Research),PaaS 层捕获了大多数新工作负载。

何时使用

全球分布 SQL 应用需强一致用 CockroachDB。单区域避免(用 Postgres)。

如何做

1. Docker — cockroachdb/cockroach:v23.2 2. 初始化 — cockroach init --insecure 集群 3. SQL — cockroach sql,Postgres 兼容 4. 区域 — --locality=region=us-east1,zone=us-east1-b 5. 分区 — PARTITION BY region 地理数据 6. HA — 跨区域 3+ 节点,自动故障转移 7. 备份 — BACKUP TO 定期备份

示例

# 启动 3 节点集群 cockroach start --insecure --listen-addr=localhost:26257 --http-addr=localhost:8080 --locality=region=us-east,zone=us-east-1 --join=localhost:26257,localhost:26258,localhost:26259 # 初始化集群 cockroach init --insecure --host=localhost:26257 # SQL(Postgres 兼容) cockroach sql --insecure --host=localhost:26257 -e " CREATE TABLE users (id UUID PRIMARY KEY, name STRING, region STRING); INSERT INTO users VALUES (gen_random_uuid(), 'Alice', 'us-east'); " # 地理分区表 CREATE TABLE orders ( id UUID PRIMARY KEY, region STRING NOT NULL, total DECIMAL ) PARTITION BY LIST (region) ( PARTITION us_east VALUES IN ('us-east'), PARTITION eu_west VALUES IN ('eu-west') );

常见问题

  • ⚠跨区域写慢 — 用地理分区让数据近用户
  • ⚠Postgres 扩展不支持 — CockroachDB 支持核心 Postgres,非所有扩展
  • ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致

最佳实践

  • ✓多区域用地理分区 — 数据近用户,低延迟
  • ✓用生存目标 — REGION 生存容忍区域故障
  • ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求

常见问题解答