CockroachDB是一款开源的分布式数据库,具有NoSQL对海量数据的存储管理能力,又保持了传统数据库支持的ACID和SQL等,还支持跨地域、去中心、高并发、多副本强一致和高可用等特性。支持OLTP场景,同时支持轻量级OLAP场景。
官方有定制好的Docker镜像可以直接使用。这里提供两种部署方式 分布是 手动docker部署和 docker-compose一键部署。
1 手动部署
详细参考:用户手册
1.1 脚本
这里整理一份直接copy 使用的脚本,并添加了性能优化参数:--max-sql-memory=.25 --cache=.25。
性能优化的问题可以参考:SQL性能, 部署常用优化参数
需要注意的一个地方就是:docker 启动参数不要使用 --background
#创建桥接网络
docker network create -d bridge roachnet
#启动节点1
docker run -d --name=roach1 --hostname=roach1 --net=roachnet -p 26257:26257 -p 8080:8080 -v "//D/home/docker/cockroach-data/roach1:/cockroach/cockroach-data" cockroachdb/cockroach:latest start --insecure --max-sql-memory=.25 --cache=.25
#启动节点2
docker run -d --name=roach2 --hostname=roach2 --net=roachnet -v "//D/home/docker/cockroach-data/roach2:/cockroach/cockroach-data" cockroachdb/cockroach:latest start --insecure --join=roach1 --max-sql-memory=.25 --cache=.25
#启动节点3
docker run -d --name=roach3 --hostname=roach3 --net=roachnet -v "//D/home/docker/cockroach-data/roach3:/cockroach/cockroach-data" cockroachdb/cockroach:latest start --insecure --join=roach1 --max-sql-memory=.25 --cache=.25
1.2 节点1 创建数据
#节点一创建库并录入数据
docker exec -it roach1 ./cockroach sql --insecure
CREATE DATABASE bank;
CREATE TABLE bank.accounts (id INT PRIMARY KEY, balance DECIMAL);
INSERT INTO bank.accounts VALUES (1, 1000.50);
#节点二查询数据验证
docker exec -it roach2 ./cockroach sql --insecure SELECT * FROM bank.accounts;
1.3停止集群
docker stop roach1 roach2 roach3
docker rm roach1 roach2 roach3
2、docker-compose 部署
下面完整脚本,但是光有这个脚本是不够的,可以下载完整的工程包:cockroach-docker-compose.jar
version: "3"
services:
grafana:
image: grafana/grafana
ports:
- "3000:3000"
alert:
image: prom/alertmanager
ports:
- "9093:9093"
prometheus:
image: prom/prometheus
volumes:
- ./rules:/rules
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
roach1:
image: cockroachdb/cockroach:v20.1.3
hostname: roach1
command: start --insecure --max-sql-memory=.25 --cache=.25 --background
volumes:
- ./roach1:/cockroach/cockroach-data
ports:
- "26257:26257"
- "8081:8080"
roach2:
image: cockroachdb/cockroach:v20.1.3
hostname: roach2
command: start --insecure --join=roach1 --max-sql-memory=.25 --cache=.25 --background
volumes:
- ./roach2:/cockroach/cockroach-data
ports:
- "26258:26257"
- "8082:8080"
roach3:
image: cockroachdb/cockroach:v20.1.3
hostname: roach3
command: start --insecure --join=roach1 --max-sql-memory=.25 --cache=.25 --background
volumes:
- ./roach3:/cockroach/cockroach-data
ports:
- "26259:26257"
- "8083:8080"
3 、管理工具
cockroachdb的管理,目前比较好用的应该就是DBeaverEE(企业版本可以破解)。
(1)新建连接并选择cockroachdb
(3)填写自己的数据库和端口号(默认2657)就可以了
4、从MYSQL迁移数据
参考:MYSQL迁移
也可以使用 上面提到的管理工具。
Tableplus 也是一款不错的管理工具。