IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Clickhouse同步mysql(基于物化引擎) -> 正文阅读

[大数据]Clickhouse同步mysql(基于物化引擎)

一、Mysql引擎(不推荐)

同步注意事项:1、库名规范不能有“-”,表名规范不能有“-”

CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster]
ENGINE = MySQL('host:port', ['database' | database], 'user', 'password')

参数说明:

  • host:port?— MySQL服务地址
  • database?— MySQL数据库名称
  • user?— MySQL用户名
  • password?— MySQL用户密码

MySQL引擎将远程的MySQL服务器中的表/库映射到ClickHouse中,MySQL数据库引擎会将对其的查询转换为MySQL语法并发送到MySQL服务器中(等同于直接使用mysql)

数据库同步:
CREATE?DATABASE?IF?NOT?EXISTS?mysql_db ENGINE = MySQL ('localhost:3306',?'mysql',?'root',?'123456');

表同步:
CREATE?TABLE?IF?NOT?EXISTS?tmp ENGINE = MergeTree?ORDER?BY?id?AS?SELECT?*?FROM?mysql('localhost:3306','test','user','root','123456')

二、MaterializedMySQL(好用,但是官方还在实验阶段)

CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster]
ENGINE = MaterializedMySQL('host:port', ['database' | database], 'user', 'password') [SETTINGS ...]
[TABLE OVERRIDE table1 (...), TABLE OVERRIDE table2 (...)]

创建ClickHouse数据库,包含MySQL中所有的表,以及这些表中的所有数据。

ClickHouse服务器作为MySQL副本工作。它读取binlog并执行DDL和DML查询

?1、mysql开启binlog和GTID

vim /etc/mysql/my.cnf

[mysqld]
# 指定binlog日志存储位置
#log-bin=/data/logs/mysql/mysql-bin.log  
log-bin=/var/lib/mysql/mysql-bin

# 开启GTID模式
gtid-mode=ON
# 设置主从强一致性
enforce-gtid-consistency=1
# 记录日志
log-slave-updates=1
binlog_format=ROW

2、创建复制管道

#开启物化引擎
SET allow_experimental_database_materialized_mysql=1;
CREATE DATABASE yfc 
ENGINE = MaterializeMySQL('localhost:3306', 'yfc', 'root', '123456') 

优点:通过监听mysql的binlog文件,实现增量更新,提升了效率

数据限制:

1、同步mysql数据之前,mysql的每张表应该都有primary key(如果没有主键,同步会报错)

2、MaterializedMySQL是库级别的引擎,同步的时候会以全库中表数据同步

3、mysql数据同步到clickhouse后会发生索引转换:在ClickHouse表中,MySQL的?PRIMARY KEY?和?INDEX?子句被转换为?ORDER BY?元组

4、mysql在转换为clickhouse表的时候,每张表都会新增两个字段:_sign(1:写入、-1:删除),_version

5、在clickhouse中同步新增时,并没有实现物理意义上的删除,只通过_sign标志字段来实现数据过滤

6、在mysql转化clickhouse时,默认使用的ReplacingMergeTree引擎,保证没有重复数据出现

实例:

#1、查询同步的数据库
show databses;
use yfc;
show tables;

#2、查看建表语句
show create table sku_info;

#3、查询同步的数据
select *,_sign,_version from sku_info;

#4、新增数据(往mysql的sku_info表中插入数据)
INSERT INTO `yfc`.`sku_info`(`id`, `sku_code`) VALUES (3, '10003');

#5、修改数据
UPDATE `yfc`.`ts_store_info` set cust_name = '连调测试' where id= 111;

?

#6、删除数据
DELETE FROM `yfc`.`sku_info` where id= 3;

?

三、mysql表函数

四、datax

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 10:53:18  更:2022-07-03 10:54:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:39:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码