MaterializedMySQL引擎 本页面介绍了MaterializedMySQL引擎。 MaterializedMySQL是一个用于从MySQL数据库中获取数据的表引擎。它的工作原理是: MaterializedMySQL会定期从MySQL拉取数据,同步到云数据库ClickHouse本地。 数据同步后,会存储在本地云数据库ClickHouse表中,表引擎设置为合适的引擎(如MergeTree)。 查询时,云数据库ClickHouse不会访问MySQL,而是直接从本地已同步的表中读取数据。 同步的时间间隔可以通过 mysqlmaterializedtablesttl参数设置,默认10分钟同步一次。 MaterializedMySQL的主要优点是: 减少了跨网络访问MySQL的开销,查询性能更好。 可以对同步的数据进行云数据库ClickHouse的查询优化,实现更快的分析。 支持增量同步,只同步新增或修改的数据,而不是整表同步。 支持只同步指定的列,以减少不需要的数据量。 本地表引擎可自定义,使存储方式更灵活。 创建数据库 语法 创建使用MaterializedMySQL引擎的表的语法: sql CREATE TABLE [IF NOT EXISTS] tablename ENGINE MaterializedMySQL(mysqlsourcehost, mysqlsourcedatabase, mysqlsourcetable, clickhousesinkdatabase, clickhousesinktable, clickhouseengine) mysqlsourcehost:MySQL的源主机地址 mysqlsourcedatabase:MySQL源数据库名 mysqlsourcetable:MySQL源表名 clickhousesinkdatabase:云数据库ClickHouse目标数据库名 clickhousesinktable:云数据库ClickHouse目标表名 clickhouseengine:云数据库ClickHouse目标表的引擎 示例 sql 从MySQL synctest库的data表同步到ClickHouse的sync数据库syncdata表 CREATE TABLE sync.syncdata ENGINE MaterializedMySQL('localhost', 'synctest', 'data', 'sync', 'syncdata', 'MergeTree() order by id'); 这个表会定期从MySQL localhost上的synctest库的data表同步数据到云数据库ClickHouse的sync库的syncdata表,目标表的引擎是MergeTree。 MaterializedMySQL提供了从MySQL增量同步数据的便捷途径,可以让云数据库ClickHouse对MySQL数据进行更优化的存储和查询。 MySQL服务器端配置 为了 MaterializedMySQL的正确工作,有一些必须设置的 MySQL端配置设置: defaultauthenticationplugin mysqlnativepassword,因为 MaterializedMySQL 只能授权使用该方法。 gtidmode on,因为基于GTID的日志记录是提供正确的 MaterializedMySQL复制的强制要求。 说明 当打开 gtidmode 时需要指定 enforcegtidconsistency on。