GBASE南大通用-Base 8a集群同步工具超详细指南 手把手带您玩转灾备

发布时间:2023年12月29日

1工具介绍

GBase 8a集群间同步工具是基于集群的底层二进制数据同步的工具,其同步的对象是库内的数据,通过解析、对比智能索引中摘要信息的变化,来实现同构集群的同构表的数据复制功能,目前已经支持图形化操作,主要功能点:

1.支持增量和全量两种数据同步方式;

2.支持落盘数据的回读校验;

3.支持主备分片同时同步;

4.支持先同步主分片,主分片成功后再同步备份分片;

5.支持使用普通数据库用户进行同步;

6.支持主集群源表重组后备集群的空间回收;

7.支持备集群同步表自动创建;

8.支持同步限制带宽;

9.支持同步数据二次压缩传输;

10.支持主备集群跨网段同步(ip mapping映射)。

2安装部署

集群间同步工具可部署在与主备集群网络互通的任意服务器上,使用前将安装包拷贝至执行用户具有读写权限的目录下,直接解压即可。

1.解压命令:

$ tar -xif gcluster_rsynctool-9.5.3.28.2-redhat7-x86_64.tar.bz2

2.部署示意图:

图片

使用参数说明

命令格式:

Usage: gcluster_rsynctool.py [option]

Options:

-h, --help

含义:显示工具帮助信息

参数类型:可选参数, 取值范围:无

注意事项和使用限制:指定该参数直接显示帮助信息后工具退出运行

-v, --version

含义:显示工具版本信息

参数类型:可选参数,取值范围:无

注意事项和使用限制:指定该参数直接显示帮助信息后工具退出运行

--master_mpp_ip=MASTER_MPP_IP

含义:用于指定主集群的coordinator 任一节点IP地址,

参数类型:必选参数

注意事项和使用限制:只支持IPV4格式的IP地址

--master_mpp_gc_port=MASTER_MPP_GC_PORT?

含义:用于指定主集群的coordinator端口信息

参数类型:可选参数,取值范围【default:5258, min:1,max:65536】

注意事项和使用限制:如端口信息不是默认值,请指定该参数

--master_mpp_gn_port=MASTER_MPP_GN_PORT?

含义:用于指定主集群的gnode端口信息

参数类型:可选参数,取值范围【default: 5050,min:1,max:65536】

注意事项和使用限制:如端口信息不是默认值,请指定该参数

--slave_mpp_ip=SLAVE_MPP_IP

含义:用于指定备集群的coordinator 任一节点 IP地址

参数类型:必选参数

注意事项和使用限制:只支持IPV4格式的IP地址

--slave_mpp_gc_port=SLAVE_MPP_GC_PORT?

含义:用于指定备集群的coordinator端口信息

参数类型:可选参数,取值范围【default:5258,min:1,max:65536】

注意事项和使用限制:如端口信息不是默认值,请指定该参数

--slave_mpp_gn_port=SLAVE_MPP_GN_PORT?

含义:用于指定备集群的gnode端口信息

参数类型:可选参数, 取值范围【default: 5050,min:1,max:65536】

注意事项和使用限制:如端口信息不是默认值,请指定该参数

--database_user=DATABASE_USER??

含义:用于指定连接主、备集群的数据库用户

参数类型:必选参数

注意事项和使用限制:需要具有访问‘table_list_file’中定义的表的权限,该用户需要同时存在于主备集群。

--master_mpp_gc_pw=MASTER_MPP_GC_PW?

含义:用于指定主集群的数据库用户密码

参数类型:必选参数

注意事项和使用限制:如果数据库用户密码不是默认值,请指定该参数

--slave_mpp_gc_pw=SLAVE_MPP_GC_PW?

含义:用于指定备集群的数据库用户密码

参数类型:必选参数,

注意事项和使用限制:如果数据库用户密码不是默认值,请指定该参数

--table_list_file=TABLE_LIST_FILE?

含义:用于被同步表的配置文件

参数类型:必选参数

