MySQL迁移到ClickHouse方案

MySQL迁移到ClickHouse方案

 

这篇文章主要介绍了mysql迁移到clickhouse的几种方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下。数据迁移需要从mysql导入clickhouse, 总结方案如下,包括clickhouse自身支持的方式及第三方工具迁移方案。

 

ClickHouse同步建表

1

2

3

4

5

6

7

8

9

create table engin mysql

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]

(

 name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1],

 name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [TTL expr2],

 ...

 INDEX index_name1 expr1 TYPE type1(...) GRANULARITY value1,

 INDEX index_name2 expr2 TYPE type2(...) GRANULARITY value2

) ENGINE = MySQL('host:port', 'database', 'table', 'user', 'password'[, replace_query, 'on_duplicate_clause']);

官方文档: https://clickhouse.yandex/docs/en/operations/table_engines/mysql/

注意,实际数据存储在远端mysql数据库中,可以理解成外表。

可以通过在mysql增删数据进行验证。

1

2

3

4

5

6

7

8

9

10

#insert into select方法

insert into select from

 

-- 先建表

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]

(

 name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],

 name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],

 ...

) ENGINE = engine

-- 导入数据

 

INSERT INTO [db.]table [(c1, c2, c3)] select 列或者* from mysql('host:port', 'db', 'table_name', 'user', 'password')

可以自定义列类型,列数,使用clickhouse函数对数据进行处理,比如

1

2

3

4

5

6

7

select toDate(xx) from mysql("host:port","db","table_name","user_name","password")

create table as select from

CREATE TABLE [IF NOT EXISTS] [db.]table_name

ENGINE =Log

AS

SELECT *

FROM mysql('host:port', 'db', 'article_clientuser_sum', 'user', 'password')

网友文章: http://jackpgao.github.io/2018/02/04/ClickHouse-Use-MySQL-Data/

 

Altinity开源工具

不支持自定义列,参考资料里的博主写的 ENGIN=MergeTree 测试失败。

可以理解成 create table 和 insert into select 的组合

Altinity/clickhouse-mysql-data-reader

Altinity公司开源的一个python工具,用来从mysql迁移数据到clickhouse(支持binlog增量更新和全量导入),但是官方readme和代码脱节,根据quick start跑不通。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

## 创建表

clickhouse-mysql \

 --src-host=127.0.0.1 \

 --src-user=reader \

 --src-password=Qwerty1# \

 --table-templates-with-create-database \

 --src-table=airline.ontime > create_clickhouse_table_template.sql

## 修改脚本

vim create_clickhouse_table_template.sql

## 导入建表

clickhouse-client -mn < create_clickhouse_table_template.sql

## 数据导入

clickhouse-mysql \

 --src-host=127.0.0.1 \

 --src-user=reader \

 --src-password=Qwerty1# \

 --table-migrate \

 --dst-host=127.0.0.1 \

 --dst-table=logunified \

 --csvpool

官方文档: https://github.com/Altinity/clickhouse-mysql-data-reader#mysql-migration-case-1—migrate-existing-data

 

注意,上述三种都是从mysql导入clickhouse,如果数据量大,对于mysql压力还是挺大的。下面介绍两种离线方式(streamsets支持实时,也支持离线)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值