云数据库 GAUSSDB-使用SQL函数接口进行逻辑解码:操作步骤

时间:2024-11-02 18:53:35

操作步骤

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

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

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

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

    1
    2
    3
    4
    5
    openGauss=# SELECT * FROM pg_create_logical_replication_slot('slot1', 'mppdb_decoding');
    slotname | xlog_position
    ----------+---------------
    slot1    | 0/601C150
    (1 row)
    

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

    1
    2
    openGauss=# CREATE TABLE t(a int PRIMARY KEY, b int);
    openGauss=# INSERT INTO t VALUES(3,3);
    

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

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    openGauss=# SELECT * FROM pg_logical_slot_peek_changes('slot1', NULL, 4096);
    location  |  xid  | data                                                                                         
    -----------+-------+-------------------------------------------------------------------------------------------------------------------------------------------------
    -------------------------------------------
     0/601C188 | 1010023 | BEGIN 1010023
     0/601ED60 | 1010023 | COMMIT 1010023  CS N 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 CSN 1010023
    (5 rows)
    

  6. 删除逻辑复制槽slot1。

    1
    2
    3
    4
    5
    openGauss=# SELECT * FROM pg_drop_replication_slot('slot1');
     pg_drop_replication_slot
    --------------------------
    
    (1 row)
    

support.huaweicloud.com/distributed-devg-v2-gaussdb/gaussdb-12-1093.html