注意事项和使用限制:文件名,该文件内容为需要同步的表列表,可以只有一张表。文件内容格式为DBName.TBName,用换行符进行分割,支持windows换行符和linux换行符,但必须统一,即文件内只能出现一种换行符。

--table_parallel_degree=TABLE_PARALLEL_DEGREE?

含义:用于指定集群间同步每次并行同步的表的数量

参数类型:可选参数, 取值范围【default:1,min:1, max:128】

注意事项和使用限制:该参数需要根据主、备集群负载,业务并行度进行调节;当作业并行度低,主备集群负载不高的情况下,可适当增大该配置参数

--lock_table_timeout=LOCK_TABLE_TIMEOUT??

含义:用于指定集群间同步工具对主集群、备集群表加锁的超时时间

参数类型:可选参数, 取值范围【unit:second,default:600,min:1, max:3600】

注意事项和使用限制:由于锁是用来互斥表的写操作,该参数需要根据表的写操作最大时间进行适当延长;

--retry_times=RETRY_TIMES ?

含义:用于指定底层分片对分片的同步失败后的重试次数

参数类型:可选参数, 取值范围【unit:次,default:1,min:1, max:10】

注意事项和使用限制:该参数主要取决于网络状态,在网络状态不佳(闪断、网络阻塞)的情况下,会出现分片对分片的同步失败情况,需要重试来保障同步成功,需要根据网络状态进行适当的调大;

--retry_interval=RETRY_INTERVAL

含义:用于指定底层分片对分片的同步失败后的每次重试的时间间隔

参数类型:可选参数, 取值范围【unit:second,default:10,min:1, max:1800】

注意事项和使用限制:该参数主要取决于网络状态,在网络状态不佳(闪断、网络阻塞)的情况下,会出现分片对分片的同步失败情况,失败后需要等待一段时间,期待网络恢复,然后再进行尝试,这个参数只是一个经验参数,不能确保等待一段时间后网络一定会恢复完,并且同步成功;

--sync_mode=SYNC_MODE?

含义:用于指定数据同步的模式【粗糙过滤,增量同步,全量同步】

参数类型:可选参数, 取值范围【default:2,min:1, max:3】

注意事项和使用限制:

参数取值含义和使用场景:

1:粗糙过滤:

含义:进行表的变更标识检查,如主备集群的表变更标识相同,直接跳过该表,不做同步;表的变更标识不同,再做每个列级别的变更标识检查,进行增量同步;

适用场景: 该参数值适用于备集群初始化完毕后,增量数据的同步,这种情况下建议使用该参数;

2:增量同步:

含义:不做表的变更标识检查,直接做每个列级别的变更标识检查,进行增量同步;

适用场景:该参数值适用于备集群初始化完毕后,增量数据的同步,该参数是由于版本迭代历史原因保留,完全是为了版本兼容性;

3:全量同步:

含义:不做任何级别的变更标识检查,直接用主机群的数据覆盖备集群的数据;

适用场景:该参数值适用于需要人为覆盖备集群的所有数据时,这种情况一般发生在如下几种情况:

1)对备份集群的表进行过手动修改,数据已经不可信;

2)备集群的表数据发生损坏,需要重建修复;

3)备集群初始化;

--error_table_list_file=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=LOG_NAME??

含义:用于指定工具日志的存储文件

参数类型:可选参数, 取值范围【default: 当前目录/gcluster_rsynctool_yyyy_mm_dd.log】

注意事项和使用限制:指定的目录位置要有工具执行用户的写权限

--log_level=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=RSYNC_MODE?

含义:用于指定工具调度模式

参数类型:可选参数,取值范围【default:2,min:0, max:2】

注意事项和使用限制:

0:主分片同步,备分片设定状态

含义:只同步备集群表的一组分片,其他备份的分片设定状态, 通过集群内部的自动恢复机制进行恢复

适用场景:该参数值不建议使用,仅仅为了版本兼容保留

1: 主备同时同步

含义:同时同步备集群的主、备分片,单表同步的性能能够达到最大化

适用场景:该参数值不建议使用,存在一个分片的主备都同步失败,表不可用的情况,该参数是当初设计是为了数据安全性不高的场景;

2: 先主后备同步方式.

