官方网站
https://www.cockroachlabs.com/docs/stable/install-cockroachdb.html
• 下载最新的软件安装包
https://binaries.cockroachdb.com/cockroach-v1.1.4.linux-amd64.tgz
• 将需要的安装包上传到我们的服务器节点上
软件介绍
1、可伸缩的、跨地域复制,多个数据中心之间进行异步复制。
2、顽强的生存能力。
3、支持事物特性的数据库。
4、高并发的事实访问。
蟑螂是地球上适应性最强的物种之一。它们能在无氧环境下存活45分钟,在没有食物的情况下存活超过一个月。
甚至就算身首异处也无法让小强当场毙命——他们的身体没了头都还能活好几天。
在像 Google,Amazon 和 Facebook 这样的科技巨头内部,掌握领先技术的工程师们也在让他们自己的网站像小强一样顽强。
如果一台服务器宕机,一个服务器集群宕机,或者整个数据中心电力中断,那这些网站每一秒都在损失大量收入。
现在,一个开源开发者小组想让每一家公司都能够通过使用这种完全基于网络的云计算系统来搭建如小强般顽强的网站。
他们为项目命名为“CockroachDB”(“小强DB”),在宣传中称该项目是“具有超强生命力的数据库”。
或许蟑螂被用在软件命名中很违和,但联合创始人 Spencer Kimball —— 一名前 Google 工程师 —— 则认为只有小强才能配得上他们的项目。
“这个名字代表了项目最重要的两大特征:首先不用说,是生存性,其次是一种近乎自主的散布性”。
和很多其他同类型的开源项目一样,CockroachDB 的灵感来自于一份 Google 的研究论文,这篇论文详细地介绍了一种叫做“Spanner”的大型系统。Spanner 将允许 Google 将数据分布到全球上百个数据中心的上百万台服务器。
系统的开发大约会耗时5年。
目前项目还处于 α 阶段的开发,离实际应用还很遥远。但 CockroachDB 小组也是现在唯一一个致力于实现 Spanner 系统的开发组。
不少参与项目的开发者都曾就职于 Google,但没有一个参与过 Spanner 项目。这其中,最出名的 Photoshop 开源替代产品 GIMP 的的联合创始人 Spencer Kimball 和 Peter Mattis 曾帮助开发 Google 的大型文件存储系统,也就是 Colossus;Ben Darnell 曾参与过 Google Reader 开发,而 Andy Bonventre 则参与过 Chrome 和 Google Tasks 的开发。
CockroachDB 并没有尝试复制 Spanner 最不寻常的理念——用原子钟来让全球各地的数据中心时间同步。考虑到大多数线上应用都没有达到 Google 的规模,他们或许不需要这样的功能。
Kimball 表示,这些公司真正需要的是是有一种稳定可靠的方式来让数据自动复制和同步到各个数据中心的服务器里,这样就算一个数据中心倒下了,应用还能正常运行,这也是 CockroachDB 的目标。
依赖服务配置
集群模式运行必须依赖文档的时间同步服务
先手动执行时钟同步
[root@node1 ~]# ntpdate 182.92.12.11
添加阿里云的时间服务器作为基准服务器
[root@node1 ~]# vim /etc/ntp.conf
server 182.92.12.11
配置时间同步服务为开机启动服务
[root@node1 .ssh]# chkconfig ntpd on
[root@node1 .ssh]# service ntpd start
Copy
不使用加密策略
这里我们将下载好的软件上传到服务器上:
/opt/cockroach-v1.1.4.linux-amd64.tgz
[root@node ~]# cd /opt
[root@node1 opt]# tar -xvf cockroach-v1.1.4.linux-amd64.tgz
[root@node1 opt]# cd cockroach-v1.1.4.linux-amd64
[root@node1 cockroach-v1.1.4.linux-amd64]# cp cockroach /usr/local/bin/
如下,将数据库运行软件拷贝到其他机器节点上
[root@node1 cockroach-v1.1.4.linux-amd64]# scp /usr/local/bin/cockroach node2:/usr/local/bin
[root@node1 cockroach-v1.1.4.linux-amd64]# scp /usr/local/bin/cockroach node7:/usr/local/bin
Copy
使用加密策略
占位,后期生产环境补充
启动服务
单机启动
[root@node1 ~]# cockroach start —insecure —host=node1 —background —http-port=8081
-
WARNING: RUNNING IN INSECURE MODE!
-
- Your cluster is open for any client that can access node1.
-
- Any user, even root, can log in without providing a password.
-
- Any user, connecting as root, can read or write any data in your cluster.
-
- There is no network encryption nor authentication, and thus no confidentiality.
-
Check out how to secure your cluster: https://www.cockroachlabs.com/docs/stable/secure-a-cluster.html
CockroachDB node starting at 2018-01-29 06:22:32.459467715 +0000 UTC (took 4.0s)
build: CCL v1.1.4 @ 2018/01/08 17:32:42 (go1.8.3)
admin: http://node1:8081
sql: postgresql://root@node1:26257?application_name=cockroach&sslmode=disable
logs: /root/cockroach-data/logs
store[0]: path=/root/cockroach-data
status: initialized new cluster
clusterID: 28f4693b-e4f5-4bf9-8da2-fb710f6d16d3
nodeID: 1
[root@node1 ~]#
集群启动-第一个节点
[root@node1 ~]# cockroach start —insecure —background —host=172.17.2.205 —http-port=8081
集群启动-第二个节点
[root@node2 ~]# cockroach start —insecure —background —store=node2 —host=172.17.2.204 —http-port=8081 —join=172.17.2.205:26257
CockroachDB node starting at 2018-01-29 07:05:00.312966333 +0000 UTC (took 1.1s)
build: CCL v1.1.4 @ 2018/01/08 17:32:42 (go1.8.3)
admin: http://172.17.2.204:8081
sql: postgresql://[email protected]:26257?application_name=cockroach&sslmode=disable
logs: /root/node2/logs
store[0]: path=/root/node2
status: initialized new node, joined pre-existing cluster
clusterID: 28f4693b-e4f5-4bf9-8da2-fb710f6d16d3
nodeID: 2
集群启动-第三个节点
[root@node7 ~]# cockroach start —insecure —background —store=node3 —host=172.17.2.109 —http-port=8081 —join=172.17.2.205:26257
Copy
关闭服务
[root@node1 ~]# cockroach quit —insecure —host=172.17.2.205
[root@node2 ~]# cockroach quit —insecure —host=172.17.2.204
[root@node7 ~]# cockroach quit —insecure —host=172.17.2.109
Copy
• 注意:在关闭第三个节点服务的时候会很慢,这是因为集群检测到没有可用的节点了,强制关闭可以多按几下Ctrl + C
清理数据,如果不需要再次使用该集群服务,这时我们应该删除掉占用的物理空间,根据上面启动服务的提示,我们看到数据存放在/root/cockroach-data目录。
[root@node1 ~]# rm -rf /root/cockroach-data
[root@node2 ~]# rm -rf /root/node2
[root@node7 ~]# rm -rf /root/node3
Copy
• 注意:如果仍然需要启动服务注意依次启动三个节点。
测试集群
登陆到本机节点,创建一个测试数据库bank和一条记录进行测试
[root@node7 ~]# cockroach sql —insecure —host=172.17.2.109
Welcome to the cockroach SQL interface.
All statements must be terminated by a semicolon.
To exit: CTRL + D.
Server version: CockroachDB CCL v1.1.4 (linux amd64, built 2018/01/08 17:32:42, go1.8.3) (same version as client)
Cluster ID: 28f4693b-e4f5-4bf9-8da2-fb710f6d16d3
Enter ? for a brief introduction.
[email protected]:26257/> CREATE DATABASE bank;
CREATE DATABASE
Time: 31.710098ms
[email protected]:26257/> CREATE TABLE bank.accounts (id INT PRIMARY KEY, balance DECIMAL);
CREATE TABLE
Time: 36.708909ms
[email protected]:26257/> INSERT INTO bank.accounts VALUES (1, 1000.50);
INSERT 1
Time: 139.122805ms
[email protected]:26257/> SELECT * FROM bank.accounts;
+----+---------+
| id | balance |
+----+---------+
| 1 | 1000.50 |
+----+---------+
(1 row)
Time: 1.83258ms
[email protected]:26257/> \q
[root@node7 ~]# cockroach sql —insecure —host=172.17.2.109
Welcome to the cockroach SQL interface.
All statements must be terminated by a semicolon.
To exit: CTRL + D.
Server version: CockroachDB CCL v1.1.4 (linux amd64, built 2018/01/08 17:32:42, go1.8.3) (same version as client)
Cluster ID: 28f4693b-e4f5-4bf9-8da2-fb710f6d16d3
Enter ? for a brief introduction.
[email protected]:26257/> \q
[root@node7 ~]#
如下登陆到其他节点查看是否实现自动同步
[email protected]:26257/> SELECT * FROM bank.accounts;
+----+---------+
| id | balance |
+----+---------+
| 1 | 1000.50 |
+----+---------+
(1 row)
Time: 73.158033ms
[email protected]:26257/>
Copy
集群监控
查看集群同步监控指标:Replicas per Node
每个节点上的副本计数是相同的,表示群集中的所有数据都被复制了3次(默认值)
参考文档
官方安装文档:https://www.cockroachlabs.com/docs/stable/install-cockroachdb.html
官方安装文档:https://www.cockroachlabs.com/docs/stable/start-a-local-cluster.html
互联网参考:https://segmentfault.com/a/1190000004634693
官方使用说明文档:https://www.cockroachlabs.com/docs/stable/data-types.html