浅析mysql迁移到clickhouse的5种方法_Mysql_脚本之家


本站和网页 https://www.jb51.net/article/165908.htm 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

浅析mysql迁移到clickhouse的5种方法_Mysql_脚本之家
脚本之家
服务器常用软件
手机版
投稿中心
关注微信
快捷导航
软件下载
android
MAC
驱动下载
字体下载
DLL
源码下载
PHP
ASP.NET
ASP
JSP
软件编程
C#
JAVA
C 语言
Delphi
Android
网络编程
PHP
ASP.NET
ASP
JavaScript
在线工具
CSS格式化
JS格式化
Html转化为Js
数据库
MYSQL
MSSQL
oracle
DB2
MARIADB
CMS
PHPCMS
DEDECMS
帝国CMS
WordPress
常用工具
PHP开发工具
python
Photoshop
必备软件
网站首页
网页制作
网络编程
脚本专栏
脚本下载
数据库
服务器
电子书籍
操作系统
网站运营
平面设计
其它
媒体动画
电脑基础
硬件教程
网络安全
MsSql
Mysql
mariadb
oracle
DB2
mssql2008
mssql2005
SQLite
PostgreSQL
MongoDB
Redis
Access
数据库文摘
数据库其它
您的位置:首页 → 数据库 → Mysql → mysql迁移clickhouse
浅析mysql迁移到clickhouse的5种方法
更新时间:2019年07月22日 09:40:55 作者:安家
这篇文章主要介绍了mysql迁移到clickhouse的5种方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
数据迁移需要从mysql导入clickhouse, 总结方案如下,包括clickhouse自身支持的三种方式,第三方工具两种。
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增删数据进行验证。
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函数对数据进行处理,比如
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/
不支持自定义列,参考资料里的博主写的 ENGIN=MergeTree 测试失败。
可以理解成 create table 和 insert into select 的组合
Altinity/clickhouse-mysql-data-reader
Altinity公司开源的一个python工具,用来从mysql迁移数据到clickhouse(支持binlog增量更新和全量导入),但是官方readme和代码脱节,根据quick start跑不通。
## 创建表
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支持实时,也支持离线)
csv
## 忽略建表
clickhouse-client \
-h host \
--query="INSERT INTO [db].table FORMAT CSV" < test.csv
但是如果源数据质量不高,往往会有问题,比如包含特殊字符(分隔符,转义符),或者换行。被坑的很惨。
自定义分隔符, --format_csv_delimiter="|"
遇到错误跳过而不中止, --input_format_allow_errors_num=10 最多允许10行错误, --input_format_allow_errors_ratio=0.1 允许10%的错误
csv 跳过空值(null) ,报 Code: 27. DB::Exception: Cannot parse input: expected , before: xxxx: (at row 69) ERROR: garbage after Nullable(Date): "8,002<LINE FEED>0205" sed ' :a;s/,,/,\\N,/g;ta' |clickhouse-client -h host --query "INSERT INTO [db].table FORMAT CSV" 将 ,, 替换成 ,\N,
python clean_csv.py --src=src.csv --dest=dest.csv --chunksize=50000 --cols --encoding=utf-8 --delimiter=,
clean_csv.py参考我另外一篇032-csv文件容错处理
streamsets
streamsets支持从mysql或者读csv全量导入,也支持订阅binlog增量插入,参考我另外一篇 025-大数据ETL工具之StreamSets安装及订阅mysql binlog 。
本文只展示从mysql全量导入clickhouse
本文假设你已经搭建起streamsets服务
启用并重启服务
上传mysql和clickhouse的jdbc jar和依赖包
便捷方式,创建pom.xml,使用maven统一下载
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.anjia</groupId>
<artifactId>demo</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>demo</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>ru.yandex.clickhouse</groupId>
<artifactId>clickhouse-jdbc</artifactId>
<version>0.1.54</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
</dependencies>
</project>
如果本地装有maven,执行如下命令
mvn dependency:copy-dependencies -DoutputDirectory=lib -DincludeScope=compile
所有需要的jar会下载并复制到lib目录下
然后拷贝到 streamsets /opt/streamsets-datacollector-3.9.1/streamsets-libs-extras/streamsets-datacollector-jdbc-lib/lib/ 目录下
重启streamsets服务
总结
以上所述是小编给大家介绍的mysql迁移到clickhouse的5种方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
您可能感兴趣的文章:MySQL数据库迁移data文件夹位置详细步骤Mysql的数据库迁移到另一个机器上的方法详解oracle数据库迁移到MySQL的方法总结mysql数据库迁移至Oracle数据库MySQL数据库迁移快速导出导入大量数据mysql Innodb表空间卸载、迁移、装载的使用方法关于MySQL数据迁移--data目录直接替换注意事项的详解mysql5.5数据库data目录迁移方法详解mysql 备份与迁移 数据同步方法一次mysql迁移的方案与踩坑实战记录
mysql
迁移
clickhouse
相关文章
mysql优化取随机数据慢的方法mysql取随机数据慢,怎么办?下面小编与大家一起来看看mysql取随机数据慢优化的过程。
2013-11-11
mysql(master/slave)主从复制原理及配置图文详解这篇文章主要介绍了mysql(master/slave)主从复制原理及配置图文详解,以前脚本之家小编发过相关的内容,但这么好的非常少见特分享一下,需要的朋友可以参考下 2016-05-05
浅谈MySQL中的子查询优化技巧这篇文章主要介绍了浅谈MySQL中的子查询优化技巧,子查询的优化是MySQL诸多优化方法中的基本,需要的朋友可以参考下 2015-05-05
mysql下普通索引和唯一索引的效率对比昨天有位同事说,他的网页查询过程中发现普通索引和唯一索引的效率是有差别的,普通索引比唯一索引快 2010-12-12
CentOS7.x卸载与安装MySQL5.7的操作过程及编码格式的修改方法这篇文章主要介绍了CentOS7.x卸载与安装MySQL5.7的操作过程及编码格式的修改方法,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 2019-05-05
MySQL8.0中的降序索引这篇文章主要介绍了MySQL8.0中的降序索引的相关知识,帮助大家更好的理解和使用MySQL8.0的新特性,感兴趣的朋友可以了解下 2020-10-10
重置MySQL中表中自增列的初始值的实现方法这篇文章主要介绍了重置MySQL中表中自增列的初始值的实现方法的相关资料,需要的朋友可以参考下 2017-03-03
Mysql存储引擎特性总结这篇文章主要介绍了Mysql存储引擎特性总结,同时总结了最常用的2种存储引擎的特性,以及各引擎的适用环境,需要的朋友可以参考下 2014-07-07
在IntelliJ IDEA中使用Java连接MySQL数据库的方法详解这篇文章主要介绍了在IntelliJ IDEA中使用Java连接MySQL数据库的方法详解,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 2020-10-10
浅析drop user与delete from mysql.user的区别本篇文章是对drop user与delete from mysql.user的区别进行了详细的分析介绍,需要的朋友参考下 2013-06-06
最新评论
大家感兴趣的内容
1mysql安装图解 mysql图文安装教程(详细说明)2Can''''t connect to MySQL serv3windows下MySQL5.6版本安装及配置过程附有截图和4Mysql字符串截取函数SUBSTRING的用法说明5MySQL提示:The server quit withou6MySQL创建用户与授权方法7mysql之TIMESTAMP(时间戳)用法详解8MySQL——修改root密码的4种方法(以windows为9MySQL日期数据类型、时间类型使用总结10MySQL 的CASE WHEN 语句使用说明
最近更新的内容
MySQL中Decimal类型和Float Double的区别(详解)Mysql快速插入千万条数据的实战教程mysql 修改密码和设置允许远程登录MAC系统中添加MYSQL开机启动的方法mysql installer web community 5.7.21.0MYSQL必知必会读书笔记第十和十一章之使用函数处理数据MySQL 性能优化的最佳20多条经验分享Mysql数据库中子查询的使用在Mysql数据库里通过存储过程实现树形的遍历MySQL 密码设置
常用在线小工具
微信
投稿
脚本任务
在线工具
关注微信公众号
关于我们 -
广告合作 -
联系我们 -
免责声明 -
网站地图 -
投诉建议 -
在线投稿
CopyRight 2006-2021 JB51.Net Inc All Rights Reserved. 脚本之家 版权所有