码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • CH单库数据迁移到读写分离模式


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

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

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

    1. <remote_servers>
    2. <cluster1116>
    3. <shard>
    4. <internal_replication>trueinternal_replication>
    5. <replica>
    6. <host>192.168.0.11host>
    7. <port>9000port>
    8. <user>defaultuser>
    9. <password>111111password>
    10. replica>
    11. <replica>
    12. <host>192.168.0.16host>
    13. <port>9000port>
    14. <user>defaultuser>
    15. <password>111111password>
    16. replica>
    17. shard>
    18. cluster1116>
    19. remote_servers>

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

    1. <zookeeper>
    2. <node index="1">
    3. <host>192.168.0.11host>
    4. <port>2181port>
    5. node>
    6. zookeeper>

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

    1. <macros>
    2. <layer>cluster86layer>
    3. <shard>01shard>
    4. <replica>aa-server11replica>
    5. macros>
    • layer 指定我们的集群标志,或者使用cluster关键字
    • shard 指定的是集群分片信息中的配置,在集群我配置的是01
    • replica 配置当前节点的备份同步节点信息

    2.创建数据库

    create database {new_database_name} ON CLUSTER {cluster_name};

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

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

    目标

    将

    1. ATTACH TABLE t_0addc621
    2. (
    3. `id` String,
    4. `reportName` String,
    5. `updateTime` Nullable(DateTime)
    6. )
    7. ENGINE = MergeTree()
    8. PARTITION BY toYYYYMM(date)
    9. ORDER BY id
    10. SETTINGS index_granularity = 8192

    改成

    1. CREATE TABLE IF NOT EXISTS aa_db.t_0addc621 on cluster chcluster
    2. (
    3. `id` String,
    4. `reportName` String,
    5. `updateTime` Nullable(DateTime)
    6. )
    7. ENGINE = ReplicatedMergeTree('/clickhouse/aa_db/01/t_0addc621','{replica}')
    8. PARTITION BY toYYYYMM(date)
    9. ORDER BY id
    10. 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

  • 相关阅读:
    python基于PHP+MySQL的网上书店网上图书销售系统
    深聊性能测试,从入门到放弃之: Windows系统性能监控(一) 性能监视器介绍及使用。
    【Express连接MySQL数据库】
    第四章黑盒测试
    整理笔记——射频基础知识
    《小狗钱钱》阅读笔记(三)
    使用burp对Tomcat 弱密码爆破
    黑客常见攻击流程
    外发文件怎么保存
    不做静态化,当部署到服务器上的项目刷新出现404【已解决】
  • 原文地址:https://blog.csdn.net/qq_16504067/article/details/125894977
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号