1. CockroachDB介绍
蟑螂是地球上适应性最强的物种之一。它们能在无氧环境下存活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 的目标。
CockroachDB —— 像小强一样坚不可摧的数据库
2. 安装及使用CRDB 2.1 安装CRDB1、 下载cockroachDB二进制文件
[root@ dcs-01 ~]# wget https://binaries.cockroachdb.com/cockroach-latest.linux-amd64.tgz2、 解压文件
[root@dcs-01 ~]# tar xfz cockroach-latest.linux-amd64.tgz [root@dcs-01 ~]# cp cockroach-latest.linux-amd64/ cockroach /usr/local/bin/ [root@dcs-01 ~]# scp /usr/local/bin/cockroach dev2:/usr/local/bin 2.2启动CRDB1、 启动第1个节点
[root@dcs-01 ~]# cockroach start --insecure --host=dcs-01 --background --http-port=8081 CockroachDB node starting at 2017-03-02 17:59:35.757366168 +0800 CST build: CCL 9648163 @ 2017/02/13 19:27:00 (go1.7.5) admin: 01:8081 sql: postgresql://root@dcs-01:26257?sslmode=disable logs: cockroach-data/logs store[0]: path=cockroach-data status: initialized new cluster clusterID: 255b11fe-d801-4b06-9efc-db7baa3fccbf nodeID: 1说明: –store=指定存储位置 –http-port=指定web端口。多节点集群部署时,在启动命令中要加上–insecure –host=,否则其它节点会连接不到第1个节点。
配置安全连接参考:https://www.cockroachlabs.com/docs/secure-a-cluster.html
2、 启动第2个节点
[root@dcs-02 ~]# cockroach start --insecure --host=dcs-02 --background --http-port CockroachDB node starting at 2017-03-02 18:06:44.519846508 +0800 CST build: CCL 9648163 @ 2017/02/13 19:27:00 (go1.7.5) admin: 02:8081 sql: postgresql://root@dcs-02:26257?sslmode=disable logs: /opt/cockroach-data/logs store[0]: path=/opt/cockroach-data status: initialized new node, joined pre-existing cluster clusterID: 255b11fe-d801-4b06-9efc-db7baa3fccbf nodeID: 2