MySQL的数据怎样同步到ClickHouse?

2024年 6月 18日 48.8k 0

MySQL,作为一款广泛使用的行式关系型数据库,虽然在事务处理和数据一致性方面表现出色,但在处理大规模数据分析时可能会遇到性能瓶颈。

而ClickHouse,作为一款高性能的列式数据库,专为在线分析处理(OLAP)设计,能够提供快速的查询响应和高效的数据处理能力。

所以,越来越多的公司考虑把MySQL的数据同步到ClickHouse,再到ClickHouse里处理复杂分析和聚合操作。

MySQL的数据同步到ClickHouse有很多方案,我们这一篇文章就来聊一下最简单的一种:通过MaterializedMySQL库引擎。

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

不过官方提醒,这个还是实验版本,不建议在生产环境使用。

个人见解:真要使用,可以增加一些校验方式,来判断MySQL和ClickHouse数据是否一致。

1 MySQL需要调整的配置

    default_authentication_plugin = mysql_native_password

    因为MaterializedMySQL库引擎只能识别这个认证方式。

      gtid_mode = on
      enforce_gtid_consistency = on

      只能解析基于GTID的Binlog记录。

      2 MySQL中写入测试数据

        create database test02;
        create table test02.t2(
        `id` int NOT NULL AUTO_INCREMENT,
        `a` int DEFAULT NULL,
        `b` int DEFAULT NULL,
        PRIMARY KEY (`id`)
        ) ENGINE=InnoDB;


        insert into test02.t2(a,b) values (1,1);

        3 MySQL中创建测试用户

          create user 'test02_rw'@'192.168.%' identified with mysql_native_password by 'IdcaTa6Q^d';
          grant all on *.* to 'test02_rw'@'192.168.%';

          4 ClickHouse安装和启动

          安装ClickHouse单机版

            yum install -y yum-utils
            yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo
            yum install -y clickhouse-server clickhouse-client

            修改ClickHouse配置文件

              vim /etc/clickhouse-server/config.xml

              调整参数:

                0.0.0.0

                启动ClickHouse

                  /etc/init.d/clickhouse-server start

                  5 ClickHouse中创建MaterializedMySQL库引擎

                    set allow_experimental_database_materialized_mysql = 1;


                    create database m_mysql_test engine=MaterializedMySQL('192.168.12.161:3306','test02','test02_rw','IdcaTa6Q^d');

                    其中:

                    allow_experimental_database_materialized_mysql,表示开启MySQL物化引擎;
                    192.168.12.161:3306,MySQL的IP和端口
                    test02,要同步的MySQL库
                    test02_rw,MySQL中的用户
                    IdcaTa6Q^d,MySQL用户的密码

                    6 再到ClickHouse中查询

                      select * from m_mysql_test.t2;

                      MySQL的数据怎样同步到ClickHouse?-1

                      7 MySQL中写入增量数据

                        insert into test02.t2(a,b) values (2,2);

                        8 再到ClickHouse中查询增量数据

                          select * from m_mysql_test.t2;

                          MySQL的数据怎样同步到ClickHouse?-2

                          说明增量数据也可以正常同步。

                          好的,通过MaterializedMySQL库引擎把MySQL的数据同步到ClickHouse就聊到这里。

                          更多ClickHouse内容,可以观看我的DBA体系课近期更新的ClickHouse部分:

                          MySQL的数据怎样同步到ClickHouse?-3

                          考虑购买DBA体系课的,在本月20日前,可领一张满1800减600的券,另外还有一个随机红包,应该也会有几十元,然后还可以私聊我领一张额外叠加券。

                          MySQL的数据怎样同步到ClickHouse?-4

                          MySQL的数据怎样同步到ClickHouse?-5

                          相关文章

                          Oracle如何使用授予和撤销权限的语法和示例
                          Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
                          下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
                          社区版oceanbase安装
                          Oracle 导出CSV工具-sqluldr2
                          ETL数据集成丨快速将MySQL数据迁移至Doris数据库

                          发布评论