美文网首页
ClickHouse副本同步验证及副本添加

ClickHouse副本同步验证及副本添加

作者: 淡淡的小番茄 | 来源:发表于2023-01-03 15:18 被阅读0次

背景

我们部署方式比较简单,采用的是一分片,多副本的机制。使用副本表进行数据的同步。由于整体查询的压力比较大,为了提升TPS,打算在此基础上增加1-2个副本。由于数据量比较大(百亿规模),为了保证方案的可靠性,特验证下CH的副本同步机制。一分片两副本,一共两台机器:node1和node2。

数据的准备

使用Star Schema Benchmark来进行测试集的生成。

编译 dbgen:

$ git clone git@github.com:vadimtk/ssb-dbgen.git

$ cd ssb-dbgen

$ make

使用-s 100dbgen 将生成 6 亿行数据(67GB), 如果使用-s 1000它会生成 60 亿行数据(这需要很多时间))

$ ./dbgen -s 1000 -T c

$ ./dbgen -s 1000 -T l

创建表:

CREATE TABLE lineorder

(

   LO_ORDERKEY            UInt32,

    LO_LINENUMBER          UInt8,

    LO_CUSTKEY              UInt32,

    LO_PARTKEY              UInt32,

    LO_SUPPKEY              UInt32,

    LO_ORDERDATE            Date,

    LO_ORDERPRIORITY        LowCardinality(String),

    LO_SHIPPRIORITY        UInt8,

    LO_QUANTITY            UInt8,

    LO_EXTENDEDPRICE        UInt32,

    LO_ORDTOTALPRICE        UInt32,

    LO_DISCOUNT            UInt8,

    LO_REVENUE              UInt32,

    LO_SUPPLYCOST          UInt32,

    LO_TAX                  UInt8,

    LO_COMMITDATE          Date,

    LO_SHIPMODE            LowCardinality(String)

)ENGINE = ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/lineorder','{replica}') PARTITION BY toYear(LO_ORDERDATE) ORDER BY (LO_ORDERDATE, LO_ORDERKEY);

CREATE TABLE customer

(

        C_CUSTKEY      UInt32,

        C_NAME          String,

        C_ADDRESS      String,

        C_CITY          LowCardinality(String),

        C_NATION        LowCardinality(String),

        C_REGION        LowCardinality(String),

        C_PHONE        String,

        C_MKTSEGMENT    LowCardinality(String)

)ENGINE = ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/customer','{replica}') ORDER BY (C_CUSTKEY);

导入数据:

clickhouse-client -h node1 --port 9000 --query "INSERT INTO lineorder FORMAT CSV" < lineorder.tbl

clickhouse-client -h node2 --port 9000 --query "INSERT INTO customer FORMAT CSV" < customer.tbl

副本表同步

直接在副本节点上创建副本表即可,我们在node2上执行建表语句后。CH会基于ZK做数据同步的。这块大家可以根据自己的数据量、机器配置情况来决定是并行还是串行来处理。如果数据量比较大的情况,建议还是一张表一张表的同步。可以通过查询系统库的`system`.replication_queue表来查看同步的进度:

同步的进度完全取决于你机器的配置及网络带宽。我们的虚拟机,整体的性能较差,下面是同步时候的磁盘监控信息:

整体磁盘写入的速率在20M/S左右,性能还是非常一般的。

添加新副本

在node3上,搭建CH示例,作为第三个副本。执行如下的操作:

1、node3上将副本信息配置完整(1分片3副本),搭建好后执行如下命令启动ch。

systemctl start clickhouse-server.service

配置好的集群信息如下:

2、将node1和node2上的集群配置信息修改为与node3一致。

无需重启CH实例,CH会自动加载配置。

3、然后在节点node3上,执行建表语句。

CH会自动将数据同步到node3上,作为第三份副本。

相关文章

  • ClickHouse副本同步验证及副本添加

    背景 我们部署方式比较简单,采用的是一分片,多副本的机制。使用副本表进行数据的同步。由于整体查询的压力比较大,为了...

  • ClickHouse——数据副本

    前言 集群是副本和分片的基础,它将 clickhouse 的服务拓扑由单节点延伸到多个节点。 ClickHouse...

  • kafka运维事故处理一则

    问题的起因 最近做一次Kafka的副本数调整,从双副本调整为三副本时出现了一次副本不同步的问题,我们使用的kafk...

  • ClickHouse和Zookeeper

    背景 ClickHose使用Zookeeper的地方还是比较多的,像副本leader的选举、副本表写入的同步,以及...

  • MongoDB副本集相关命令

    MongoDB副本集相关命令 1 - 配置副本集 启动相关mongod进程配置文件需要添加 replSet=xxx...

  • Kafka系列四-副本同步机制

    Kafka系列四-副本同步机制# Kafka副本 Kafka中主题的每个Partition有一个预写式日志文件,每...

  • 【clickhouse专栏】单机版的安装与验证

    《clickhouse专栏》第三节内容,先安装一个单机版的clickhouse,是后续学习多副本或者分布式集群安装...

  • MongoDB副本集详解-角色与选举

    本人博客同步发表,排版更佳 副本集简介 Mongodb副本集由一组Mongod实例(进程)组成,包含一个Prima...

  • redis高可用

    1.有备无患-主从 redis单副本 Redis单副本,采用单个Redis节点部署架构,没有备用节点实时同步数据,...

  • mogondb

    Mongodb副本集副本集是什么 – MongoDB 复制是将数据同步在多个服务器的过程。 – 复制提供了数据的冗...

网友评论

      本文标题:ClickHouse副本同步验证及副本添加

      本文链接:https://www.haomeiwen.com/subject/xihlcdtx.html