GBase 8s 数据库ER同步原始数据

原文链接:

https://www.gbase.cn/community/post/3946

更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

在定义好复制服务器以及复制以后,执行 cdr start replicate可以将源库中的初始数据同步到目标服务器。该方法优点是过程简单,缺点是同步速度较慢。适用于数据量小的复制环境。相关的参数是CDR_QUEUEMEM。

同步的操作为在目标服务器上增加源服务器上存在而目标服务器中不存在的行和修改源服务器与目标服务器均存在但不一致的行。针对目标服务器上存在而源服务器中不存在的行的同步策略:

选项

说明

delete

根据参照完整性约束从目标服务器中删除行和从属行

keep

保留目标服务器上的行

merge

在目标服务器上保留行并将其复制到源服务器

测试环境:

两个实例中同时创建一个数据库testdb,并创建表t1-t5,均建有主键约束,然后分别向表中插入原始数据,如下:

group1

group2

t1

> select * from t1;

a           b

1           1

2           2

4           4

5           5

> select * from t1;

a           b

1           1

2           1

3           3

5           5

t2

> select * from t2;

a           b

1           1

5           5

2           2

4           4

> select * from t2;

a           b

1           1

2           1

3           3

5           5

t3

> select * from t3;

a           b

1           1

2           2

4           4

5           5

> select * from t3;

a           b

1           1

2           1

3           3

5           5

t4

> select * from t4;

a           b

1           1

2           2

4           4

5           5

6           6

> select * from t4;

a           b

1           1

2           1

3           3

5           5

6           6

t5

> select * from t5;

a           b

1           1

2           2

4           4

5           5

> select * from t5;

a           b

1           1

2           1

3           3

5           5

定义复制:
cdr define replicate --conflict=ignore   rep_testdb_t1 "testdb@group1:gbasedbt.t1" "select * from t1" "testdb@group2:gbasedbt.t1"  "select * from t1"
cdr define replicate --conflict=ignore   rep_testdb_t2 "testdb@group1:gbasedbt.t2" "select * from t2" "testdb@group2:gbasedbt.t2"  "select * from t2"
cdr define replicate --conflict=ignore   rep_testdb_t3 "testdb@group1:gbasedbt.t3" "select * from t3" "testdb@group2:gbasedbt.t3"  "select * from t3"
cdr define replicate --conflict=ignore   rep_testdb_t4 "testdb@group1:gbasedbt.t4" "select * from t4" "testdb@group2:gbasedbt.t4"  "select * from t4"
cdr define replicate --conflict=ignore  rep_testdb_t5 "testdb@group1:gbasedbt.t5" "select * from t5" "testdb@group2:gbasedbt.t5"   "select * from t5"
此时查看复制状态均为Inactive
[gbasedbt@gbase42 ~]$ cdr list repl rep_testdb_t1 rep_testdb_t2 rep_testdb_t3 rep_testdb_t4 rep_testdb_t5

DEFINED REPLICATES ATTRIBUTES
------------------------------
REPLICATE:        rep_testdb_t1
STATE:            Inactive ON:group2
CONFLICT:         Ignore
FREQUENCY:        immediate
QUEUE SIZE:       0
PARTICIPANT:      testdb:gbasedbt.t1
OPTIONS:          transaction,fullrow
REPLID:           131079 / 0x20007
REPLMODE:         PRIMARY  ON:group2
APPLY-AS:         GBASEDBT ON:group2
REPLTYPE:         Master

REPLICATE:        rep_testdb_t2
STATE:            Inactive ON:group2
CONFLICT:         Ignore
FREQUENCY:        immediate
QUEUE SIZE:       0
PARTICIPANT:      testdb:gbasedbt.t2
OPTIONS:          transaction,fullrow
REPLID:           131080 / 0x20008
REPLMODE:         PRIMARY  ON:group2
APPLY-AS:         GBASEDBT ON:group2
REPLTYPE:         Master