含义:先同步备集群表的主分片,主分片同步成功后再同步备分片,确保备集群的表在同步失败后存在一组可用分片,用来回滚同步操作;

适用场景:建议使用该参数,保证备集群表的数据安全;

--double_check??

含义:用于指定是否启用回读校验

参数类型:可选参数,无参参数,取值范围【default:false】

注意事项和使用限制:数据写入磁盘后,回读检查备集群表数据;该参数会降低同步的性能,同时增加备集群的磁盘IO消耗;可以在部署初期为了验证同步的正确性时采用;

--slave_create_table_if_not_exists

含义:是否启用在备集群建表

参数类型:可选参数,取值范围【default:false】

参数使用注意事项:

该参数在启用后,会在slave需要建表时,使用集群间同步工具指定的databaser_user建表,如master上的表不是由该用户建立,会导致slave上出现异常,异常包括但不限于:建表不成功,该表建立后权限存在问题,表的UID不是预期的UID,资源管理的磁盘空间限制出错等现象,所以启用该参数时,需要使用者严格按照被同步的表都是指定的databaser_user的表。

--master_mpp_ip_mapping_file=MASTER_MPP_IP_MAPPING_FILE

含义:用于存储主集群ip mapping映射的文件

参数类型:可选参数

参数使用注意事项:

该参数用于IP mapping映射功能,如果在V9.5.3版本使用,需先修改如下配置文件方可正常同步:

1:修改集群节点的synctool配置文件,添加以下对外绑定ip和端口,然后重启syncserver服务

BIND_ADDRESS_ADDITIONAL=对外绑定IP

SERVER_PORT_ADDITIONAL=端口

2:修改集群节点gbase配置文件,添加以下对外绑定ip和端口,然后重启gbase服务

bind-address_additional=对外绑定ip

port_additional=端口

3:手动配置好主备集群ip mapping转换规则,以一个数据节点为例,转换规则配置如下:

这里from是节点对内ip,to是需要转换的对外ip,GNPORT是gbase的对外端口,SYNCPORT是synctool的对外端口。

注意这里的对外ip要与前面的gbase,syncserver的对外绑定ip一致,端口也是一样,GNPORT要与gbase的port_additional一致,SYNCPORT要与SERVER_PORT_ADDITIONAL一致。格式如下:

{

??? "OWNER":"MASTER",

??? "IPMAPPING":[

??????? {

??????????? "FROM":"192.168.8.147",

??????????? "TO":"100.100.100.147",

??????????? "GNPORT":"5060",

??????????? "SYNCPORT":"5289"

??????? }

??? ]

}

注,在V9.5.2版本使用ip mapping映射功能,可省略步骤1)和步骤2),且步骤3)中的ip mapping转换规则无需指定GNPORT和SYNCPORT端口参数,默认采用5050作为对外端口。

--slave_mpp_ip_mapping_file=SLAVE_MPP_IP_MAPPING_FILE

含义:用于存储备集群ip mapping映射的文件

参数类型:可选参数

参数使用注意事项:参考--master_mpp_ip_mapping_file。

格式如下:

{

??? "OWNER":"SLAVE",

??? "IPMAPPING":[

??????? {

??????????? "FROM":"192.168.8.148",

??????????? "TO":"100.100.100.148",

??????????? "GNPORT":"5060",

??????????? "SYNCPORT":"5289"

??????? }

??? ]

}

--sync_network_bandwidch

含义:用于指定同步数据传输的带宽

参数类型:可选参数,取值范围【unit:M/s,default:0】

参数使用注意事项:

为节省带宽,可对同步进行限流,在单机层synctool.cnf中进行如下配置:

BANDWIDTH_QOS_SWITCH=1 (1为打开限速功能,0为关闭,默认关闭)

另,为节省带宽,也可对同步进行传输数据进行二次压缩,在单机层synctool.cnf中进行如下配置即可,同步语句中无需再指定参数:

COMPRESSED_SWITCH=1 (1为打开压缩传输功能,0为关闭,默认关闭)

限速和压缩功能可分别或同时开启,参数名必须为大写。

3操作示例

