暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL的数据怎样同步到ClickHouse?

106

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
              复制

              调整参数:

                <listen_host>0.0.0.0</listen_host>
                复制

                启动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;
                      复制


                      7 MySQL中写入增量数据

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


                        8 再到ClickHouse中查询增量数据

                          select * from m_mysql_test.t2;
                          复制

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


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

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

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



                          文章转载自MySQL数据库联盟,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                          评论