返回首页

gbase数据、南大通用产品文档:GBase8c使用SQL 函数接口进行逻辑解码

更新日期:2024年09月11日

GBase 8c 可以通过调用SQL 函数,进行创建、删除、推进逻辑复制槽,获取解码后的
事务日志。
前提条件

逻辑日志目前从主机节点中抽取,默认关闭SSL 连接,如果进行逻辑复制,需要先上
配置GUC 参数ssl=on。
说明:为避免安全风险,请保证启用SSL 连接。

设置GUC 参数wal_level=logical。

设置GUC 参数max_replication_slots>每个节点所需的
(物理流复制槽数+逻辑复制槽数)

物理流复制槽提供了一种自动化的方法来确保主节点在所有备节点或从备节点收到
xlog 之前,xlog 不会被移除。也就是说物理流复制槽用于支撑主备节点HA。数据库所需要
的物理流复制槽数为:备节点加从备的和与主节点之间的比例。
例如,假设数据库的高可用
方案为1 主、1 备、1 从备,则所需物理流复制槽数为2。
关于逻辑复制槽数,请按如下规则考虑。

一个逻辑复制槽只能解码一个Database 的修改,如果需要解码多个Database,则
需要创建多个逻辑复制槽。

如果需要多路逻辑复制同步给多个目标数据库,
在源端数据库需要创建多个逻辑复
制槽,每个逻辑复制槽对应一条逻辑复制链路。

仅限初始用户和拥有REPLICATION 权限的用户进行操作。
三权分立关闭时数据库管理
员可进行逻辑复制操作,三权分立开启时不允许数据库管理员进行逻辑复制操作。

目前默认不支持主备从部署模式。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1127
操作步骤
1.
以数据库安装用户登录GBase 8c 数据库主节点。
2.
使用如下命令通过连接默认数据库postgres。
gsql -d postgres -p 16000 -r
其中,16000 为数据库端口号,用户可根据实际情况替换。
3.
创建名称为slot1 的逻辑复制槽。
postgres=# SELECT * FROM pg_create_logical_replication_slot('slot1', 'mppdb_decoding');
slotname | xlog_position
----------+---------------
slot1
| 0/601C150
(1 row)
4.
在数据库中创建表t,并向表t 中插入数据。
postgres=# CREATE TABLE t(a int PRIMARY KEY, b int);
postgres=# INSERT INTO t VALUES(3,3);
5.
读取复制槽slot1 解码结果,解码条数为4096。
postgres=# SELECT * FROM pg_logical_slot_peek_changes('slot1', NULL, 4096);
location
|
xid
| data
-----------+-------+-------------------------------------------------------------------------------------------
------------------------------------------------------
-------------------------------------------
0/601C188 | 1010023 | BEGIN 1010023
0/601ED60 | 1010023 | COMMIT 1010023 CSN 1010022
0/601ED60 | 1010024 | BEGIN 1010024
0/601ED60 | 1010024 |
{"table_name":"public.t","op_type":"INSERT","columns_name":["a","b"],"columns_type":["integ
er","integer"],"columns_val":["3","3"],"old_keys_name":[],"old_keys_type":[],"old_keys_val":[]}
0/601EED8 | 1010024 | COMMIT 1010024 CSN 1010023
(5 rows)
6.
删除逻辑复制槽slot1。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1128
postgres=#
SELECT * FROM pg_drop_replication_slot('slot1');
pg_drop_replication_slot
--------------------------
(1 row)

操作步骤

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
236
步骤1:修改安装目录下的gcChangeInfo.xml 文件,增加待扩容的节点IP,即将扩
容后的所有节点IP 都写入gcChangeInfo.xml 文件。
修改后的gcChangeInfo.xml 文件参考如下:
$ cat gcChangeInfo.xml








步骤2:执行创建distribution 的命令。
$ gcadmin distribution gcChangeInfo.xml p 1 d 1 db_user user_name db_pwd password vc vc1
gcadmin generate distribution ...
copy system table to 172.168.83.15
gcadmin generate distribution successful
完成后的集群信息如下:
$ gcadmin showdistribution vc vc1
Distribution ID: 3 | State: new | Total segment num: 3
Primary Segment Node IP
Segment ID
Duplicate Segment node IP
=========================================================================
|

本节的余下部分描述了 GBase 8s ODBC Driver 函数的诊断 SQLSTATE 值。
每个 SQLSTATE 值的返回码是 SQL_ERROR,否则是表示其它信息的描述。当函数返回
SQL_SUCCESS_WITH_INFO 或 SQL_ERROR,可以调用 SQLError 获取 SQLSTATE 值。