示例-从 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
- 检查是否开启 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
- 如果和上述参数不一致,则
- 自建 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)
默认字段映射
MySQL | ProtonBase |
---|---|
TINYINT | INT2 |
SMALLINT | INT2 |
MEDIUMINT | INT4 |
INT | INT4 |
BIGINT | INT8 |
TINYINT UNSIGNED | INT2 |
SMALLINT UNSIGNED | INT4 |
MEDIUMINT UNSIGNED | INT4 |
INT UNSIGNED | INT8 |
BIGINT UNSIGNED | NUMERIC |
NUMERIC | NUMERIC |
DECIMAL UNSIGNED | NUMERIC |
FLOAT | FLOAT4 |
FLOAT UNSIGNED | FLOAT4 |
DOUBLE | FLOAT8 |
DOUBLE UNSIGNED | FLOAT8 |
CHAR | CHAR |
VARCHAR | VARCHAR |
TINYTEXT | TEXT |
TEXT | TEXT |
MEDIUMTEXT | TEXT |
LONGTEXT | TEXT |
BINARY | BYTEA |
VARBINARY | BYTEA |
TINYBLOB | BYTEA |
BLOB | BYTEA |
MEDIUMBLOB | BYTEA |
LONGBLOB | BYTEA |
ENUM | TEXT |
SET | TEXT |
DATE | DATE |
DATETIME | TIMESTAMP |
TIMESTAMP | TIMESTAMPTZ |
TIME | TIME |
YEAR | INT2 |
JSON | JSONB |