【clickhouse】ClickHouse与MySQL之间实时同步数据(MySQL引擎),将MySQL数据实时同步到clickhouse

这篇具有很好参考价值的文章主要介绍了【clickhouse】ClickHouse与MySQL之间实时同步数据(MySQL引擎),将MySQL数据实时同步到clickhouse。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考1:MySQL(通过该配置实现了实时同步)
参考2:experimental MaterializedMySQL
参考3:[experimental] MaterializedMySQL(包含设置 allow_experimental_database_materialized_mysql)

MySQL引擎用于将远程的MySQL服务器中的表映射到ClickHouse中,并允许您对表进行INSERT和SELECT查询,以方便您在ClickHouse与MySQL之间进行数据交换
MySQL数据库引擎会将对其的查询转换为MySQL语法并发送到MySQL服务器中,因此您可以执行诸如SHOW TABLES或SHOW CREATE TABLE之类的操作。

一、在MySQL数据库中创建一个测试数据库

执行如下语句进行创建,数据库名:test、数据表名:mysql_table

mysql> USE test;
Database changed

mysql> CREATE TABLE `mysql_table` (
    ->   `int_id` INT NOT NULL AUTO_INCREMENT,
    ->   `float` FLOAT NOT NULL,
    ->   PRIMARY KEY (`int_id`));
Query OK, 0 rows affected (0,09 sec)

mysql> insert into mysql_table (`int_id`, `float`) VALUES (1,2);
Query OK, 1 row affected (0,00 sec)

mysql> select * from mysql_table;
+------+-----+
| int_id | value |
+------+-----+
|      1 |     2 |
+------+-----+
1 row in set (0,00 sec)

二、在clickhouse数据库中创建MySQL引擎

语法

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

创建过程

说明:由于刚开始使用的是MaterializeMySQL方式,所以在示例代码中能看到MaterializeMySQL,直接替换为MySQL即可
1、执行如下语句

CREATE DATABASE mysqllzh ENGINE = MaterializeMySQL('192.168.0.176:3306', 'integration_shandong', 'root', '123456')
     SETTINGS
        allows_query_when_mysql_lost=true,
        max_wait_time_when_mysql_unavailable=10000;

2、报错如下
报错信息:MaterializedMySQL is an experimental database engine. Enable allow_experimental_database_materialized_mysql to use it.

详细信息如下:

[root@172 clickhouse-server]# clickhouse-client
ClickHouse client version 23.11.1.2711 (official build).
Connecting to localhost:9000 as user default.
Password for user (default): 
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 23.11.1.

Warnings:
 * Linux is not using a fast clock source. Performance can be degraded. Check /sys/devices/system/clocksource/clocksource0/current_clocksource
 * Linux transparent hugepages are set to "always". Check /sys/kernel/mm/transparent_hugepage/enabled
 * Maximum number of threads is lower than 30000. There could be problems with handling a lot of simultaneous queries.

172.20.219.19 :) CREATE DATABASE mysqllzh ENGINE = MaterializeMySQL('192.168.0.176:3306', 'integration_shandong', 'root', '123456')
     SETTINGS
        allows_query_when_mysql_lost=true,
        max_wait_time_when_mysql_unavailable=10000;


CREATE DATABASE mysqllzh
ENGINE = MaterializeMySQL('192.168.0.176:3306', 'integration_shandong', 'root', '123456')
SETTINGS allows_query_when_mysql_lost = 1, max_wait_time_when_mysql_unavailable = 10000

Query id: f7b41d0d-e9b6-4b4f-a2be-86dae43a1e7c


Elapsed: 0.001 sec. 

Received exception from server (version 23.11.1):
Code: 336. DB::Exception: Received from localhost:9000. DB::Exception: MaterializedMySQL is an experimental database engine. Enable allow_experimental_database_materialized_mysql to use it. (UNKNOWN_DATABASE_ENGINE)

3、解决方案
执行如下命令

SET allow_experimental_database_materialized_mysql=1

mysql实时同步到clickhouse,clickhouse,clickhouse,mysql,数据实时同步,数据库

4、再次执行命令,报错如下
ConnectionFailed: Host '192.168.0.197' is not allowed to connect to this MySQL server ((nullptr):0),. (ASYNC_LOAD_FAILED)
详细信息如下:

172.20.219.19 :) 
CREATE DATABASE mysqllzh ENGINE = MaterializeMySQL('192.168.0.196:3306', 'integration_shandong', 'root', '123456')
     SETTINGS
        allows_query_when_mysql_lost=true,
        max_wait_time_when_mysql_unavailable=10000;

