一、测试环境
名称 | 值 |
---|
cpu | Intel® Core™ i5-1035G1 CPU @ 1.00GHz |
操作系统 | CentOS Linux release 7.9.2009 (Core) |
内存 | 4G |
逻辑核数 | 3 |
Gbase-8a源端节点-IP | 192.168.142.10 |
Gbase-8a目的端节点-IP | 192.168.142.11 |
Gbase-8a数据库版本 | 8.6.2.43-R33.132743 |
Gbase-8a-RSync同步工具版本 | gcluster_rsynctool.py 8.6.2.43-R33.126038 |
二、工具介绍
1、简介
集群间同步工具是基于镜像集群的底层二进制同步的工具,其同步的对象是库内的数据,通过解析、比对二进制文件的变化进行同步; 包含增量同步和全量同步。
2、支持功能
序号 | 功能点描述 |
---|
1 | 支持增量和全量两种数据同步方式; |
2 | 支持落盘数据的回读校验; |
3 | 支持主备分片同时同步(不保备份集群的表的数据安全性); |
4 | 支持先同步主分片,主分片成功后再同步备份分片; |
5 | 集群间同步支持使用普通数据库用户进行同步; |
3、注意点
序号 | 注意点描述 |
---|
1 | 主备集群版本必须一致。 |
2 | 主备集群的被同步表至少有一组可用分片。 |
3 | 系统表、Nocopies不做同步。; |
三、测试
1、部署软件
[root@xdw0 pkg]# tar -xvf gcluster_rsynctool-8.6.2_build43-R33-redhat7.3-x86_64.tar.bz2
[root@xdw0 pkg]# chown -R gbase:gbase /opt/pkg/gcluster_rsynctool
[root@xdw0 pkg]# chmod 777 -R /opt/pkg/gcluster_rsynctool
[root@xdw0 gcluster_rsynctool]# su - gbase
上一次登录:日 8月 21 09:01:43 CST 2022
[gbase@xdw0 ~]$ cd /opt/pkg/gcluster_rsynctool/
[gbase@xdw0 gcluster_rsynctool]$ ll
总用量 216
drwxr-xr-x 3 gbase gbase 273 7月 13 2021 GBaseConnector
-rw-r--r-- 1 gbase gbase 5633 7月 13 2021 GCClusterTopo.py
-rw-r--r-- 1 gbase gbase 6361 7月 13 2021 GCCommon.py
-rw-r--r-- 1 gbase gbase 1661 7月 13 2021 GCConnection.py
-rw-r--r-- 1 gbase gbase 225 7月 13 2021 GCException.py
-rw-r--r-- 1 gbase gbase 2895 7月 13 2021 GCFile.py
-rwxr-xr-x 1 gbase gbase 2110 7月 13 2021 GCIPMapping.py
-rw-r--r-- 1 gbase gbase 59555 7月 13 2021 gcluster_rsynctool.py
-rw-r--r-- 1 gbase gbase 17974 7月 13 2021 GCParameter.py
-rw-r--r-- 1 gbase gbase 4835 7月 13 2021 GCThreadPool.py
-rw-r--r-- 1 gbase gbase 421 7月 13 2021 Makefile
-rwxr-xr-x 1 gbase gbase 206 7月 13 2021 master_mapping
-rwxr-xr-x 1 gbase gbase 75990 7月 13 2021 pexpect.py
-rw-r--r-- 1 gbase gbase 13 7月 13 2021 release_version
-rwxr-xr-x 1 gbase gbase 205 7月 13 2021 slave_mapping
drwxr-xr-x 2 gbase gbase 252 7月 13 2021 test
-rw-r--r-- 1 gbase gbase 73 7月 13 2021 Version.py
2、支持参数
参数名 | 介绍 |
---|
master_mpp_ip | 含义:用于指定主集群的 coordinator 任一节点 IP 地址 |
| 参数类型:必选参数 |
| 注意事项和使用限制:只支持 IPV4 格式的 IP 地址 |
master_mpp_ip_mapping_file | 含义:主 mpp gcluster ip地址传输文件的文件格式为json,仅支持IPV4 |
| 参数类型:无 |
| 注意事项和使用限制:无 |
master_mpp_gc_port | 含义:用于指定主集群的 coordinator 端口信息 |
| 参数类型:可选参数,取值范围【default:5258, min:1,max:65536】 |
| 注意事项和使用限制: 如端口信息不是默认值,请指定该参数 |
master_mpp_gn_port | 含义:用于指定主集群的 gnode 端口信息 |
| 参数类型:可选参数,取值范围【default: 5050,min:1,max:65536】 |
| 注意事项和使用限制: 如端口信息不是默认值,请指定该参数 |
slave_mpp_ip | 含义:用于指定备集群的 coordinator 任一节点 IP 地址 |
| 参数类型:必选参数 |
| 注意事项和使用限制:只支持 IPV4 格式的 IP 地址 |
slave_mpp_ip_mapping_file | 含义:备 mpp gcluster ip地址传输文件的文件格式为json,仅支持IPV4 |
| 参数类型:无 |
| 注意事项和使用限制:无 |
slave_mpp_gc_port | 含义:用于指定备集群的 coordinator 端口信息 |
| 参数类型:可选参数,取值范围【default:5258, min:1,max:65536】 |
| 注意事项和使用限制: 如端口信息不是默认值,请指定该参数 |
slave_mpp_gn_port | 含义:用于指定备集群的 gnode 端口信息 |
| 参数类型:可选参数,取值范围【default: 5050,min:1,max:65536】 |
| 注意事项和使用限制: 如端口信息不是默认值,请指定该参数 |
master_mpp_gc_pw | 含义:用于指定主集群的数据库用户密码 |
| 参数类型:可选参数,取值范围【default: gbase20110531,min:无,max:无】 |
| 注意事项和使用限制: 如果数据库用户密码不是默认值,请指定该参数 |
slave_mpp_gc_pw | 含义:用于指定主集群的数据库用户密码 |
| 参数类型:可选参数,取值范围【default: gbase20110531,min:无,max:无】 |
| 注意事项和使用限制: 如果数据库用户密码不是默认值,请指定该参数 |
database_user | 含义:用于指定连接主、备集群的数据库用户 |
| 参数类型:可选参数,取值范围【default: gbase,min:无,max:无】 |
| 注意事项和使用限制: 需要具有访问‘table_list_file’中定义的表的权限,该用户需要同时存在于主备集群。 |
database_user | 含义:用于指定连接主、备集群的数据库用户 |
| 参数类型:可选参数,取值范围【default: gbase,min:无,max:无】 |
| 注意事项和使用限制: 需要具有访问‘table_list_file’中定义的表的权限,该用户需要同时存在于主备集群。 |
table_list_file | 含义:用于被同步表的配置文件 |
| 参数类型:必选参数 |
| 注意事项和使用限制:文件名,该文件内容为需要同步的表列表,可以只有一张表。文件内容格式为 DBName.TBName,用换行符进行分割,支持 windows 换行符和 linux 换行符,但必须统一,即文件内只能出现一种换行符。 |
table_parallel_degree | 含义:用于指定集群间同步每次并行同步的表的数量 |
| 参数类型:可选参数, 取值范围【default:1,min:1, max:128】 |
| 注意事项和使用限制:该参数需要根据主、备集群负载,业务并行度进行调节;当作业并行度低,主备集群负载不高的情况下,可适当增大该配置参数 |
lock_table_timeout | 含义:用于指定集群间同步工具对主集群、备集群表加锁的超时时间 |
| 参数类型:可选参数, 取值范围【unit:second,default:600,min:1, max:3600】 |
| 注意事项和使用限制: 由于锁是用来互斥表的写操作,该参数需要根据表的写操作最大时间进行适当延长; |
retry_times | 含义:用于指定底层分片对分片的同步失败后的重试次数 |
| 参数类型:可选参数, 取值范围【unit:次,default:1,min:1, max:10】 |
| 注意事项和使用限制: 该参数主要取决于网络状态,在网络状态不佳(闪断、网络阻塞)的情况下,会出现分片对分片的同步失败情况,需要重试来保障同步成功,需要根据网络状态进行适当的调大; |
retry_interval | 含义:用于指定底层分片对分片的同步失败后的每次重试的时间间隔 |
| 参数类型:可选参数, 取值范围【unit:second,default:10,min:1, max:1800】 |
| 注意事项和使用限制:该参数主要取决于网络状态,在网络状态不佳(闪断、网络阻塞)的情况下,会出现分片对分片的同步失败情况,失败后需要等待一段时间,期待网络恢复,然后再进行尝试,这个参数只是一个经验参数,不能确保等待一段时间后网络一定会恢复完,并且同步成功; |
sync_mode | 含义:用于指定数据同步的模式【粗糙过滤,增量同步,全量同步】 |
| 参数类型:可选参数, 取值范围【unit:无,default:1,min:1, max:3】 |
| 注意事项和使用限制:参数取值含义和使用场景: |
1: 粗糙过滤 | 含义:进行表的变更标识检查,如主备集群的表变更标识相同,直接跳过该表,不做同步;表的变更标识不同,再做每个列级别的变更标识检查,进行增量同步; |
| 适用场景: 该参数值适用于备集群初始化完毕后,增量数据的同步,这种情况下建议使用该参数; |
2:增量同步 | 含义:不做表的变更标识检查,直接做每个列级别的变更标识检查,进行增量同步; |
| 适用场景:该参数值适用于备集群初始化完毕后,增量数据的同步,该参数是由于版本迭代历史原因保留,完全是为了版本兼容性; |
3:全量同步 | 含义:不做任何级别的变更标识检查,直接用主机群的数据覆盖备集群的数据; |
| 适用场景:该参数值适用于需要人为覆盖备集群的所有数据时,这种情况一般发生在如下几种情况: |
| 1、对备份集群的表进行过手动修改,数据已经不可信。2、备集群的表数据发生损坏,需要重建修复。3、 备集群初始化。 |
error_table_list_file | 含义:用于指定同步失败的表存储的文件 |
| 参数类型:可选参数, 取值范围【default: 当前目录/${table_list_filename }error_table_list%Y_%m_%d-%H:%M:%S.log】 |
| 注意事项和使用限制:文件内容格式为 DBName.TBName,用换行符进行分割。可选参数,参数默认值为当前目录,名称默认为${table_list_filename }error_table_list%Y_%m_%d-%H:%M:%S.log,内容格式为 db.tb 每行一个,多行存储;该文件每次调用工具覆盖 |
log_name | 含义:用于指定工具日志的存储文件 |
| 参数类型:可选参数, 取值范围【default: 当前目录/gcluster_rsynctool_yyyy_mm_dd.log】 |
| 注意事项和使用限制: 指定的目录位置要有工具执行用户的写权限 |
log_level | 含义:用于指定工具日志级别 |
| 参数类型:可选参数,取值范围【default:3,min:0, max:5】 |
| 注意事项和使用限制:0: nolog level;1: critical level;2: error level;3: warning level ;4: info level;5: debug level; |
rsync_mode | 含义:用于指定工具调度模式 |
| 参数类型:可选参数,取值范围【default:2,min:0, max:2】 |
| 0:主分片同步,备分片设定状态含义:只同步备集群表的一组分片,其他备份的分片设定状态, 通过集群内部的自动恢复机制进行恢复适用场景:该参数值不建议使用,仅仅为了版本兼容保留 |
| 1: 主备同时同步含义:同时同步备集群的主、备分片,单表同步的性能能够达到最大化适用场景:该参数值不建议使用,存在一个分片的主备都同步失败,表不可用的情况,该参数是当初设计是为了数据安全性不高的场景; |
| 2: 先主后备同步方式.含义:先同步备集群表的主分片,主分片同步成功后再同步备分片,确保备集群的表在同步失败后存在一组可用分片,用来回滚同步操作;适用场景:建议使用该参数,保证备集群表的数据安全; |
double_check | 含义:用于指定是否启用回读校验 |
| 参数类型:可选参数,无参参数,取值范围【default:false】 |
| 注意事项和使用限制:数据写入磁盘后,回读检查备集群表数据;该参数会降低同步的性能,同时增加备集群的磁盘 IO 消耗;可以在部署初期为了验证同步的正确性时采用; |
slave_create_table_if_not_exists | 含义:表不存在时,创建。 |
| 参数类型:Create table if not slave mpp.[default:false] |
| 注意事项和使用限制:该参数在启用后,会在 slave 需要建表时,使用集群间同步工具指定的databaser_user 建表,如 master 上的表不是由该用户建立,会导致 slave 上出现异常,异常包括但不限于:建表不成功,该表建立后权限存在问题,表的 UID 不是预期的 UID,资源管理的磁盘空间限制出错等现象,所以启用该参数时,需要使用者严格按照被同步的表都是指定的 databaser_user 的表。 |
cleanup_uncontrolled_data | 含义:是否清理目标表上不受控制的数据。 |
| 参数类型:[default:0, min:0, max:1]; |
| 注意事项和使用限制:0:不清理目标数据上不受控制的数据; 1:清理目标数据上不受控制的数据; |
3、源端生成测试数据
gbase> create table qwe (a int,b double,c varchar(100),d text,e blob,f longblob,g date,h timestamp);
Query OK, 0 rows affected (Elapsed: 00:00:00.22)
gbase> insert into qwe values(1,1.1,'czg','快乐的小天使','qwertasdsdfzxczxxv','gregergjsfishfuieehfuiew','1995-09-18','2022-08-03 09:24:00.000');
Query OK, 1 row affected (Elapsed: 00:00:00.14)
gbase> insert into qwe values(2,1.1,'zxj','快乐的小天使','qwertasdsdfzxczxxv','gregergjsfishfuieehfuiew','1995-09-18','2022-08-03 09:24:00.000');
Query OK, 1 row affected (Elapsed: 00:00:00.03)
gbase> insert into qwe select * from sun;
Query OK, 2 rows affected (Elapsed: 00:00:00.17)
Records: 2 Duplicates: 0 Warnings: 0
gbase> insert into qwe select * from sun;
Query OK, 4 rows affected (Elapsed: 00:00:00.14)
Records: 4 Duplicates: 0 Warnings: 0
gbase> select * from qwe;
4、目的端添加表结构
gbase> desc qwe;
+-------+--------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+-------------------+-----------------------------+
| a | int(11) | YES | | NULL | |
| b | double | YES | | NULL | |
| c | varchar(100) | YES | | NULL | |
| d | text | YES | | NULL | |
| e | blob | YES | | NULL | |
| f | longblob | YES | | NULL | |
| g | date | YES | | NULL | |
| h | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------+--------------+------+-----+-------------------+-----------------------------+
8 rows in set (Elapsed: 00:00:00.00)
5、配置同步的表
[gbase@xdw0 gcluster_rsynctool]$ cat SyncTab.txt
6、测试同步
[gbase@xdw0 gcluster_rsynctool]$ ./gcluster_rsynctool.py --master_mpp_ip=192.168.142.10 --slave_mpp_ip=192.168.142.11 --table_list_file=SyncTab.txt --rsync_mode=1 --log_level=5
*************Gcluster Sync Tool Start*************************
Table [ czg: sun] Sync Start
Table [ czg: sun] Sync End cost : <0 s,818 ms>
*************Gcluster Sync Tool End With Success**************
目的端查询数据