Postgresql Postgres复制插槽检查延迟
我试图在AWS RDS Aurora Postgres 11.9实例上检测我的三个逻辑复制插槽是否正在备份。我正在使用wal2json插件不断地读取它们。python进程正在读取其中两个插槽。第三个是卡夫卡连接消费者 我正在使用下面的查询,但是得到了赔率结果。这是说,我的两个槽是几个GB后面,即使在午夜,当我们有很小的负荷。我是否误解了问题的意思Postgresql Postgres复制插槽检查延迟,postgresql,Postgresql,我试图在AWS RDS Aurora Postgres 11.9实例上检测我的三个逻辑复制插槽是否正在备份。我正在使用wal2json插件不断地读取它们。python进程正在读取其中两个插槽。第三个是卡夫卡连接消费者 我正在使用下面的查询,但是得到了赔率结果。这是说,我的两个槽是几个GB后面,即使在午夜,当我们有很小的负荷。我是否误解了问题的意思 SELECT redo_lsn, slot_name,restart_lsn, round((redo_lsn-restart_lsn) /
SELECT redo_lsn, slot_name,restart_lsn,
round((redo_lsn-restart_lsn) / 1024 / 1024 / 1024, 2) AS GB_behind
FROM pg_control_checkpoint(), pg_replication_slots;
我检查过的东西:
gbu behind
值相同,当前为12.40
。即使这两个插槽位于不同的逻辑数据库上,而这些数据库的负载却截然不同(其中一个负载高出约1000倍)0
GB\u落后def consume(msg):
print(msg.payload)
try:
kinesis_client.put_record(StreamName=STREAM_NAME, Data=msg.payload, PartitionKey=partition_key)
except:
logger.exception('PG ETL: Failed to send load to kinesis. Likely too large.')
with con.cursor() as cur:
cur.start_replication(slot_name=replication_slot, options = {'pretty-print' : 1}, decode=True)
cur.consume_stream(consume)
在我的消费功能期间,我没有正确执行
send\u feedback
。所以我在消耗记录,但我没有告诉Postgres复制槽我已经消耗了记录
以下是我的完整消费功能,以防其他人感兴趣:
def consume(msg):
print(msg.payload)
try:
kinesis_client.put_record(StreamName=STREAM_NAME, Data=msg.payload, PartitionKey=partition_key)
except:
logger.exception('PG ETL: Failed to send load to kinesis. Likely too large.')
msg.cursor.send_feedback(flush_lsn=msg.data_start)
with con.cursor() as cur:
cur.start_replication(slot_name=replication_slot, options = {'pretty-print' : 1}, decode=True)
cur.consume_stream(consume)