安装与部署 #
一、部署方式概览 #
1.1 部署选项 #
text
CockroachDB 部署方式
├── 本地单节点
│ └── 开发测试
│
├── 本地多节点
│ └── 测试集群
│
├── 生产集群
│ └── 自托管生产环境
│
├── Docker
│ └── 容器化部署
│
├── Kubernetes
│ └── 云原生部署
│
└── CockroachDB Cloud
└── 托管服务
1.2 版本选择 #
| 版本 | 说明 |
|---|---|
| Core | 开源核心版本 |
| Enterprise | 企业版本 (高级特性) |
| CockroachDB Cloud | 云服务版本 |
二、本地单节点部署 #
2.1 下载安装 #
Linux/macOS
bash
# 下载最新版本
curl https://binaries.cockroachdb.com/cockroach-v23.1.0.darwin-10.9-amd64.tgz | tar -xJ
# 添加到 PATH
export PATH=$PATH:$(pwd)/cockroach-v23.1.0.darwin-10.9-amd64
# 验证安装
cockroach version
Windows
powershell
# 下载并解压
# https://binaries.cockroachdb.com/cockroach-v23.1.0.windows-6.2-amd64.zip
# 添加到 PATH
$env:PATH += ";C:\path\to\cockroach-v23.1.0.windows-6.2-amd64"
# 验证安装
.\cockroach.exe version
2.2 启动单节点 #
bash
# 启动单节点集群
cockroach start-single-node --insecure --listen-addr=localhost
# 参数说明:
# --insecure: 不使用SSL (仅开发测试)
# --listen-addr: 监听地址
2.3 连接数据库 #
bash
# 使用内置SQL客户端
cockroach sql --insecure
# 或使用 PostgreSQL 客户端
psql -h localhost -p 26257 -U root -d defaultdb
2.4 Web管理界面 #
text
访问 Web UI:
http://localhost:8080
功能:
├── 集群概览
├── 数据库管理
├── SQL执行
├── 监控指标
└── 任务管理
三、本地多节点部署 #
3.1 启动多节点集群 #
bash
# 创建数据目录
mkdir -p cockroach-data/node{1,2,3}
# 启动节点1
cockroach start --insecure \
--store=cockroach-data/node1 \
--listen-addr=localhost:26257 \
--http-addr=localhost:8080 \
--join=localhost:26257,localhost:26258,localhost:26259
# 启动节点2 (新终端)
cockroach start --insecure \
--store=cockroach-data/node2 \
--listen-addr=localhost:26258 \
--http-addr=localhost:8081 \
--join=localhost:26257,localhost:26258,localhost:26259
# 启动节点3 (新终端)
cockroach start --insecure \
--store=cockroach-data/node3 \
--listen-addr=localhost:26259 \
--http-addr=localhost:8082 \
--join=localhost:26257,localhost:26258,localhost:26259
3.2 初始化集群 #
bash
# 初始化集群 (只需执行一次)
cockroach init --insecure --host=localhost:26257
# 检查集群状态
cockroach node status --insecure --host=localhost:26257
3.3 集群架构 #
text
┌─────────────────────────────────────────────────────────────┐
│ 本地多节点集群 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Node 1 │ │ Node 2 │ │ Node 3 │ │
│ │ :26257 │ │ :26258 │ │ :26259 │ │
│ │ :8080 │ │ :8081 │ │ :8082 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │ │ │ │
│ └──────────────┼──────────────┘ │
│ │ │
│ Gossip 协议通信 │
│ Raft 共识协议 │
│ │
└─────────────────────────────────────────────────────────────┘
四、Docker部署 #
4.1 单节点Docker #
bash
# 拉取镜像
docker pull cockroachdb/cockroach:v23.1.0
# 启动单节点
docker run -d \
--name cockroach-single \
-p 26257:26257 \
-p 8080:8080 \
cockroachdb/cockroach:v23.1.0 start-single-node --insecure
# 连接数据库
docker exec -it cockroach-single cockroach sql --insecure
4.2 多节点Docker Compose #
yaml
# docker-compose.yml
version: '3.8'
services:
cockroach1:
image: cockroachdb/cockroach:v23.1.0
container_name: cockroach1
hostname: cockroach1
command: start --insecure --join=cockroach1,cockroach2,cockroach3
ports:
- "26257:26257"
- "8080:8080"
volumes:
- cockroach1-data:/cockroach/cockroach-data
cockroach2:
image: cockroachdb/cockroach:v23.1.0
container_name: cockroach2
hostname: cockroach2
command: start --insecure --join=cockroach1,cockroach2,cockroach3
ports:
- "26258:26257"
- "8081:8080"
volumes:
- cockroach2-data:/cockroach/cockroach-data
cockroach3:
image: cockroachdb/cockroach:v23.1.0
container_name: cockroach3
hostname: cockroach3
command: start --insecure --join=cockroach1,cockroach2,cockroach3
ports:
- "26259:26257"
- "8082:8080"
volumes:
- cockroach3-data:/cockroach/cockroach-data
volumes:
cockroach1-data:
cockroach2-data:
cockroach3-data:
bash
# 启动集群
docker-compose up -d
# 初始化集群
docker exec -it cockroach1 cockroach init --insecure
# 查看状态
docker exec -it cockroach1 cockroach node status --insecure
五、Kubernetes部署 #
5.1 使用Operator部署 #
yaml
# cockroach-operator.yaml
apiVersion: crdb.cockroachlabs.com/v1alpha1
kind: CrdbCluster
metadata:
name: cockroach
spec:
dataStore:
pvc:
source:
persistentVolumeClaimSpec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: "10Gi"
storageClassName: standard
resources:
requests:
cpu: "500m"
memory: "1Gi"
limits:
cpu: "2"
memory: "4Gi"
tlsEnabled: true
nodes: 3
image:
name: cockroachdb/cockroach:v23.1.0
bash
# 安装 Operator
kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach-operator/master/install/crds.yaml
kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach-operator/master/install/operator.yaml
# 部署集群
kubectl apply -f cockroach-operator.yaml
# 查看状态
kubectl get crdbcluster
kubectl get pods
5.2 使用StatefulSet部署 #
yaml
# cockroach-statefulset.yaml
apiVersion: v1
kind: Service
metadata:
name: cockroach
labels:
app: cockroach
spec:
ports:
- port: 26257
name: sql
- port: 8080
name: http
clusterIP: None
selector:
app: cockroach
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: cockroach
spec:
serviceName: cockroach
replicas: 3
selector:
matchLabels:
app: cockroach
template:
metadata:
labels:
app: cockroach
spec:
containers:
- name: cockroach
image: cockroachdb/cockroach:v23.1.0
ports:
- containerPort: 26257
name: sql
- containerPort: 8080
name: http
command:
- /bin/bash
- -ecx
- exec /cockroach/cockroach start --insecure --join=cockroach-0.cockroach,cockroach-1.cockroach,cockroach-2.cockroach
volumeMounts:
- name: data
mountPath: /cockroach/cockroach-data
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 10Gi
bash
# 部署
kubectl apply -f cockroach-statefulset.yaml
# 初始化集群
kubectl exec -it cockroach-0 -- cockroach init --insecure
# 连接数据库
kubectl exec -it cockroach-0 -- cockroach sql --insecure
六、生产环境部署 #
6.1 安全配置 #
bash
# 创建证书目录
mkdir -p certs
# 创建CA证书
cockroach cert create-ca \
--certs-dir=certs \
--ca-key=certs/ca.key
# 创建节点证书
cockroach cert create-node \
node1.example.com node2.example.com node3.example.com \
localhost \
--certs-dir=certs \
--ca-key=certs/ca.key
# 创建客户端证书
cockroach cert create-client root \
--certs-dir=certs \
--ca-key=certs/ca.key
# 启动安全集群
cockroach start \
--certs-dir=certs \
--listen-addr=node1.example.com:26257 \
--http-addr=node1.example.com:8080 \
--join=node1.example.com,node2.example.com,node3.example.com
6.2 配置文件 #
yaml
# cockroach.yaml
cluster:
name: production-cluster
server:
listen_addr: 0.0.0.0:26257
http_addr: 0.0.0.0:8080
join:
- node1.example.com:26257
- node2.example.com:26257
- node3.example.com:26257
security:
cert_dir: /etc/cockroach/certs
storage:
store:
- path: /data/cockroach
log:
dir: /var/log/cockroach
level: info
6.3 系统要求 #
text
┌─────────────────────────────────────────────────────────────┐
│ 生产环境要求 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 硬件要求: │
│ ├── CPU: 4核以上 │
│ ├── 内存: 16GB以上 │
│ ├── 存储: SSD (推荐 NVMe) │
│ └── 网络: 低延迟网络 │
│ │
│ 软件要求: │
│ ├── 操作系统: Linux (推荐) │
│ ├── 文件系统: ext4 或 xfs │
│ └── 时间同步: NTP │
│ │
│ 集群规模: │
│ ├── 最小: 3节点 │
│ ├── 推荐: 5节点或更多 │
│ └── 奇数节点 (Raft选举) │
│ │
└─────────────────────────────────────────────────────────────┘
七、常用命令 #
7.1 集群管理 #
bash
# 启动集群
cockroach start [flags]
# 停止节点
cockroach quit --insecure --host=localhost:26257
# 查看节点状态
cockroach node status --insecure
# 查看集群设置
cockroach sql --insecure -e "SHOW ALL CLUSTER SETTINGS"
# 初始化集群
cockroach init --insecure --host=localhost:26257
7.2 数据库操作 #
bash
# 执行SQL
cockroach sql --insecure -e "CREATE DATABASE test;"
# 执行SQL文件
cockroach sql --insecure < schema.sql
# 导出数据
cockroach dump test --insecure > backup.sql
# 用户管理
cockroach sql --insecure -e "CREATE USER test WITH PASSWORD 'password';"
7.3 备份恢复 #
bash
# 备份数据库
cockroach sql --insecure -e "
BACKUP DATABASE test
INTO 'nodelocal://1/backup/test'
AS OF SYSTEM TIME '-10s';
"
# 恢复数据库
cockroach sql --insecure -e "
RESTORE DATABASE test
FROM 'nodelocal://1/backup/test';
"
八、验证部署 #
8.1 健康检查 #
sql
-- 连接数据库
cockroach sql --insecure
-- 检查节点状态
SELECT * FROM crdb_internal.cluster_nodes;
-- 检查数据库列表
SHOW DATABASES;
-- 创建测试表
CREATE TABLE test (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name VARCHAR(100)
);
-- 插入测试数据
INSERT INTO test (name) VALUES ('test1'), ('test2');
-- 查询数据
SELECT * FROM test;
8.2 性能测试 #
bash
# 运行TPC-C基准测试
cockroach workload init tpcc 'postgresql://root@localhost:26257?sslmode=disable'
cockroach workload run tpcc --duration=5m 'postgresql://root@localhost:26257?sslmode=disable'
九、总结 #
部署要点:
| 方式 | 场景 | 复杂度 |
|---|---|---|
| 单节点 | 开发测试 | 低 |
| 多节点 | 测试集群 | 中 |
| Docker | 容器化环境 | 中 |
| Kubernetes | 云原生生产 | 高 |
| CockroachDB Cloud | 托管服务 | 低 |
下一步,让我们深入了解CockroachDB的架构设计!
最后更新:2026-03-27