一、集群缩容

1.1 下线节点

步骤:
1.对外停止服务
2.转移数据
3.修改剩余节点配置
4.通知客户端修改节点列表

# 修改90,91服务器配置文件
vim /etc/clickhouse-server/conf.d/metrika.xml 中注释掉第3个shard
<remote_servers>
<clickhouse_cluster_3shards_1replicas>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>192.168.12.91</host>
<port>9000</port>
<user>default</user>
<password>PeQLg45tJcxZk</password>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>192.168.12.90</host>
<port>9000</port>
<user>default</user>
<password>PeQLg45tJcxZk</password>
</replica>
</shard>
<!-- 注销掉
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>192.168.12.88</host>
<port>9000</port>
<user>default</user>
<password>PeQLg45tJcxZk</password>
</replica>
</shard>
-->
</clickhouse_cluster_3shards_1replicas>
</remote_servers>

# 查询集群
aliyun-47-122-26-25 :) select * from system.clusters; SELECT *
FROM system.clusters Query id: 4a1a0d43-9c19-4424-9c87-338b081e8813 ┌─cluster──────────────────────────────┬─shard_num─┬─shard_weight─┬─replica_num─┬─host_name─────┬─host_address──┬─port─┬─is_local─┬─user────┬─default_database─┬─errors_count─┬─slowdowns_count─┬─estimated_recovery_time─┐
│ clickhouse_cluster_3shards_1replicas │ 1 │ 1 │ 1 │ 192.168.12.91 │ 192.168.12.91 │ 9000 │ 1 │ default │ │ 0 │ 0 │ 0 │
│ clickhouse_cluster_3shards_1replicas │ 2 │ 1 │ 1 │ 192.168.12.90 │ 192.168.12.90 │ 9000 │ 0 │ default │ │ 0 │ 0 │ 0 │
└──────────────────────────────────────┴───────────┴──────────────┴─────────────┴───────────────┴───────────────┴──────┴──────────┴─────────┴──────────────────┴──────────────┴─────────────────┴─────────────────────────┘ 2 rows in set. Elapsed: 0.001 sec. # 将下线节点的数据转移到其它节点,迁移方式可以使用以下方式:
clickhouse-client --password
use test_log
:) insert into test_local select * from remote('192.168.12.88','test_log','test_local','default','password'); Query id: 7c2a0285-0323-4498-82b4-1adadc90aa18 Ok. 0 rows in set. Elapsed: 0.007 sec. test_log:库名 default:账号
test_local:表名 password:密码 # 如果数据库过大可以,可以将数据分别存储在其余2台集群上
# 在集群1上执行下面的sql,将集群3的部分数据写到集群3的本地表中
insert into test_log select * from remote('192.168.12.88:9000','test_log','user','password') where id % 2 = 0;
# 在集群2执行下面的sql,将集群3的部分数据写到集群2的本地表中
insert into test_log select * from remote('192.168.12.88:9000','test_log','user','password') where id % 2 = 1;
SELECT *
FROM test_all
Query id: 2a3627db-c64b-45a1-b3be-1868dff84f90
┌─id─┬─name──────┐
│ 1 │ zhangsan │
│ 2 │ lisi │
│ 7 │ yw │
│ 8 │ xc │
│ 5 │ zhangquan │
│ 6 │ lihua │
│ 11 │ bb │
│ 12 │ acca │
└────┴───────────┘
┌─id─┬─name───┐
│ 3 │ wangm │
│ 4 │ lijing │
│ 9 │ cx │
│ 10 │ aa │
│ 13 │ kkkk │
└────┴────────┘
13 rows in set. Elapsed: 0.003 sec.

二、集群扩容

# 原配置
<clickhouse_cluster_3shards_1replicas>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>192.168.12.91</host>
<port>9000</port>
<user>default</user>
<password>PeQLg45tJcxZk</password>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>192.168.12.90</host>
<port>9000</port>
<user>default</user>
<password>PeQLg45tJcxZk</password>
</replica>
</shard>
</clickhouse_cluster_3shards_1replicas> # 新增节点步骤
1.新节点安装clickhouse
2.在新节点新增相关本地表
3.修改旧节点配置
4.通知客户端修改节点列表 # 1.修改配置/etc/clickhouse-server/config.d/metrika.xml,编辑新节点,新增:
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>192.168.12.88</host>
<port>9000</port>
<user>default</user>
<password>PeQLg45tJcxZk</password>
</replica>
</shard> # 2.在新节点新建该集群相关本地表
# 注意和其它节点数据库表面引擎都要一样 # 3.修改集群旧节点的config.xml配置,加上新节点 修改完成后,clickhouse会自动感知到config文件变化,修改的内容会立刻生效 # 4.通知客户端更新节点列表

三、扩容后数据的均匀分布

# 通过设置集群权重,让后面的数据优先写入新节点

        <clickhouse_cluster_3shards_1replicas>
<shard>
<weight>1</weight>
<internal_replication>true</internal_replication>
<replica>
<host>192.168.12.91</host>
<port>9000</port>
<user>default</user>
<password>PeQLg45tJcxZk</password>
</replica>
</shard>
<shard>
<weight>1</weight>
<internal_replication>true</internal_replication>
<replica>
<host>192.168.12.90</host>
<port>9000</port>
<user>default</user>
<password>PeQLg45tJcxZk</password>
</replica>
</shard>
<shard>
<weight>99</weight>
<internal_replication>true</internal_replication>
<replica>
<host>192.168.12.88</host>
<port>9000</port>
<user>default</user>
<password>PeQLg45tJcxZk</password>
</replica>
</shard>
</clickhouse_cluster_3shards_1replicas>

