clickhouse-数据迁移-磁盘扩容

  • Post author:
  • Post category:其他


开始上clickhouse的时候比较脑残,服务器上有三个大的盘,每个盘15T, 但是我把最大的几分日志数据都弄到了其中一个盘上了。所以最近磁盘高静,不得不开始考虑数据的重新分布。还好clickhouse提供了比较好的数据移动的支持参照clickhouse的 single page  文档 的 Manipulations with partitions and parts 这个部分。从这方面来讲,clickhouse 让我感觉到 从磁盘文件到服务接口 是衔接的那么自然,  以至于你可以在规则以内,操作磁盘文件实现数据的拷贝、移动、删除、恢复、备份等你想要的手动挡数据库。

转入正题,这次要做的事情目的很简单,就是要实现一个database  DB0中的tables 拆开。把table分散到三个磁盘上去。

首先说明一下如何实现在三个盘上创建三个database DB1 DB2 DB3(我的方法可能比较土,有其他方法欢迎拍砖):

首先直接执行三次创建database的语句:

Create database DB1;
Create database DB2;
Create database DB3;

然后查看你的/Path/to/clickhouse/data/  下面会出现三个空文件夹  DB1 DB2 DB3, 然后把这三个文件夹全部删掉。 创建一个软连接指向/data1/Path/to/DB1/real/directory,  其余数据库一样处理,这样 ok了  在三个数据库的数据 就分不到不同的磁盘上了。

接下来说一下如何从DB0 中把数据转移到其他表中:

以table1 为例说明

1. 停止数据导入;

2.直接拷贝/Path/to/clickhouse/data/DB0/table1 到/Path/to/clickhouse/data/DB1(注意这里是软件连接)下,即数据库DB1下面

3.找到/Path/to/clickhouse/metadata/DB0/table1.sql;  登陆本机的clickhouse  切到DB1数据库,执行一下table1.sql中的sql语句(注意这个sql语句应该是ATTACH操作)。

执行成功即OK了。



版权声明:本文为dong120f原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。