开始上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了。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信