OLAP系列之分析型数据库clickhouse集群扩缩容(四)的更多相关文章

  1. Airbnb的动态kubernetes集群扩缩容

    Airbnb的动态kubernetes集群扩缩容 本文介绍了Airbnb的集群扩缩容的演化历史,以及当前是如何通过Cluster Autoscaler 实现自定义扩展器的.最重要的经验就是Airbnb ...

  2. 悠星网络基于阿里云分析型数据库PostgreSQL版的数据实践

    说到“大数据”,当下这个词很火,各行各业涉及到数据的,目前都在提大数据,提数据仓库,数据挖掘或者机器学习,但同时另外一个热门的名词也很火,那就是“云”.越来越多的企业都在搭建属于自己的云平台,也有一些 ...

  3. 回首2018 | 分析型数据库AnalyticDB: 不忘初心 砥砺前行

    题记 分析型数据库AnalyticDB(下文简称ADB),是阿里巴巴自主研发.唯一经过超大规模以及核心业务验证的PB级实时数据仓库.截止目前,现有外部支撑客户既包括传统的大中型企业和政府机构,也包括众 ...

  4. AnalyticDB - 分析型数据库

    https://yq.aliyun.com/teams/31?spm=5176.7937365.1120968.ee1.78505692UL9DhG 分析型数据库(AnalyticDB)是一种高并发低 ...

  5. 什么是分析型数据库PostgreSQL版

    分析型数据库PostgreSQL版(原HybridDB for PostgreSQL)为您提供简单.快速.经济高效的 PB 级云端数据仓库解决方案.分析型数据库PostgreSQL版 兼容 Green ...

  6. 阿里下一代云分析型数据库AnalyticDB入选Forrester云化数仓象限

    前言 近期, 全球权威IT咨询机构Forrester发布"The Forrester Wave: CloudData Warehouse Q4 2018"研究报告,阿里巴巴分析型数 ...

  7. 阿里巴巴下一代云分析型数据库AnalyticDB入选Forrester Wave™ 云数仓评估报告 解读

    前言近期, 全球权威IT咨询机构Forrester发布"The Forrester WaveTM: CloudData Warehouse Q4 2018"研究报告,阿里巴巴分析型 ...

  8. 针对多类型数据库,集群数据库的有序GUID

    一.背景 常见的一种数据库设计是使用连续的整数为做主键,当新的数据插入到数据库时,由数据库自动生成.但这种设计不一定适合所有场景. 随着越来越多的使用Nhibernate.EntityFramewor ...

  9. mongo 3.4分片集群系列之二:搭建分片集群--哈希分片

    这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建 ...

  10. mongo 3.4分片集群系列之一:浅谈分片集群

    这篇为理论篇,稍后会有实践篇. 这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mong ...

随机推荐

  1. redis安装启动脚本

    #!/bin/bash # sudo yum install -y gcc # sudo yum install -y ruby build-essential BASE=/usr/local ps ...

  2. 不到2000字,轻松带你搞懂STM32中GPIO的8种工作模式

    大家好,我是知微! 学习过单片机的小伙伴对GPIO肯定不陌生,GPIO (general purpose input output)是通用输入输出端口的简称,通俗来讲就是单片机上的引脚. 在STM32 ...

  3. #换根dp#洛谷 2986 [USACO10MAR]Great Cow Gathering G

    题目 分析 处理出所有点到根节点的答案,然后换根依次求最小值 代码 #include <cstdio> #include <cctype> #define rr registe ...

  4. java中DelayQueue的使用

    目录 简介 DelayQueue DelayQueue的应用 总结 java中DelayQueue的使用 简介 今天给大家介绍一下DelayQueue,DelayQueue是BlockingQueue ...

  5. 【FAQ】HarmonyOS SDK 闭源开放能力 —Asset Store Kitx

    1.问题描述 使用关键资产API需要配置SystemCapability.Security.Asset,但不知道syscap.json文件应该配置在哪里,文档也没找到. 解决方案 新增关键资产等API ...

  6. std::thread 四:异步(async)

    *:如果 std::async 中传递参数 std::lunnch::deferred ,就需要等待调用 get() 或者 wait() 才会执行,并且代码非子线程运行,而是在主线程中执行 #incl ...

  7. 发送邮件时,报错:AttributeError: 'list' object has no attribute 'encode'

    在使用腾讯企业邮箱发送邮件时出现报错:AttributeError: 'list' object has no attribute 'encode' 原因:收件人不能用列表存储数据,需要转为字符串,以 ...

  8. PMF源解析技术在大气颗粒物与VOCs研究中的创新应用

    目前,大气颗粒物和臭氧污染成为我国亟待解决的环境问题.颗粒物和臭氧污染不仅对气候和环境有重要影响,而且对人体健康有严重损害.而臭氧的前体物之一为挥发性有机物(VOCs).为了高效.精准地治理区域大气颗 ...

  9. git worktree与分支依赖隔离

    git worktree介绍 git worktree 是 Git 命令,用于管理多分支工作区. 使用场景: 同时维护不同分支,隔离分支依赖差异:从原有项目开辟一个分支作为另一个新项目,当两个项目依赖 ...

  10. WPS HW 漏洞 学习

    复现过程 2023 年 HW 出现 WPS 0day POC 影响版本: WPS Office 2023个人版<11.1.0.15120 WPS Office 2019企业版<11.8.2 ...