我试图了解如何从一开始就在 postgres 上开始逻辑复制。我正在尝试使用这个 python 库 psycopg
(https://www.psycopg.org/docs/index.html) 并进行所有设置……但我只捕获表的新更改,而不是其中的当前数据。我假设我需要指定 LSN 开始于 (doc: https://www.psycopg.org/docs/extras.html?highlight=loggingconnection#psycopg2.extras.ReplicationMessage.data_start)...但是如何获得 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)
答案 0 :(得分:0)
您不能从最初创建插槽之前的点开始流式传输。
要获取预先存在的数据,只需打开与数据库的第二个连接,然后使用 SELECT 或 COPY 读取现有数据。