CREATE DATABASE mysqllzh
ENGINE = MaterializeMySQL('192.168.0.196:3306', 'integration_shandong', 'root', '123456')
SETTINGS allows_query_when_mysql_lost = 1, max_wait_time_when_mysql_unavailable = 10000

Query id: 4713dd46-d3c1-44b1-9aa5-9c96e7b33f31


Elapsed: 4.588 sec. 

Received exception from server (version 23.11.1):
Code: 695. DB::Exception: Received from localhost:9000. DB::Exception: Load job 'startup MaterializedMySQL database mysqllzh' failed: Poco::Exception. Code: 1000, e.code() = 1130, mysqlxx::ConnectionFailed: Host '192.168.0.197' is not allowed to connect to this MySQL server ((nullptr):0),. (ASYNC_LOAD_FAILED)

mysql实时同步到clickhouse,clickhouse,clickhouse,mysql,数据实时同步,数据库

5、解决方案
将mysql的root权限设置为允许所有ip地址可以访问,执行如下sql语句

use mysql;
SELECT Host, User FROM mysql.user;
update mysql.user set host='%' where user='root';  
-- GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.197' IDENTIFIED BY '123456' WITH GRANT OPTION;
-- FLUSH PRIVILEGES;

mysql实时同步到clickhouse,clickhouse,clickhouse,mysql,数据实时同步,数据库

6、再次执行命令,报错如下

Received exception from server (version 23.11.1):
Code: 695. DB::Exception: Received from localhost:9000. DB::Exception: Load job 'startup MaterializedMySQL database mysqllzh' failed: Code: 537. DB::Exception: Illegal MySQL variables, the MaterializedMySQL engine requires default_authentication_plugin='mysql_native_password'. (ILLEGAL_MYSQL_VARIABLE),. (ASYNC_LOAD_FAILED)

mysql实时同步到clickhouse,clickhouse,clickhouse,mysql,数据实时同步,数据库
7、解决方案

  • 先查看一下目前default_authentication_plugin的值如下
show variables like '%default_authentication_plugin%';

mysql实时同步到clickhouse,clickhouse,clickhouse,mysql,数据实时同步,数据库
mysql实时同步到clickhouse,clickhouse,clickhouse,mysql,数据实时同步,数据库

  • 通过如下语句设置为mysql_native_password,但是执行后会看到如下错误,因为是只读的,所以 通过修改配置文件来修改
set default_authentication_plugin='mysql_native_password'

mysql实时同步到clickhouse,clickhouse,clickhouse,mysql,数据实时同步,数据库

  • 在配置文件my.ini中增加如下配置内容
[mysqld]
default_authentication_plugin = mysql_native_password

注意:mysql配置文件目录
1.安装路径,例如:C:\Program Files\MySQL\MySQL Server 8.2\bin\mysqld.exe
2.配置目录,例如:“C:\ProgramData\MySQL\MySQL Server 8.2\my.ini”

mysql实时同步到clickhouse,clickhouse,clickhouse,mysql,数据实时同步,数据库

  • 修改后,重启MySQL服务

再次执行命令

show variables like ‘%default_authentication_plugin%’;
mysql实时同步到clickhouse,clickhouse,clickhouse,mysql,数据实时同步,数据库

8、在clickhouse服务器中,再次执行命令,成功了

CREATE DATABASE mysqllzh ENGINE = MaterializeMySQL(‘192.168.0.137:3306’, ‘db’, ‘root’, ‘123456’)
SETTINGS
allows_query_when_mysql_lost=true,
max_wait_time_when_mysql_unavailable=10000;
其实是要用如下的语句
CREATE DATABASE mysql_db ENGINE = MySQL('192.168.0.137:3306', 'test', 'root', '123456')

mysql实时同步到clickhouse,clickhouse,clickhouse,mysql,数据实时同步,数据库

9、继续执行如下sql语句,检查是否存在表test

show tables from mysqllzh

mysql实时同步到clickhouse,clickhouse,clickhouse,mysql,数据实时同步,数据库
10、以下语句,检查是否存在数据
select * from mysqllzh.test

mysql实时同步到clickhouse,clickhouse,clickhouse,mysql,数据实时同步,数据库

在MySQL中新增几条数据后,检查是否能自动同步过来?
最后发现并没有

三、新方法,只是创建MySQL引擎的语句有改变,其余的都没有变(补充)

1、先在mysql中创建数据库和表以及数据

create table mysql_table(
int_id int not null AUTO_INCREMENT,
`float` FLOAT not null,
primary key(int_id)
);

insert into mysql_table(int_id,`float`)VALUES(5,6);
select * from mysql_table;

参考:重要

