Postgresql 使用postgres复制槽进行大数据处理的最佳做法是什么?

Postgresql 使用postgres复制槽进行大数据处理的最佳做法是什么?,postgresql,apache-kafka,replication,database-replication,debezium,Postgresql,Apache Kafka,Replication,Database Replication,Debezium,我正在使用kafka source connector,它从postgres中捕获数据并创建主题。我已经用成千上万的记录对它进行了测试。但我想知道,即使是1000万条记录,复制插槽是否也能正常工作。我需要采取任何额外的预防措施吗 因此,在9.3版和之前的版本中,在以下情况下会出现问题: 如果由于某种原因,副本在停止状态下停机很长一段时间并且没有出现,则使用1个主副本和1个副本保持简单; 如果备用服务器所需的主服务器的WAL段已经被回收,备用服务器就赶不上主服务器,为了解决这个问题,我们使用了一种

我正在使用kafka source connector,它从postgres中捕获数据并创建主题。我已经用成千上万的记录对它进行了测试。但我想知道,即使是1000万条记录,复制插槽是否也能正常工作。我需要采取任何额外的预防措施吗

因此,在9.3版和之前的版本中,在以下情况下会出现问题:

如果由于某种原因,副本在停止状态下停机很长一段时间并且没有出现,则使用1个主副本和1个副本保持简单; 如果备用服务器所需的主服务器的WAL段已经被回收,备用服务器就赶不上主服务器,为了解决这个问题,我们使用了一种称为WAL_keep_段的方法。设置一个更大的值,就可以解决问题

转到较新版本的postgres 9.4,我们得到了
复制槽

从官方文件来看:

复制插槽提供了一种自动方式,以确保主在所有备用设备收到WAL段之前不会删除WAL段,并且主设备不会删除即使在断开备用设备连接时也可能导致恢复冲突的行

因此,复制插槽基本上只保留已知需要的段数。因此,基本上,无论行数多少,它都将按照上面提到的设计方式运行


希望这能回答您的问题,更多信息请参见官方文档。

我不明白:复制插槽怎么会失败?这只是主服务器上的一个简单数据结构。感谢Laurenz Albe,实际上我对概念复制插槽还不熟悉。我试着去探索它。据我所知,它跟踪为复制/CDC捕获的记录。你能告诉我它是如何处理数据的吗。在生产环境中使用复制插槽的最佳做法是什么