ClickHouse基于复制的故障恢复测试

在之前的博客中,我们讨论了ClickHouse的最佳架构,其中考虑了两点

  1. 扩展性,即集群机器越多,性能越高,集群性能=∑单机性能

  2. 可靠性,通过使用复制机制,来抵抗单机宕机、机房宕机风险

其中第二点,依赖ClickHouse的复制引擎,即ReplicatedMergeTree引擎
在ZK的基础上,共享同一个ZK路径的节点,会相互同步数据

本测试主要用来做灾难恢复测试,即集群中某个分片对应的某2个节点挂了一个,新增一个节点,存量数据同步情况和效率

为了保证测试有价值,找了一个15亿行数据的表,数据文件22GB

测试环境

Snip20171218_9.png
  • 如图,基于ZK构建了两组集群
    • 两侧看做2个集群,数据各占1/3,使用分布式引擎做横向扩展
    • 其中Node1和Node1'、Node2和Node2'、Node3和Node3'使用复制引擎,相互做备份
    • 现在假设Node3出现了宕机,新增一个节点,观察数据同步的过程是否符合预期

预期假设

  • 复制会把网卡打满
  • 数据最终一致

测试过程

Node3'上的情况

# 22GB数据文件

root@10.xx.xx.x:/data1/clickhouse/data/ck_test  # du -sh * 
22G     dagger
4.0K    dagger_all


# 15亿数据
:) select count(*)/100000000 from dagger;

SELECT count(*) / 100000000
FROM dagger

┌─divide(count(), 100000000)─┐
│                15.02450289 │
└────────────────────────────┘

1 rows in set. Elapsed: 0.170 sec. Processed 1.50 billion rows, 1.50 GB (8.85 billion rows/s., 8.85 GB/s.)

新增节点Node3'',观察复制情况

# 之前只有分布式表,没有本地表
root@10.xx.xx.xx:/data1/clickhouse/data/ck_test  # du -sh *
4.0K    dagger_all

# 新建本地表后,数据文件不断增加,同步开始
root@10.xx.xx.xx:/data1/clickhouse/data/ck_test  # du -sh *
471M    dagger
4.0K    dagger_all

root@10.xx.xx.xx:/data1/clickhouse/data/ck_test  # du -sh *
565M    dagger
4.0K    dagger_all

root@10.xx.xx.xx:/data1/clickhouse/data/ck_test  # du -sh *
3.8G    dagger
4.0K    dagger_all
root@10.xx.xx.xx:/data1/clickhouse/data/ck_test  # du -sh *
4.0G    dagger
4.0K    dagger_all

root@10.xx.xx.xx:/data1/clickhouse/data/ck_test  # date
Mon Dec 18 10:44:43 CST 2017

root@10.xx.xx.xx:/data1/clickhouse/data/ck_test  # du -sh *
5.7G    dagger
4.0K    dagger_all

root@10.xx.xx.xx:/data1/clickhouse/data/ck_test  # du -sh *
16G     dagger
4.0K    dagger_all

root@10.xx.xx.xx:/data1/clickhouse/data/ck_test  # date
Mon Dec 18 10:46:30 CST 2017
root@10.xx.xx.xx:/data1/clickhouse/data/ck_test  # date 
Mon Dec 18 10:46:42 CST 2017

root@10.xx.xx.xx:/data1/clickhouse/data/ck_test  # du -sh *
17G     dagger
4.0K    dagger_all

root@10.xx.xx.xx:/data1/clickhouse/data/ck_test  # date    
Mon Dec 18 10:47:36 CST 2017

root@10.xx.xx.xx:/data1/clickhouse/data/ck_test  # du -sh *
22G     dagger
4.0K    dagger_all

最终数据量

# 15亿,与其他节点保持一致

:) select count(*)/100000000 from dagger;

SELECT count(*) / 100000000
FROM dagger 

┌─divide(count(), 100000000)─┐
│                15.02450289 │
└────────────────────────────┘

复制过程带宽和日志

Snip20171218_5

Snip20171218_6

Snip20171218_8

结论

  • CH的复制过程,就是查看自己所在的副本是否有其他节点的数据片,这个过程就是查看ZK里的元数据,如果没有,就开始从其他节点搬迁数据,搬迁速度等于最大带宽

  • 因此,同一份数据,日常至少有2份即可,如果其中一份挂掉,新建一个表,把另一份及时通过过来就好(当然日常保留多份更好)

  • 数据一致性,依赖ZK元数据,即复制引擎在做数据快写入的时候,记录的数据快信息数据


    Snip20171218_11
Snip20171218_13.png
  • 关于故障恢复:

    • 如果是Node3宕机,并且可恢复,重启后无需关注,CH会自动同步
    • 如果Node3宕机,且不可恢复,需要更换新的机器,新增节点,需要注意:
      • ZK路径毫无疑问需要一致,分片名称务必不能一致,因为此时ZK里已经记录了先前Node3节点的路径、副本名称,如果按照Node3上的表结构一模一样创建表,会报错
      • 此时要么删了ZK里Node3原来的信息(风险),要么把副本名称改一下
  • 故障恢复的过程中,的确存在带宽

  • 至此,ClickHouse的复制机制测试完毕,各位老司机,相比HDFS,这个手动挡的感觉怎么样?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342