一、集群缩容

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. 【虚幻引擎】DTWebSocketServer 蓝图创建WebSocket服务器插件使用说明

    本插件可以使用蓝图创建WebSocket服务器,并监听响应数据. 下载地址在文章最后. 1. 节点说明 Create Web Socket Server – 创建WebSocket服务器对象并开启监听 ...

  2. Oracle 章节编号排序

    测试代码 CREATE TABLE TEST (CH_CODE VARCHAR2(10)); INSERT INTO TEST (CH_CODE) VALUES ('1.1'); INSERT INT ...

  3. ATSS : 目标检测的自适应正负anchor选择,很扎实的trick | CVPR 2020

    论文指出one-stage anchor-based和center-based anchor-free检测算法间的差异主要来自于正负样本的选择,基于此提出ATSS(Adaptive Training ...

  4. KingbaseES V8R6 备份恢复案例 -- 自定义表空间指定目录恢复

    ​ 案例说明: KingbaseES V8R6在通过sys_rman执行物理备份恢复时,可以通过参数'--kb1-path',指定恢复的数据(data)目录,但如果原备份中包含自定义表空间时,需要建立 ...

  5. OGNL表达式注入分析

    OGNL基础 依赖 <dependency> <groupId>ognl</groupId> <artifactId>ognl</artifact ...

  6. Scala 简单分词求和

    1 package chapter07 2 3 object Test17_CommonWordCount { 4 def main(args: Array[String]): Unit = { 5 ...

  7. C++简单实现vector

    向量 向量是序列容器,表示可以更改大小的数组. 就像数组一样,向量对其元素使用连续的存储位置,这意味着也可以使用指向其元素的常规指针上的偏移量来访问其元素,并且与数组一样高效.但与数组不同的是,它们的 ...

  8. ArrayList,LinkedList,Vector三者的区别

    List 中元素是有序的,元素可以重复,因为该集合体有索引 ArrayList: 底层数据结构是数组,查询快,增删慢. 线程不安全,效率高. 当元素放满了后,默认以原长度的 50%+1 的长度加长集合 ...

  9. 2024年:如何根据项目具体情况选择合适的CSS技术栈

    2024年:如何根据项目具体情况选择合适的CSS技术栈 (请注意,这是一篇主观且充满个人技术偏好的文章) 方案一: antd/element ui/类似竞品 适合情形: 项目没有设计师 or 大部分人 ...

  10. #轮廓线dp,模型转换#洛谷 3226 [HNOI2012]集合选数

    题目 问有多少个集合 \(S\) 是 \([1,n]\) 的子集, 并且 \(\forall a,b\in S,a|b\),满足 \(\frac{b}{a}\neq \{2,3\}\) 分析 可以发现 ...