2、在clickhouse中执行如下语句,创建MySQL引擎(与上一部重复,请用此步骤)

CREATE DATABASE mysql_db ENGINE = MySQL('192.168.0.137:3306', 'test', 'root', '123456')

3、更改mysql数据后,自动同步

mysql实时同步到clickhouse,clickhouse,clickhouse,mysql,数据实时同步,数据库
mysql实时同步到clickhouse,clickhouse,clickhouse,mysql,数据实时同步,数据库文章来源地址https://www.toymoban.com/news/detail-793329.html

到了这里,关于【clickhouse】ClickHouse与MySQL之间实时同步数据(MySQL引擎),将MySQL数据实时同步到clickhouse的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ClickHouse(23)ClickHouse集成Mysql表引擎详细解析

    MySQL引擎可以对存在远程MySQL服务器上的数据执行 SELECT 查询。 调用格式: 调用参数 host:port — MySQL 服务器地址。 database — 数据库的名称。 table — 表名称。 user — 数据库用户。 password — 用户密码。 replace_query — 将 INSERT INTO 查询是否替换为 REPLACE INTO 的标志。如果 replace

    2024年02月19日
    浏览(37)
  • 二百三十二、Kettle——修改MySQL中历史数据为当前系统日期并增量同步到ClickHouse中

    由于一些雷达死了但是又需要有数据进行展示,于是就把这些雷达的历史数据,修改日期为当前日期后,增量同步到ClickHouse中, 1、获取当前日期,并且修改历史数据的create_time字段的日期部分 2、如果采用增量表输出的话,还需要获取ClickHouse表中的最新时间,这样有2个变量

    2024年04月13日
    浏览(37)
  • Clickhouse Engine kafka 将kafka数据同步clickhouse

    根据官方给出的kafka引擎文档,做一个实践记录。 官方地址:https://clickhouse.tech/docs/zh/engines/table-engines/integrations/kafka/ 1、特性介绍 clickhouse支持kafka的表双向同步,其中提供的为Kafka引擎。 其大致情况为如下情况:Kafka主题中存在对应的数据格式,Clickhouse创建一个Kafka引擎表(

    2024年01月16日
    浏览(45)
  • 用ClickHouse 文件表引擎快速查询分析文件数据

    有时我们需要快速查询分析文件数据,正常流程需要在数据库中创建表,然后利用工具或编码导入数据,这时才能在数据库中查询分析。利用ClickHouse文件引擎可以快速查询文件数据。本文首先介绍ClickHouse文件引擎,然后介绍如何快速实现查询数据文件的方案。 文件表引擎在

    2024年02月13日
    浏览(43)
  • 大数据ClickHouse进阶(六):Distributed引擎深入了解

    文章目录 Distributed引擎深入了解 一、简单介绍 二、分布式表插入数据

    2024年01月15日
    浏览(36)
  • 大数据ClickHouse(十四):Integration系列表引擎

    文章目录 Integration系列表引擎 一、HDFS 二、MySQL

    2024年01月17日
    浏览(44)
  • 大数据ClickHouse(五):数据库引擎介绍与实例演示

    文章目录 数据库引擎介绍与实例演示 一、Ordinary默认数据库引擎 二、MySQL数据库引擎

    2024年02月03日
    浏览(48)
  • ClickHouse--04--数据库引擎、Log 系列表引擎、 Special 系列表引擎

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ClickHouse 中支持在创建数据库时指定引擎,目前比较常用的两种引擎为默认引擎 和 MySQL 数据库引擎。 Ordinary 就是 ClickHouse 中默认引擎,如果不指定数据库引擎创建的就是Ordinary 数据库引擎,在这种数据

    2024年02月20日
    浏览(53)
  • 一百一十三、DBeaver——从hive同步数据到clickhouse

    目标:把hive的DM层结果数据导出到clickhouse数据库,试了kettle、sqoop等多种方法都报错,尤其是kettle,搞了大半天发现还是不行。结果目前就只能用DBeaver同步数据。 准备工作:hive和clickhouse中都建好表 第一步,右击clickhouse中的表,选择导入数据 第二步,在源类型和格式中,由

    2024年02月13日
    浏览(53)
  • 火山引擎 ByteHouse:只需 2 个方法,增强 ClickHouse 数据导入能力

    更多技术交流、求职机会,欢迎关注 字节跳动数据平台微信公众号,回复【1】进入官方交流群   作为企业数字化建设的必备要素,易用的数据引擎能帮助企业提升数据使用效率,更好提升数据应用价值,夯实数字化建设基础。 数据导入是衡量 OLAP 引擎性能及易用性的重要标

    2024年02月08日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包