栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

CH单库数据迁移到读写分离模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CH单库数据迁移到读写分离模式

1.安装两个clickhouse,两个clickhouse的配置如下(一般情况下只需要再新安装一个就行)

在/etc/clickhouse-server/config.xml配置文件中,在remote_servers节点增加配置如下图所示(两个clickhouse实例都是一样的)

下面配置的为一个shard分片,第一个分片中有两个replica副本


     
         
            true
            
               192.168.0.11
               9000
               default
               111111
            
            
               192.168.0.16
               9000
               default
               111111
            
         
      

配置zookeeper(两个clickhouse实例都是一样的)


      
         192.168.0.11
         2181
      

配置弘,每个实例上,都填写自己的机器名


  cluster86
  01
  aa-server11
  • layer 指定我们的集群标志,或者使用cluster关键字
  • shard 指定的是集群分片信息中的配置,在集群我配置的是01
  • replica 配置当前节点的备份同步节点信息

2.创建数据库

create database {new_database_name} ON CLUSTER {cluster_name};

上面语句中{new_database_name} 替换成新的数据库名称,{cluster_name}替换成集群名称

通过上面命令创建了数据库后,集群的两个节点就都有这个数据库了(执行命令的节点新建数据库后将命令写入ZK中,另外一个节点从ZK中获取信息创建数据库)

目标

将

ATTACH TABLE t_0addc621
(
    `id` String,
    `reportName` String,
    `updateTime` Nullable(DateTime)
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(date)
ORDER BY id
SETTINGS index_granularity = 8192

改成

CREATE TABLE IF NOT EXISTS aa_db.t_0addc621 on cluster chcluster
(
    `id` String,
    `reportName` String,
    `updateTime` Nullable(DateTime)
)
ENGINE = ReplicatedMergeTree('/clickhouse/aa_db/01/t_0addc621','{replica}')
PARTITION BY toYYYYMM(date)
ORDER BY id
SETTINGS index_granularity = 8192

然后执行创建到数据库中

3.迁移表

单节点集群的建表语句用的表引擎为MergeTree,读写分离的表引擎要变成ReplicatedMergeTree:

ENGINE = ReplicatedMergeTree('/clickhouse/aa_db/01/t_0addc621','{replica}')

  • '/clickhouse/aa_db/01/t_0addc621' shard_name 分片名称,集群所有同一个分片的节点的配置要一样,不同的表一定要不同。
  1. /clickhouse 默认的路径
  2. /aa_db库名
  3. /01 同一个分片内的所有机器应该保持相同 (share,如果在上面弘中配置了shard参数,也可以用{shard})
  4. /t_0addc621 表名
  • '{replica}' replica_name 副本名称,每一个节点都要不同,一般在上面弘中配置了replica参数,使用{replica}就行

3.1获取单节点中全部的建表语句放入一个文件夹中

可以从ch的metadata文件夹/data/clickhouse/metadata获取,也可以直接在DBeaver连接单节点库获取表sql

3.2linux服务器(之前的单节点的那一台)新建一个文件夹,并上传文件

[root@dc-server08 metadata]# mkdir -p /data/chtemp/metadata

[root@dc-server08 metadata]# cd /data/chtemp/metadata

上传文件到文件夹下面

 

3.3 修改ch_table_change.sh,并执行,将全部的建表sql语句修改成带集群的、引擎为ReplicatedMergeTree的

 [root@dc-server08 metadata]# vi ch_table_change.sh

保存后执行

 [root@dc-server08 metadata]# ./ch_table_change.sh

3.4 跑sql建表

 [root@dc-server08 metadata]# for file in `ls | grep .sql`;do clickhouse-client --user default --password 1111111 -d aa_db --multiquery < $file;done

4.迁移数据:修改ch_insert.sh,并执行

[root@dc-server08 metadata]# vim ./ch_insert.sh

 

保存后执行

[root@dc-server08 metadata]# ./ch_insert.sh

执行完成后集群的两个节点的表就都有数据了

参考文档

ClickHouse ReplicatedMergeTree家族引擎_七年·的博客-CSDN博客_clickhouse replicatedmergetree

ClickHouse Replicated*MergeTree复制表原理、Distributed分布式表原理_我叫周利东的博客-CSDN博客_clickhouse复制表

ClickHouse和他的朋友们(13)ReplicatedMergeTree表引擎及同步机制_老叶茶馆_的博客-CSDN博客

ClickHouse实战-ReplicatedMergeTree分布式表 - 腾讯云开发者社区-腾讯云

clickhouse-client命令行参数及常用案例_upupfeng的博客-CSDN博客_clickhouse-client

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1020645.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号