REPLICATE:        rep_testdb_t3
STATE:            Inactive ON:group2
CONFLICT:         Ignore
FREQUENCY:        immediate
QUEUE SIZE:       0
PARTICIPANT:      testdb:gbasedbt.t3
OPTIONS:          transaction,fullrow
REPLID:           131081 / 0x20009
REPLMODE:         PRIMARY  ON:group2
APPLY-AS:         GBASEDBT ON:group2
REPLTYPE:         Master

REPLICATE:        rep_testdb_t4
STATE:            Inactive ON:group2
CONFLICT:         Ignore
FREQUENCY:        immediate
QUEUE SIZE:       0
PARTICIPANT:      testdb:gbasedbt.t4
OPTIONS:          transaction,fullrow
REPLID:           131082 / 0x2000a
REPLMODE:         PRIMARY  ON:group2
APPLY-AS:         GBASEDBT ON:group2
REPLTYPE:         Master

REPLICATE:        rep_testdb_t5
STATE:            Inactive ON:group1
CONFLICT:         Ignore
FREQUENCY:        immediate
QUEUE SIZE:       0
PARTICIPANT:      testdb:gbasedbt.t5
OPTIONS:          transaction,fullrow
REPLID:           131083 / 0x2000b
REPLMODE:         PRIMARY  ON:group1
APPLY-AS:         GBASEDBT ON:group1
REPLTYPE:         Master
启动复制:
cdr start repl rep_testdb_t1 
cdr start repl rep_testdb_t2 --syncdatasource=group1 --extratargetrows=delete
cdr start repl rep_testdb_t3 --syncdatasource=group1 --extratargetrows=keep
cdr start repl rep_testdb_t4 --syncdatasource=group1 --extratargetrows=merge
cdr start repl rep_testdb_t5 --syncdatasource=group1
原始数据对比:

启动复制前group1

启动复制前group2

启动复制后group1

启动复制后group2

t1

> select * from t1;

a           b

1           1

2           2

4           4

5           5

> select * from t1;

a           b

1           1

2           1

3           3

5           5

> select * from t1;

a           b

1           1

2           2

4           4

5           5

> select * from t1;

a           b

1           1

2           1

3           3

5           5

t2

> select * from t2;

a           b

1           1

5           5

2           2

4           4

> select * from t2;

a           b

1           1

2           1

3           3

5           5

> select * from t2;

a           b

1           1

5           5

2           2

4           4

> select * from t2;

a           b

1           1

2           2

5           5

4           4

t3

> select * from t3;

a           b

1           1

2           2

4           4

5           5

> select * from t3;

a           b

1           1

2           1

3           3

5           5

> select * from t3;

a           b

1           1

2           2

4           4

5           5

> select * from t3;

a           b

1           1

2           2

3           3

5           5

4           4

t4

> select * from t4;

a           b

1           1

2           2

4           4

5           5

6           6

> select * from t4;

a           b

1           1

2           1

3           3

5           5

6           6

> select * from t4;

a           b

1           1

2           2

4           4

5           5

6           6

3           3

> select * from t4;

a           b

1           1

2           2

3           3

5           5

6           6

4           4

t5

> select * from t5;

a           b

1           1

2           2

4           4

5           5

> select * from t5;

a           b

1           1

2           1

3           3

5           5

> select * from t5;

a           b

1           1

2           2

4           4

5           5

> select * from t5;

a           b

1           1

2           2

5           5

4           4

结论:
  • 不使用-S 参数指定数据源,则不开启原始同步,对复制启动前的数据不做处理;
  • 使用-S参数指定数据源,目标端多余行(以主键为依据)的删除,此时目标端与源端数据保持一致;
  • 使用-S参数指定数据源,目标端多余行的保留,此时目标端数据为源端数据+目标端多余行;
  • 使用-S参数指定数据源,目标端多余行的合并,此时目标端与源端数据一致,均为源端数据+目标端多余行;
  • 使用-S参数指定数据源,缺省对目标端多余行的行为为删除

GBase 8s 数据库的复制技术不仅提高了数据的可用性,还通过灵活的冲突处理策略,满足了多样化的业务需求。掌握这些技术,将有助于构建更加健壮和灵活的数据架构。

原文链接:

https://www.gbase.cn/community/post/3946

更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值