我正在尝试理解如何从一开始就在postgres上启动逻辑复制。我正在尝试使用python库psycopg (https://www.psycopg.org/docs/index.html),并将其全部用于setup...but。我只捕获表的新更改,而不捕获其中的当前数据。我假设我需要指定LSN开始于(doc:https://www.psycopg.org/docs/extras.html?highlight=loggingconnection#psycopg2.extras.ReplicationMessage.data_start)...but如何获得LSN的开始?
基本的python脚本看起来像这样:
import json
import random
import calendar
import time
from datetime import datetime
import psycopg2
from psycopg2.extras import LogicalReplicationConnection
my_connection = psycopg2.connect(
"dbname='dbname' host='host.com' user='user' password='pass'" ,
connection_factory = LogicalReplicationConnection)
cur = my_connection.cursor()
cur.drop_replication_slot('wal2json_test_slot')
cur.create_replication_slot('wal2json_test_slot', output_plugin = 'wal2json')
cur.start_replication(slot_name = 'wal2json_test_slot', options = {'pretty-print' : 1}, decode= True)
def consume(msg):
print (msg.payload)
cur.consume_stream(consume)发布于 2021-03-24 09:48:26
您不能从插槽最初创建位置之前的位置开始流式传输。
要获取预先存在的数据,只需打开到数据库的第二个连接,并使用SELECT或COPY读取现有数据。
https://stackoverflow.com/questions/66767644
复制相似问题