1、兼容模式集群之间的同步

1)主备集群架构:

兼容模式:2个节点,p 1 d 1

2)主备集群建表:

drop database if exists test;

create database test;

use test;

create table t(a int)distributed by ('a');

3)主集群插入数据:

insert into t values(1),(2),(3),(4),(5),(6),(7),(8),(9),(0);

4)编写同步表列表文件,比如t.txt:

$ cat t.txt:

test.t

5)执行同步命令:

$ ./gcluster_rsynctool.py --master_mpp_ip=10.10.3.193 --slave_mpp_ip=10.10.3.168 --master_mpp_gc_pw=***** --slave_mpp_gc_pw=***** --table_list_file=t.txt

注:默认采用--sync_mode增量同步

2、兼容模式集群之间的同步

1)主备集群架构:

vc模式:单vc含2个节点,p 1 d 1

2)主备集群建表:

use vc vc1;

drop database if exists test;

create database test;

use test;

create table t(a int)distributed by ('a');

3)主集群插入数据:

insert into t values(1),(2),(3),(4),(5),(6),(7),(8),(9),(0);

4)编写同步表列表文件,比如t.txt:

$ cat t.txt:

test.t

5)执行同步命令:

$ ./gcluster_rsynctool.py --master_mpp_ip=10.10.3.193 --slave_mpp_ip=10.10.3.168 --master_mpp_gc_pw=***** --slave_mpp_gc_pw=***** --table_list_file=t.txt --sync_vc_name=vc1

注:每次只能同步同一vc的数据表,且--table_list_file内容格式为dbname.tbname不包含vc名

3、限制带宽同步

1)主备集群架构:单实例:单vc含2个节点,p 1 d 1

2)主备集群建表:

use vc vc1;

drop database if exists test;

create database test;

use test;

create table t(a int)distributed by ('a');

3)主集群插入数据:

insert into t values(1),(2),(3),(4),(5),(6),(7),(8),(9),(0);

4)编写同步表列表文件:

$ cat t.txt:

test.t

5)主备集群各单机配置文件synctool.conf添加参数:

BANDWIDTH_QOS_SWITCH=1

6)执行同步命令:

$ ./gcluster_rsynctool.py --master_mpp_ip=10.10.3.193 --slave_mpp_ip=10.10.3.168 --master_mpp_gc_pw=***** --slave_mpp_gc_pw=***** --table_list_file=t.txt --sync_vc_name=vc1 ?--sync_network_bandwidth=100

注,主备集群所有data节点均需添加限速参数BANDWIDTH_QOS_SWITCH=1,且必须大写,修改后重启syncserver服务。若主备集群是否限速配置不一致,则同步失败。

4、压缩传输同步

1)主备集群架构:单实例:单vc含2个节点,p 1 d 1

2)主备集群建表:

use vc vc1;

drop database if exists test;

create database test;

use test;

create table t(a int)distributed by ('a');

3)主集群插入数据:

insert into t values(1),(2),(3),(4),(5),(6),(7),(8),(9),(0);

4)编写同步表列表文件:

$ cat t.txt:

test.t

5)主备集群各单机配置文件synctool.conf添加参数:

COMPRESSED_SWITCH=1

6)执行同步命令:

$ ./gcluster_rsynctool.py --master_mpp_ip=10.10.3.193 --slave_mpp_ip=10.10.3.168 --master_mpp_gc_pw=***** --slave_mpp_gc_pw=*****??--table_list_file=t.txt --sync_vc_name=vc1

注,主备集群所有data节点均需添加压缩参数COMPRESSED_SWITCH=1,且必须大写,修改后重启syncserver服务。同步语句无需单独再指定参数。若主备集群是否压缩传输配置不一致,则同步失败。

5、多实例集群ip mapping映射同步

1)主备集群架构:多实例:单vc含4个节点,p 1 d 1,其中单物理机2个ip地址

2)网络配置,比如:

主集群网段为10.10.*.*,对外网段为10.40.*,*

备集群网段为10.11.*.*,对外网段为10.40.*,*

同步工具网段为10.40.*.*

