GaussDB-使用SQL函数接口进行逻辑解码

GaussDB-使用SQL函数接口进行逻辑解码

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

操作步骤

  1. 以具有REPLICATION权限的用户登录GaussDB集群任一主DN。
  2. 使用如下命令通过DN端口连接数据库。

     

    gsql -U user1 -W password -d gaussdb -p 40000 -r
     

    其中,user1为用户名,password为密码,gaussdb为需要连接的数据库名称,40000为数据库DN端口号,用户可根据实际情况替换。复制槽是建立在DN上的,因此需要通过DN端口连接数据库。

     

  3. 创建名称为slot1的逻辑复制槽。

     

    gaussdb=> SELECT * FROM pg_create_logical_replication_slot('slot1', 'mppdb_decoding');
    slotname | xlog_position
    ----------+---------------
    slot1    | 0/601C150
    (1 row)
     

     

  4. 在数据库中创建表t,并向表t中插入数据。

     

    gaussdb=> CREATE TABLE t(a int PRIMARY KEY, b int);
    gaussdb=> INSERT INTO t VALUES(3,3);
     

     

  5. 读取复制槽slot1解码结果,解码条数为4096。

     

    逻辑解码选项请参见逻辑解码选项

    gaussdb=> SELECT * FROM pg_logical_slot_peek_changes('slot1', NULL, 4096);
    location  |  xid  | data                                                                                         
    -----------+-------+-------------------------------------------------------------------------------------------------------------------------------------------------
    -------------------------------------------
     0/601C188 | 1010023 | BEGIN 1010023
     0/601ED60 | 1010023 | COMMIT 1010023 (at 2023-09-14 16:03:51.394287+08) CSN 1010022
     0/601ED60 | 1010024 | BEGIN 1010024
     0/601ED60 | 1010024 | {"table_name":"public.t","op_type":"INSERT","columns_name":["a","b"],"columns_type":["integer","integer"],"columns_val":["3","3"],"old_keys_name":[],"old_keys_type":[],"old_keys_val":[]}
     0/601EED8 | 1010024 | COMMIT 1010024 (at 2023-09-14 16:03:57.239821+08) CSN 1010023
    (5 rows)
     

     

  6. 删除逻辑复制槽slot1,删除业务表t。

     

    gaussdb=> SELECT * FROM pg_drop_replication_slot('slot1');
     pg_drop_replication_slot
    --------------------------
    
    (1 row)
    
    gaussdb=> DROP TABLE t;
    DROP TABLE
     

     

 
posted @ 2024-12-25 11:23  jerrywang1983  阅读(7)  评论(0)    收藏  举报