示例-从 MySQL 同步到 ProtonBase

从 MySQL 同步到 ProtonBase

为什么需要从 MySQL 同步到 ProtonBase?

MySQL 是世界上最流行的开源关系型数据库之一,广泛应用于各种Web应用和业务系统中。然而,当面对大规模数据分析和复杂查询时,MySQL 的性能可能无法满足需求。ProtonBase 作为一款专为实时分析设计的数据库,具备强大的分析能力,能够提供更快的查询响应速度和更好的扩展性。通过将 MySQL 中的数据同步到 ProtonBase,我们可以实现业务系统和分析系统的分离,既保证了业务系统的稳定性,又满足了数据分析的高性能需求。

准备工作

网络部分参考 数据同步网络配置

权限

只包含全量作业,授予如下权限,user 为同步作业的用户,password 为用户密码

mysql> GRANT SELECT, SHOW DATABASES ON *.* TO '${user}' IDENTIFIED BY '${password}';
       FLUSH PRIVILEGES;

包含增量作业,授予如下权限

mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '${user}' IDENTIFIED BY '${password}';
       FLUSH PRIVILEGES;

增量作业开启 binlog

  1. 检查是否开启 binlog
mysql> select @@log_bin; -- 检查是否开启了 binlog,0 表示 disable,1 表示enable
mysql> show variables like 'server_id';
mysql> show variables like 'binlog%';

确认下述参数是否正确

  • server_id 非空
  • log_bin: 1
  • binlog_format:ROW
  • binlog_row_image: FULL
  1. 如果和上述参数不一致,则
  • 自建 MySQL 服务,请修改 mysqld.cnf 后重启 MySQL 服务
  • 云厂商提供的 RDS 服务,一般在控制台设置参数后重启即可(阿里云请参考 这里 (opens in a new tab)

数据源配置

MySQL 数据源需要配置如下连接属性:

  • Host:MySQL 服务地址
  • Port:MySQL 服务端口,一般为 3306
  • Username:上述权限的用户
  • Password:上述权限用户对应的密码

默认节点映射

节点的默认映射规则如下

concat(SOURCE_DATABASE, '.', 'public', '.', SOURCE_OBJECT)

含义为:MySQL 的表比如 d.t (其中 d 为 database 名,t 为表名)映射到 ProtonBase 下的 d.public.t(其中 public 为 schema)

默认字段映射

MySQLProtonBase
TINYINTINT2
SMALLINTINT2
MEDIUMINTINT4
INTINT4
BIGINTINT8
TINYINT UNSIGNEDINT2
SMALLINT UNSIGNEDINT4
MEDIUMINT UNSIGNEDINT4
INT UNSIGNEDINT8
BIGINT UNSIGNEDNUMERIC
NUMERICNUMERIC
DECIMAL UNSIGNEDNUMERIC
FLOATFLOAT4
FLOAT UNSIGNEDFLOAT4
DOUBLEFLOAT8
DOUBLE UNSIGNEDFLOAT8
CHARCHAR
VARCHARVARCHAR
TINYTEXTTEXT
TEXTTEXT
MEDIUMTEXTTEXT
LONGTEXTTEXT
BINARYBYTEA
VARBINARYBYTEA
TINYBLOBBYTEA
BLOBBYTEA
MEDIUMBLOBBYTEA
LONGBLOBBYTEA
ENUMTEXT
SETTEXT
DATEDATE
DATETIMETIMESTAMP
TIMESTAMPTIMESTAMPTZ
TIMETIME
YEARINT2
JSONJSONB