南大通用数据库-Gbase-8a-MPP-Cluster-Gbase8a到Gbase8a的集群同步工具RSync-16

一、测试环境

名称
cpuIntel® Core™ i5-1035G1 CPU @ 1.00GHz
操作系统CentOS Linux release 7.9.2009 (Core)
内存4G
逻辑核数3
Gbase-8a源端节点-IP192.168.142.10
Gbase-8a目的端节点-IP192.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**************

目的端查询数据

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值