一、集群缩容

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. .NET开源、免费、强大的交互式绘图库

    前言 今天大姚给大家分享一款.NET开源(采用MIT许可证).免费.强大的交互式绘图库,该库能够轻松地实现大型数据集的交互式显示.使用几行代码即可快速创建折线图.柱状图.饼图.散点图等不同类型的图表: ...

  2. Shell脚本关闭Nginx进程

    [root@testapp ~]# ps -ef | grep nginx root 25265 25216 0 09:22 pts/0 00:00:00 grep --color=auto ngin ...

  3. 添加AvalonEdit控件到WinForm

    public frmTest() { InitializeComponent(); ElementHost host = new ElementHost(); host.Size = new Size ...

  4. 聊聊微信小程序的隐私协议开发

    为什么需要隐私协议? 小程序隐私授权弹窗FAQ官方:https://developers.weixin.qq.com/community/develop/doc/00000ebac5c3e042384 ...

  5. multisim中常见的显示器

    multisim中常见的显示器 1.实验原理 multisim中做实验仿真一般需要各种各样的仿真器来模拟实验结果.这里列举几种比较常见的显示器以便后面快速选择. 2.实验操作 (1)LED[二极管] ...

  6. RSA进阶(一)

    本篇为RSA进阶篇,继RSA入门 [RSA3]P1(扩展欧几里得) 题目 from Crypto.Util.number import * flag = b'******' m1 = bytes_to ...

  7. async/await 与console(C#)

    问题: 上一篇async/await 致WPF卡死问题(https://www.cnblogs.com/stephen2023/p/17725159.html),介绍主线程阻塞,async/await ...

  8. wordpress搭建个人博客(阿里云服务器、宝塔面板、Elementor)

    wordpress搭建个人博客(阿里云服务器.宝塔面板.Elementor) 笔记根据bilibili比得汪视频教程整理 https://www.bilibili.com/video/BV1Vg411 ...

  9. BeautifulSoup 库 和 re 库 解析腾讯视频电影

    1 import requests 2 import json 3 from bs4 import BeautifulSoup #网页解析获取数据 4 import sys 5 import re 6 ...

  10. System.gc 之后到底发生了什么 ?

    本文基于 OpenJDK17 进行讨论 在 JDK NIO 针对堆外内存的分配场景中,我们经常会看到 System.gc 的身影,比如当我们通过 FileChannel#map 对文件进行内存映射的时 ...