进行数据同步
操作场景
您可能需要对GaussDB(for MySQL)实例中的某些数据库中的数据进行分析,可以选择使用数据同步功能将GaussDB(for MySQL)中的数据同步到HTAP实例中进行分析。
前提条件
- GaussDB(for MySQL)实例需要按照表1进行参数设置。
表1 参数说明 参数名称
参数值
修改方式
default_authentication_plugin
mysql_native_password
binlog_expire_logs_seconds
86400
说明:binlog的保留时间建议大于1天:60(秒)*60(分钟)*24(小时)=86400,防止由于binlog时间设置过短,导致增量复制失败。
log_bin
说明:GaussDB(for MySQL)内核版本小于2.0.45.230900时,使用该参数。
ON
rds_global_sql_log_bin
说明:GaussDB(for MySQL)内核版本大于或等于2.0.45.230900时,使用该参数。
ON
binlog_format
ROW
通过“SHOW VARIABLES;”命令查看参数的值,如需修改,请联系客服人员修改。
binlog_row_image
FULL
通过“SHOW VARIABLES;”命令查看参数的值,如需修改,请联系客服人员修改。
log_bin_use_v1_row_events
OFF
通过“SHOW VARIABLES;”命令查看参数的值,如需修改,请联系客服人员修改。
- GaussDB(for MySQL)实例已创建数据库和表。
创建数据同步
- 登录管理控制台。
- 单击管理控制台左上角的,选择区域和项目。
- 在页面左上角单击,选择 。
- 在“实例管理”页面的实例列表中,选择目标实例,单击实例名称进入“基本信息”页面。
- 在左侧导航栏选择“HTAP实时分析”。
- 单击目标HTAP只读实例名称,进入实例的“基本信息”页面。
- 在左侧导航栏选择“数据同步”,单击“创建数据同步”。
请参考查看监控指标同步前检查HTAP磁盘空间大小,实例连接状态等。
- 在创建数据同步页面,进行参数设置。
图1 创建数据同步
- 当前不支持数据库名称为中文的库同步。
- 从只读节点同步数据:选择“是”,勾选实例下的目标只读节点,会从目标只读节点进行全量数据同步,以避免全量同步阶段对主节点产生查询压力。如果仅有一个只读节点,默认选择该节点为目标节点。全量同步过程中需保证只读节点可用,否则全量同步失败后需重新开始同步。
- 库同步设置:单击下拉列表选择需要进行数据同步的目标库,可根据实际需求修改HTAP实例的数据库参数。
表2 参数说明 参数名称
默认值
允许值
描述
设置建议
default_isolation_level
QUERY_SNAPSHOT
- READ_COMMITTED
- READ_UNCOMMITTED
- QUERY_RAW
- QUERY_SNAPSHOT
默认隔离级别,仅对MaterializeMySQL引擎有效。
若同步的数据后续会发生修改,建议使用QUERY_SNAPSHOT,能加速查询,但生成snapshot会增大数据同步的时延;若同步的数据后续不会修改,则建议使用READ_COMMITTED,能降低数据同步的时延。
enable_snapshots
true
- true
- false
创建快照以支持mvcc_isolation_level='query_snapshot'。
当default_isolation_level参数选择QUERY_SNAPSHOT时需要开启,其他场景建议关闭。
enable_chunk_level
true
- true
- false
支持chunk级别的并行复制,复制会更快。
若希望能快速完成全量同步,则建议开启,但同步期间会增大GaussDB(for MySQL)只读节点的读取压力;若对全量同步时长无要求,则建议关闭。
max_sync_threads
1
1~实例CPU数/2
全量复制最大线程数。
若希望能快速完成全量同步,HTAP节点性能较好,则建议配置多个线程,但同步期间会增大GaussDB(for MySQL)只读节点的读取压力和HTAP节点的性能压力;若对全量同步时长无要求,则建议不修改。
max_rows_in_buffer
2000000
1~10000000
内存中允许缓存数据的最大行数(对于单表和无法查询的缓存数据而言)。当行数超过时,数据将被物化。
-
max_rows_in_buffers
6000000
1~10000000
内存中允许缓存的最大行数(用于数据库和无法查询的缓存数据而言)。当行数超过时,数据将被物化。
-
max_bytes_in_buffer
200000000
1~1000000000
数据在内存中允许缓存的最大字节数(对于单表和无法查询的缓存数据)。当字节数超过时,数据将被物化。
-
max_bytes_in_buffers
600000000
1~1000000000
数据在内存中允许缓存的最大字节数(对于数据库和无法查询的缓存数据)。当字节数超过时,数据将被物化。
-
max_flush_data_time
5000
1~10000
允许数据缓存在内存中的最大时长(毫秒)。
若希望同步数据延迟较小,可以调小该参数,但建议不要小于1000毫秒,值过小,可能会导致表分片过多,影响查询性能。该参数和max_rows_in_buffer,max_rows_in_buffers,max_bytes_in_buffer,max_bytes_in_buffers一起决定数据刷新到磁盘的时间。满足其中一个条件,数据就会刷新到磁盘。
treat_numeric_string_as_integer
false
- true
- false
允许在全量同步期间块级任务生成中将数字字符串视为整数。
-
min_binlog_expire_logs_seconds
86400
0~2592000
数据同步对GaussDB(for MySQL) Binlog保存的最小时长要求,如果Binlog保存的最小时长小于该阈值,同步无法进行。0表示不做限制。
-
- 同步范围:根据实际情况选择同步范围,支持对所有表或部分表进行同步。
- 表黑白名单:当同步范围选择部分表时,需要设置表黑白名单。根据实际情况需要对选择的表进行黑名单和白名单设置。
- 表同步设置:根据实际需要开启或关闭表同步设置。
- 选择开启后
- 左侧选择已经同步的表进行相应的列操作,支持ORDER BY, PARTITION BY, SAMPLE BY, PRIMARY KEY, TTL。详细的语法可以参考语法说明。
图2 表同步设置
例如:
- ORDER BY(COL1, COL2),COL1,COL2不要为NULL;
- PARTITION BY toYYYYMM(data_time);
- PRIMARY KEY默认跟ORDER BY KEY保持一致,一般不需要指定;
- 若指定了SAMPLE BY, 则ORDER BY必须包含SAMPLE BY的内容,如: SAMPLE BY intHash32(UserID) ORDER BY (CounterID, EventDate, intHash32(UserID));
- TTL超期时间不要设置过短,建议超期时间最短设置为1天,如:TTL time + INTERVAL 1 DAY。
设置ORDER BY KEY时需保证数据的区分度,否则可能跟源表数据不一致。
PARTITION BY KEY的取值不能太多,否则影响性能。
- 输入对表进行列操作的语句后,需单击此区域右侧的“校验”。
- 左侧选择已经同步的表进行相应的列操作,支持ORDER BY, PARTITION BY, SAMPLE BY, PRIMARY KEY, TTL。详细的语法可以参考语法说明。
- 选择关闭后,直接执行9。
- 选择开启后
- 配置完成后,单击“创建同步任务”。
- 在详情页面,确认信息无误后,单击“立即同步”。如需修改,可单击“上一步”返回修改。
如果在当前页面单击“上一步”或未单击“立即同步”后,直接单击页面左上角,返回到数据同步页面,会生成一条待同步的数据同步任务。此时该任务的状态为“同步阶段:等待同步”。如需启动此任务,需单击操作列“同步”,进行数据同步。如需修改此任务,请参考编辑数据同步。
- 操作成功后,单击“返回同步列表”,返回数据同步页面。在数据同步界面可以查看源库、目标库、状态、删除任务等详细信息。
图3 查看任务状态
当HTAP实例的状态显示为“同步阶段:增量同步中”,表示该实例数据同步状态完成。
查看数据同步
- 登录管理控制台。
- 单击管理控制台左上角的,选择区域和项目。
- 在页面左上角单击,选择 。
- 在“实例管理”页面的实例列表中,选择目标实例,单击实例名称进入“基本信息”页面。
- 在左侧导航栏选择“HTAP实时分析”。
- 单击目标HTAP只读实例名称,进入实例的“基本信息”页面。
- 在左侧导航栏选择“数据同步”,进入数据同步页面。
- 选中目标任务,单击操作列的“查看”。
图4 查看数据同步
- 在“查看数据同步”页面中,查看该任务的详细信息。
- 登录管理控制台。
- 单击管理控制台左上角的,选择区域和项目。
- 在页面左上角单击,选择 。
- 在“实例管理”页面的实例列表中,选择目标实例,单击实例名称进入“基本信息”页面。
- 在左侧导航栏选择“HTAP实时分析”。
- 单击目标HTAP只读实例名称,进入实例的“基本信息”页面。
- 在左侧导航栏选择“数据同步”,进入数据同步页面。
- 选中目标任务,单击操作列的“编辑”。
图5 编辑数据同步
- 在“编辑数据同步”页面,进行参数设置。
- 设置完成后,单击“编辑同步任务”。
- 在详情页面,确认信息无误后,单击“立即同步”。
- 操作成功后,单击“返回同步列表”,返回数据同步页面。在数据同步界面可以查看源库、目标库、状态、删除任务等详细信息。
图6 查看任务状态
当HTAP实例的状态显示为“同步阶段:增量同步中”,表示该实例数据同步状态完成。
删除数据同步
- 登录管理控制台。
- 单击管理控制台左上角的,选择区域和项目。
- 在页面左上角单击,选择 。
- 在“实例管理”页面的实例列表中,选择目标实例,单击实例名称进入“基本信息”页面。
- 在左侧导航栏选择“HTAP实时分析”。
- 单击目标HTAP只读实例名称,进入实例的“基本信息”页面。
- 在左侧导航栏选择“数据同步”,进入数据同步页面。
- 选中目标任务,单击操作列的“删除”。
图7 删除数据同步
- 在弹出的对话框中,单击“是”,删除目标数据同步记录。