Postgres BDR复制已停止 - 复制槽未激活

时间:2016-05-18 19:53:15

标签: postgresql replication postgresql-bdr

我们的Postgres BDR数据库系统停止在节点之间复制数据。

当我使用l = [] for m in Message.objects.filter(dst=p).order_by('-date_last_modif'): for c in m.conversations.all(): if c not in l: l.append(c.pk) conversations_read = [c for c in Conversation.objects.filter(pk__in=l)] 进行检查时,我注意到复制槽中有一个不断增长的缓冲区。

pg_xlog_location_diff

我还注意到插槽被标记为active = false。

SELECT slot_name, database, active, pg_xlog_location_diff(pg_current_xlog_insert_location(), restart_lsn) AS retained_bytes
FROM pg_replication_slots
WHERE plugin = 'bdr';
                slot_name                |   database   | active | retained_bytes
-----------------------------------------+--------------+--------+----------------
 bdr_26702_6275336279642079463_1_20305__ | ourdatabase  | f      |       32253352

我增加了Postgres日志记录级别,但只有我在日志中看到的消息是:

SELECT * FROM pg_replication_slots;
-[ RECORD 1 ]+----------------------------------------
slot_name    | bdr_26702_6275336279642079463_1_20305__
plugin       | bdr
slot_type    | logical
datoid       | 26702
database     | ourdatabase
active       | f
xmin         |
catalog_xmin | 8041
restart_lsn  | 0/5F0C6C8

如果您知道如何重新激活复制插槽并允许复制恢复,请告诉我。

1 个答案:

答案 0 :(得分:0)

除非你真的有数量的数据,否则我看不出有任何理由不从头开始重新创建复制。停止从站,删除主站上的插槽,删除从站上的数据目录,创建新插槽(使用相同的名称以避免从站进一步更改),执行pg_basebackup。

你可以找到一个好的教程here