在当今的企业运营中数据的一致性和实时性对于保障业务连续性和决策支持至关重要。南大通用GBase 8s数据库通过其企业复制(Enterprise Replication,简称ER)功能,提供了一种高效的数据复制解决方案。本文将详细指导如何搭建和部署GBase 8s的ER环境,确保数据在不同服务器间的同步和一致性。

一、概述

1、ER定义

GBase 8s Enterprise Replication简称ER(数据库复制技术),是一种基于逻辑日志的异步传输复制工具。ER不仅支持对数据库和表的复制,还支持灵活定义复制条件,因此适用与企业的各个组织机构共享企业共同的数据资源。

2、工作原理

源服务器上的企业复制应用程序在被定义为复制的数据库中执行事务,并将事务放入逻辑日志中,通过日志捕获组件、分组组件、消息队列将复制数据可靠地传输到目标服务器,目标服务器上的企业复制应用程序成功接收事务后,将其内容作用于特定数据库上的特定表,以此实现数据库表内容与源服务器的一致性。

二、ER部署

下面以两台机器上搭建ER环境为例,简述GBse8s ER的搭建步骤:

 

节点1

节点2

主机名称

Node1

Node2

group

group1

group2

主机IP

172.16.6.1

172.16.6.2

实例名称

gbaseserver_1

gbaseserver_2

实例端口

10081

10082

数据库空间路径

/data/chunk

/data/chunk

1、配置操作系统互认

1)修改/etc/hosts.equiv(若没有可自行创建)

Node1:

cat /etc/hosts.equiv
+ +

Node2:

cat /etc/hosts.equiv
+ +

2)修改/etc/ssh/sshd_config

PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      ~gbasedbt/.ssh/authorized_keys

3)配置SSH互信

分别在两台机器的~gbasedbt目录下创建.ssh文件夹,以gbasedbt用户执行以下步骤:

cd .ssh
ssh-keygen -t rsa    //一直回车
ssh-keygen -t dsa    //一直回车
cat id_rsa.pub>>./authorized_keys
cat id_dsa.pub>>./authorized_keys

执行完毕后将两边的authorized_keys互换

设置authorized_keys的权限为644,.ssh的权限为755

4) 关闭SELNUX、关闭防火墙

2、安装GBase 8s

首先,我们需要分别在两台服务器上安装GBase 8s 数据库,安装过程在这里不做赘述。

3、配置CDR

1)在/etc/services文件中添加对方主机服务的端口

Node1添加:

gbaseserver_2     10082

Node2添加:

gbaseserver_1     10081

2)修改两实例的sqlhost文件

$GBASEDBTDIR/etc/sqlhost.gbaseserver_1

$GBASEDBTDIR/etc/sqlhost.gbaseserver_2

group1             group    -      -     i=1
gbaseserver_1 onsoctcp             172.16.6.1    10081    g=group1
group2             group    -      -     i=2
gbaseserver_2 onsoctcp             172.16.6.2    10082    g=group2

3)创建数据空间

以gbaseserver_1为例,gbaseserver_2步骤相同

# 创建dbspaces,作为同步用的数据库空间
cd /data/chunk
touch erdbs
chown gbasedbt:gbasedbt erdbs
chmod 660 erdbs 
onspaces -c -d erspace -p /data/chunk/erdbs -o 0 -s 1048576
touch er_lobspace
chown gbasedbt:gbasedbt er_lobspace
chmod 660 er_lobspace
onspaces -c -S er_lobspace -g 2 -p /data/chunk/er_lobspace -o 0 -s 1048576

4)创建日志同步目录

mkdir cdrcheck
chown gbasedbt:gbasedbt ./cdrcheck/

5)分别修改两实例的配置文件onconfig.gbaseserver_1,onconfig.gbaseserver_2

CDR_QHDR_DBSPACE   erspace
CDR_QDATA_SBSPACE   er_lobspace

6)重启数据库使配置生效

7)设置时钟同步

8)创建测试库、测试表

Node1:

CREATE DATABASE DB_ER WITH LOG;
DATABASE DB_ER;
CREATE TABLE TAB_1 (ID INT PRIMARY KEY, COL1 VARCHAR(10));

Node2:

CREATE DATABASE DB_ER WITH LOG;
DATABASE DB_ER;
CREATE TABLE TAB_1 (ID INT PRIMARY KEY, COL1 VARCHAR(10));

4、设置同步规则

ER支持update-anywhere、update-target、条件复制等多种灵活的复制模式,在此我们以update-anywhere为例进行介绍:

1)设置主服务器

在Node1执行:

cdr define server -s erspace -A /data/chunk/cdrcheck -I group1 -s space --send=space

2)设置从服务器

在Node2执行:

cdr define server -c group2 -A /data/chunk/cdrcheck -R /data/chunk/cdrcheck -I -S group1 group2

3)查看企业复制服务器的列表

cdr list server

4)设置同步规则

cdr define replicate -C ignore -S trans -i -A -R repl_1 "db_er@group1:gbasedbt.tab_1" "select * from tab_1" "db_er@group2:gbasedbt.tab_1" "select * from tab_1"

      此时复制为Inactive状态

5)启动同步主服务器和应用服务器

cdr start repl repl_1

至此,所有配置成功。

5、验证ER

1)查看复制

cdr list repl

此时复制为Active状态

2)主节点更新数据,从节点同步更新

实例gbaseserver_1

dbaccess db_er -
> insert into tab_1 values(1, ‘test group1’);
1 row(s) inserted.

实例gbaseserver_2

dbaccess db_er -
> select * from tab_1;
    id          col1
    1            test group1
1 row(s) retrieved.

3)从节点更新数据,主节点同步更新

实例gbaseserver_2

dbaccess db_er -
> insert into tab_1 values(2, ‘test group2’);
1 row(s) inserted.

实例gbaseserver_1

dbaccess db_er -
> select * from tab_1;
    id          col1
    1            test group1
    2            test group2
2 row(s) retrieved.

 

通过本文的详细指导,您应能成功搭建和部署GBase 8s的ER环境。数据复制是确保数据高可用性和灾难恢复的关键技术。我们希望本文能帮助您充分利用GBase 8s的ER功能,为企业数据的安全性和一致性提供坚实的保障。