我们希望使用Postgres逻辑复制将更改从上游服务器(“源”服务器)移动到下游服务器(“宿”服务器)。
我们在模拟灾难恢复方案时遇到问题。为了模拟这一点,我们在复制仍处于活动状态时删除了源数据库。然后,我们启动一个新的源数据库,并尝试:a)将数据从接收器移到源中,以及b)设置复制。在此阶段,根据设置复制的时间(在移动数据之前或之后),我们会收到两个错误之一。
经过上述测试后,我们得到的错误是以下其中一项:
LOG: logical replication apply worker for subscription "test_sub" has started
ERROR: could not start WAL streaming: ERROR: replication slot "test_sub" does not exist
LOG: worker process: logical replication worker for subscription 16467 (PID 205) exited with exit code 1
Tried amending using:
ALTER SUBSCRIPTION "test_sub" disable;
ALTER SUBSCRIPTION "test_sub" SET (slot_name = NONE);
DROP SUBSCRIPTION "test_sub";
ERROR: duplicate key value violates unique constraint "test_pkey"
DETAIL: Key (id)=(701) already exists.
CONTEXT: COPY test, line 1
一些可能的解决方法:
这是Postgres逻辑复制用例的很好分类吗?这是典型的灾难恢复方案,因此想知道如何最好地实施。谢谢!