clickhouse数据转储方法&思路
背景:
# clickhouse数据库体量日益增长,需要将历史久远log数据转储至其它地方,保留近两年数据。
# 将clickhouse数据库23年前历史数据转储其它主机中去,仅保留23年之后的数据供查询。
1、在备份机clickhouse数据库建源表相同的表
2、使用remote函数将23年之前的数据迁移过来
insert into 目的数据库.表 select * from remote('数据源的ip',源数据库.表,'登录名','登录密码') WHERE uploadTime <= '2023-01-01 00:00:00';
3、在源主机clickhouse上新建一个相同的新表
4、使用remote函数将23年之后的数据插入到新表
insert into 目的数据库.新表 select * from remote('数据源的ip',源数据库.旧表,'登录名','登录密码') WHERE uploadTime >= '2023-01-01 00:00:00';
5、将旧表改名,将新表重命名为旧表名称,使其调用新表中23年后的数据。
RENAME TABLE 旧表 TO 旧表_bak;
RENAME TABLE 新表 TO 旧表;
删除旧表
#验证没问题后删除旧表。
查看数据量:
SELECT count(1) from 库.表 WHERE uploadTime <= '2023-01-01 00:00:00'
1、按时间条件匹配分批次删除数据:
ALTER TABLE 库.旧表 DELETE WHERE uploadTime <= '2023-01-01 00:00:00'
2、去除删除操作后留下的数据文件碎片,腾出空间:
OPTIMIZE TABLE 库.旧表;