【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

在这里插入图片描述

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)

在这里插入图片描述

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;

在这里插入图片描述

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)

在这里插入图片描述
7、解决方案

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

  • 在配置文件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服务

再次执行命令

show variables like ‘%default_authentication_plugin%’;
在这里插入图片描述

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')

在这里插入图片描述

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

show tables from mysqllzh

在这里插入图片描述
10、以下语句,检查是否存在数据
select * from mysqllzh.test

在这里插入图片描述

在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数据后,自动同步

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/236937.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

亚信科技AntDB携手蓝凌软件,助推企业数字化办公转型升级

随着企业数字化转型的深入,企业对于协同办公、移动门户、数字运营、智能客服等方面的需求越来越高,数智化正成为催生新动能和新优势的关键力量。数字化的办公平台可以帮助企业实现各类信息、流程的集中化、数字化和智能化管理,为企业管理者提…

2-7、转义字符

语雀原文链接 文章目录 1、转义字符2、\r\n的遗留问题3、System 1、转义字符 \r 回车,将光标定位在当前行的开头,不会跳到下一行。return\n 换行符,将光标定位在下一行的开头。newline 2、\r\n的遗留问题 我们在平时使用电脑时&#xff0c…

Mybatis是如何进行分页的?

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一份大厂面试资料《史上最全大厂面试题》,Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

WRF--修改geo_em.d01.nc中的变量,保持其他信息不变

WRF–修改geo_em.d01.nc中的变量,保持其他信息不变 首先呢,找到编译WRF过程中自带的读取nc的一个fortran函数:read_wrf_nc.f90 可以使用Linux命令: find / -name read_wrf_nc.f90 找到之后,修改这个文件&#xff0c…

镜头驱动芯片选型 GC6236,GC6208,GC6209的型号分析,多应用于摄像机镜头,家庭监控云台驱动等产品中

国产芯片GC6236,GC6208,GC6209 为5V摄像机镜头驱动芯片,电压范围在3~5.5(V),最大持续电流可达0.8(A)最高工作温度在-40~100之间。其特点都具有5V多通道,低噪步进电机驱动和霍尔自动光圈驱动等。可应用在摄像机镜头,家庭…

【SpringBoot教程】SpringBoot 统一异常处理(附核心工具类-ErrorInfoBuilder)

作者简介:大家好,我是撸代码的羊驼,前阿里巴巴架构师,现某互联网公司CTO 联系v:sulny_ann(17362204968),加我进群,大家一起学习,一起进步,一起对抗…

如何通过SPI控制Peregrine的数控衰减器

概要 Peregrine的数控衰减器PE4312是6位射频数字步进衰减器(DSA,Digital Step Attenuator)工作频率覆盖1MHz~4GHz,插入损耗2dB左右,衰减步进0.5dB,最大衰减量为31.5dB,高达59dBm的IIP3提供了良好的动态性能,切换时间0.5微秒,供电电源2.3V~5.5V,逻辑控制兼容1.8V,20…

访问控制列表ACL学习

ACL概念 ACL: ACL 是 Access Control List(访问控制列表)的缩写。它是一种用于管理和控制访问权限的机制或数据结构。ACL 用于确定谁可以访问特定资源(例如文件、文件夹、网络资源等)以及他们可以执行的操作。ACL 通常由一系列访…

基于SSM的高校共享单车管理系统的设计与实现论文

摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。因此高校单车租赁信…

【UE5.1】Mixamo动画重定向到MetaHuman

前言 在上一篇博客(【UE5】初识MetaHuman)中我们创建一个MetaHuman角色,本篇博客在此基础上继续实现Mixamo动画重定向到MetaHuman角色的过程。 效果 步骤 1. 下载Mixamo动画资源(网盘链接:百度网盘)&…

算法分析与设计题目和参考代码

注&#xff1a;以下题目与代码来源于各种渠道 算法与分析设计 第0章 C常用函数与头文件1. 算法 #include \<algorithm\>2. 栈 #include \<stack\>3. 队列 #include \<queue\>4. 优先队列 #include \<queue\>5. map #include \<map\> 第一章 概论…

使用pe安装windows操作系统

一、系统安装前准备工作&#xff0c;制作系统盘 &#xff08;1&#xff09;拷贝电脑上的资料 &#xff08;2&#xff09;准备一个至少8G的U盘 &#xff08;3&#xff09;下载windows镜像文件及pe软件 通过百度网盘可下载下列软件及镜像 windows镜像文件&#xff08;百度网盘…

优化您的Mac电脑风扇控制体验 - 尝试Macs Fan Control Pro!

在日常使用Mac电脑过程中&#xff0c;我们经常会遇到电脑发热的问题&#xff0c;特别是在运行大型软件或进行高负载任务时。为了保护电脑硬件&#xff0c;一个高效且可靠的风扇控制软件是必不可少的。 Macs Fan Control Pro是一款专为Mac电脑设计的风扇控制软件&#xff0c;它…

大一作业习题

第一题&#xff1a;答案&#xff1a; #include <stdio.h> void sort(int a[], int m) //将数组a的前m个元素(从小到大)排序 {int i 0;for (i 0; i < m - 1; i){int j 0;int flag 1;for (j 0; j < m - 1 - i; j){if (a[j] > a[j 1]){int t 0;t a[j];…

第二节、项目支付功能实战-信息安全、支付安全、接口安全详解

信息安全的概念 提起信息安全&#xff0c;我们通常会想到&#xff0c;数据的传输安全、接口传输安全、登录认证、授权这些类型安全知识&#xff0c;同时也会想到&#xff0c;加密、解密、认证、加签、验签、安全证书等这些小而繁琐的复杂概念&#xff0c;一说起这些概念&#…

Caching the Application Engine Server 缓存应用程序引擎服务器

Caching the Application Engine Server 缓存应用程序引擎服务器 Application Engine caches metadata just like the application server. This caching enhances performance because a program can refer to the local cache for any objects that it uses. 应用程序引擎…

网工内推 | 项目经理专场,最高20K*13薪,软考证书优先

01 Trasen 招聘岗位&#xff1a;大项目经理&#xff08;医疗行业/HIS&#xff09; 职责描述&#xff1a; 1.负责项目按计划完成交付并顺利验收结项&#xff1b; 2.参与项目前期预算、评审、方案设计等&#xff1b; 3.负责具体项目实施&#xff0c;制定项目计划、组织项目资源、…

树莓派上电发送IP地址到邮箱

创建python脚本文件 auto_send_email.py #!/usr/bin/python3import subprocess import smtplib from email.mime.text import MIMEText import datetime import time import osdef check_ping():hostname "www.baidu.com"response os.system("ping -c 1 &quo…

AI 与胚胎结合?系统生物学家 Patrick Müller 利用孪生网络对斑马鱼胚胎展开研究

300 万张图片1.5 万个斑马鱼胚胎的数据集&#xff0c;系统生物学家 Patrick Mller 成功实现基于 AI 的胚胎识别。 作者&#xff5c;加零 编辑&#xff5c;三羊 在动物发育过程中&#xff0c;胚胎随着时间的推移会发生复杂的形态变化&#xff0c;研究者们希望能够客观地量化发…
最新文章