主备集群间不互通,但均与rsynctool同步工具网络互通

3)主备集群建表:

use vc vc1;

drop database if exists test;

create database test;

use test;

create table t(a int)distributed by ('a');

4)主集群插入数据:

insert into t values(1),(2),(3),(4),(5),(6),(7),(8),(9),(0);

5)编写同步表列表文件:

$ cat t.txt:

test.t

6)主集群配置文件添加参数:

以其中一个节点10.10.3.193为例:

A)gbase_8a_gbase.cnf

bind_address_additional=10.40.1.127

port_additional=6001

B) synctool.conf

BIND_ADDRESS_ADDITIONAL=10.40.1.127

SERVER_PORT_ADDITIONAL=7001

同一物理机上的10.10.100.1节点:

A)gbase_8a_gbase.cnf

bind_address_additional=10.40.1.127

port_additional=6002

主集群ip mapping映射文件:

$ cat master_1

{

??? "OWNER":"MASTER",

??? "IPMAPPING":[

??????? {

??????????? "FROM":"10.10.3.193",

??????????? "TO":"10.40.1.127",

??????????? "GNPORT":"6001",

??????????? "SYNCPORT":"7001"

??????? },

??????? {

??????????? "FROM":"10.10.0.25",

??????????? "TO":"10.40.4.27",

??????????? "GNPORT":"6001",

??????????? "SYNCPORT":"7001"

??????? },

??????? {

??????????? "FROM":"10.10.100.1",

??????????? "TO":"10.40.1.127",

??????????? "GNPORT":"6002",

??????????? "SYNCPORT":"7002"

??????? },

??????? {

??????????? "FROM":"10.10.100.2",

??????????? "TO":"10.40.4.27",

??????????? "GNPORT":"6002",

??????????? "SYNCPORT":"7002"

??????? }

??? ]

}

7)备集群配置文件添加参数:

以其中一个节点10.10.3.168为例:

A)gbase_8a_gbase.cnf

bind_address_additional=10.40.2.228

port_additional=6001

B)synctool.conf

BIND_ADDRESS_ADDITIONAL=10.40.2.228

SERVER_PORT_ADDITIONAL=7001

同一物理机上的10.10.100.3节点

A)gbase_8a_gbase.cnf

bind_address_additional=10.40.2.228

port_additional=6002

B)synctool.conf

BIND_ADDRESS_ADDITIONAL=10.40.2.228

SERVER_PORT_ADDITIONAL=7002

备集群ip mapping映射文件:

$ cat slave_1

{

??? "OWNER":"SLAVE",

??? "IPMAPPING":[

??????? {

??????????? "FROM":"10.11.3.168",

??????????? "TO":"10.40.2.228",

??????????? "GNPORT":"6001",

??????????? "SYNCPORT":"7001"

??????? },

??????? {

??????????? "FROM":"10.11.2.209",

??????????? "TO":"10.40.2.98",

??????????? "GNPORT":"6001",

??????????? "SYNCPORT":"7001"

??????? },

?????? {

??????????? "FROM":"10.11.100.3",

??????????? "TO":"10.40.2.228",

??????????? "GNPORT":"6002",

??????????? "SYNCPORT":"7002"

??????? },

??????? {

??????????? "FROM":"10.11.100.4",

??????????? "TO":"10.40.2.98",

??????????? "GNPORT":"6002",

??????????? "SYNCPORT":"7002"

??????? }

??? ]

}

8)执行同步命令:

$ ./gcluster_rsynctool.py --master_mpp_ip=10.10.3.193 --slave_mpp_ip=10.10.3.168 --table_list_file=t.txt --master_mpp_gc_pw=*****

--slave_mpp_gc_pw=*****?

--master_mpp_ip_mapping_file=master_1 --slave_mpp_ip_mapping_file=slave_1 --sync_vc_name=vc1

注,mpping_file内容需与单机gbased及syncserver配置文件中的参数值一致,且参数名大小写严格匹配,修改后重启gbased及syncserver服务。若配置不一致,则同步失败。

文章来源:https://blog.csdn.net/weixin_47390342/article/details/135292709
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。