• ClickHouse MaterializeMySQL引擎


    一、概述

            ClickHouse 20.8.2.3 版本新增加了MaterializeMySQL的database引擎,该database能
    映射到MySQL中的某个database ,并自动在ClickHouse中创建对应的ReplacingMergeTree。ClickHouse服务做为MySQL 副本,读取Binlog并执行DDL和DML请求,实现了基于MySQL Binlog机制的业务数据库实时同步功能。MaterializeMySQL同时支持全量和增量同步,在database创建之初会全量同步MySQL中的表和数据,之后则会通过binlog进行增量同步。

    二、使用先决条件

    2.1 MySQL部分

    (1)确保MySQL开启了binlog功能,且格式为ROW

    1. vim /etc/my.cnf
    2. server-id=1
    3. log-bin=mysql-bin
    4. binlog_format=ROW

    (2)开启GTID部分

    1. gtid_mode=on
    2. enforce_gtid_consistency=1

    如果不开启GTID会报错:

    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 instead of ON.. (UNKNOWN_EXCEPTION)

    执行上面的操作后需要重启mysql

    systemctl restart mysqld

     

    2.2 clickhouse部分

     编辑user.xml文件并重启clickhouse

    1. vim /etc/clickhouse-server/user.xml
    2. <allow_experimental_database_materialized_mysql>1</allow_experimental_database_materialized_mysql>

     

     要不然会报错如下:

    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.1 在MySQL中创建数据表并写入数据

    1. CREATE DATABASE ggl_test;
    2. CREATE TABLE `ggl_test`.`t_organization` (
    3. `id` int(11) NOT NULL AUTO_INCREMENT,
    4. `code` int NOT NULL,
    5. `name` text DEFAULT NULL,
    6. `updatetime` datetime DEFAULT NULL,
    7. PRIMARY KEY (`id`),
    8. UNIQUE KEY (`code`)
    9. ) ENGINE=InnoDB;
    10. INSERT INTO ggl_test.t_organization (code, name,updatetime)
    11. VALUES(1000,'Realinsight',NOW());
    12. INSERT INTO ggl_test.t_organization (code, name,updatetime)
    13. VALUES(1001, 'Realindex',NOW());
    14. INSERT INTO ggl_test.t_organization (code, name,updatetime)
    15. VALUES(1002,'EDT',NOW());
    16. CREATE TABLE `ggl_test`.`t_user` (
    17. `id` int(11) NOT NULL AUTO_INCREMENT,
    18. `code` int,
    19. PRIMARY KEY (`id`)
    20. ) ENGINE=InnoDB;
    21. INSERT INTO ggl_test.t_user (code) VALUES(1);
    22. INSERT INTO ggl_test.t_user (code) VALUES(2);

     

     

    3.2 ClickHouse中创建MaterializeMySQL数据库

    CREATE DATABASE test_binlog ENGINE = MaterializeMySQL('ggl203:3306','ggl_test','root','123456');

     3.3 查询测试

     

  • 相关阅读:
    spring boot logback日志配置文件
    Unity-GameFramework-202208最新踩坑记录(未完待续...不断完善中...)
    学会 Python 自动安装第三方库,从此跟pip说拜拜
    BSVD论文理解:Real-time Streaming Video Denoising with Bidirectional Buffers
    c++ 重载、重写、覆盖
    专注效率提升「GitHub 热点速览 v.22.36」
    大数据治理包括哪些
    请求响应-06.请求-路径参数
    ES6 不完全手册(上)
    unity之制作二维码扫描
  • 原文地址:https://blog.csdn.net/qq_37056683/article/details/125547404