• ClickHouse引擎之-MaterializeMYSQL


    一、MaterializeMySQL database engine 支持的情况

    使用MaterializeMySQL存储引擎,需要一下先决条件

    1.支持mysql 库级别的数据同步,暂不支持表级别的。
    2.MySQL 库映射到clickhouse中自动创建为ReplacingMergeTree 引擎的表
    3.支持全量和增量同步,首次创建数据库引擎时进行一次全量复制,之后通过监控binlog变化进行增量数据同步
    4.支持的MySQL版本:5.6 5.7 8.0
    5.支持的操作:insert,update,delete,alter,create,drop,truncate等大部分DDL操作

    二、使用MaterializeMySQL 引擎的先决条件

    1、MySQL部分

    1)开启binlog并设置为row格式:

    在MySQL配置文件/etc/my.cnf中加入

    log-bin=mysqlbin.log
    binlog_format=ROW

    2)开启GTID模式

    在MySQL配置文件/etc/my.cnf中加入

    gtid_mode=on
    enforce_gtid_consistency=1
    在这里插入图片描述

    不开启GTID模式则会报错

    ch查询创建MaterializeMySQL引擎的表

    Code: 1002. DB::Exception: Received from localhost:9000. DB::Exception: The replication sender thread cannot start in AUTO_POSITION mode: this server has GTID_MODE = OFF_PERMISSIVE instead of ON…
    在这里插入图片描述

    3)localhost连接

    如果只是自己在一台服务器做测试,使用localhost来创建MaterializeMySQL,那么默认去找/tmp/mysql.sock,而不是MySQL配置文件中的sock
    在这里插入图片描述

    MySQL配置文件中的sock配置如下
    在这里插入图片描述

    解决办法:修改MySQL sock配置,重启MySQL
    在这里插入图片描述

    重启MySQL后,不能再用localhost登录,直接用127.0.0.1
    在这里插入图片描述

    在这里插入图片描述

    在创建MaterializeMySQL
    在这里插入图片描述

    4)MySQL表必须要有主键,否则无法同步到Clickhouse中

    在这里插入图片描述

    2、Clickhouse部分

    users.xml配置文件添加

    1

    并重启clickhouse
    在这里插入图片描述

    否则报错

    Code: 336. DB::Exception: Received from localhost:9000. DB::Exception: MaterializeMySQL is an experimental database engine. Enable allow_experimental_database_materialize_mysql to use it…
    在这里插入图片描述

    三、clickhouse创建MaterializeMySQL

    1、MySQL创建测试DB与表,并插入数据(表必须有主键)

    mysql> use mych;
    Database changed
    mysql> show tables;
    Empty set (0.00 sec)
    
    mysql>
    mysql>
    mysql> create table chtomysql(id int auto_increment primary key,name varchar(30));
    Query OK, 0 rows affected (0.02 sec)
    
    mysql>
    mysql>
    mysql> insert into chtomysql values (1,'xxa'),(2,'acscas');
    Query OK, 2 rows affected (0.02 sec)
    Records: 2 Duplicates: 0 Warnings: 0
    
    mysql>
    mysql>
    mysql> select * from chtomysql;
    +----+--------+
    | id | name |
    +----+--------+
    | 1 | xxa |
    | 2 | acscas |
    +----+--------+
    2 rows in set (0.00 sec)
    
    mysql>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    2、Clickhouse创建MaterializeMySQL引擎的DB

    ch01 :) create database mych ENGINE = MaterializeMySQL('192.168.88.128:3306', 'mych', 'root', 'VoracletestA@1');
    
    CREATE DATABASE mych
    ENGINE = MaterializeMySQL('192.168.88.128:3306', 'mych', 'root', 'VoracletestA@1')
    
    Ok.
    
    0 rows in set. Elapsed: 0.014 sec.
    
    ch01 :) use mych;
    
    USE mych
    
    Ok.
    
    0 rows in set. Elapsed: 0.001 sec.
    
    ch01 :) show tables;
    
    SHOW TABLES
    
    ┌─name──────┐
    │ chtomysql │
    └───────────┘
    
    1 rows in set. Elapsed: 0.005 sec.
    
    ch01 :) select * from chtomysql;
    
    SELECT *
    FROM chtomysql
    
    ┌─id─┬─name───┐
    │ 1 │ xxa │
    │ 2 │ acscas │
    └────┴────────┘
    
    2 rows in set. Elapsed: 0.009 sec.
    
    ch01 :)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    四、Clickhouse相关测试

    支持的操作:insert,update,delete,alter,create,drop,truncate等大部分DDL操作

    1、insert测试

    MySQL insert 数据
    在这里插入图片描述

    clickhouse查看响应数据
    在这里插入图片描述

    2、update测试

    mysql update数据
    在这里插入图片描述

    clickhouse查看响应数据
    在这里插入图片描述

    3、delete测试

    mysql delete数据

    在这里插入图片描述

    clickhouse查看响应数据
    在这里插入图片描述

    4、 alter测试

    1)增加字段、带默认值
    在这里插入图片描述

    在这里插入图片描述

    2)增加字段、无默认值

    在这里插入图片描述

    在这里插入图片描述

    3)删除字段

    在这里插入图片描述

    在这里插入图片描述

    5、create测试

    MySQL creaet 表

    在这里插入图片描述

    clickhouse查看响应:MySQL新创建的表mytab,并未同步过来,看网上文章有的可以同步过来
    在这里插入图片描述

    6、drop测试

    mysql drop table
    在这里插入图片描述

    clickhouse 查看表响应:表已被删除
    在这里插入图片描述

    7、truncate测试

    MySQL truncate 表
    在这里插入图片描述

    clickhouse查看响应:ch的表数据也被truncate

    在这里插入图片描述


    参考列表:

  • 相关阅读:
    前后端发布分支规则
    mysql第二次作业
    数据结构----线性表之栈
    Python 解释器配置需要注意什么?
    【pandas基础】--目录(完结)
    Java学习记录
    【2022年】Python自动化测试的趋势,你还在每天很焦虑?
    postgresql分组取每组排序后最大最小的两条数据
    libvirt vcpu热插拔报错:failed to find appropriate hotpluggable vcpus
    7种典型的钢结构BIM应用
  • 原文地址:https://blog.csdn.net/liuwei0376/article/details/125905307