簡體   English   中英

kafka-connect 錯誤:無法獲得有效的復制槽

[英]kafka-connect Error: Unable to obtain valid replication slot

我的應用程序中的 Kafka debezium-postgres 連接器拋出此錯誤:

org.apache.kafka.connect.errors.ConnectException: Unable to obtain valid replication slot. Make sure there are no long-running transactions running in parallel as they may hinder the allocation of the replication slot when starting this connector
    at io.debezium.connector.postgresql.connection.PostgresConnection.readReplicationSlotInfo(PostgresConnection.java:226)
    at io.debezium.connector.postgresql.connection.PostgresConnection.getReplicationSlotState(PostgresConnection.java:150)
    at io.debezium.connector.postgresql.PostgresConnectorTask.start(PostgresConnectorTask.java:98)
    at io.debezium.connector.common.BaseSourceTask.start(BaseSourceTask.java:49)
    at org.apache.kafka.connect.runtime.WorkerSourceTask.execute(WorkerSourceTask.java:198)
    at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:175)
    at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:219)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)

該應用程序使用的PostgreSQL版本11年6月9日,的值max_replication_slots是10。我可以看到在數據庫中的活性邏輯replication_slot與confirmed_flush_lsn = NULL,restart_lsn =93043310分之3,catalog_xmin = 202656,活性= t時,datoid = 16407,slot_type = 邏輯,active_pid = 32183,插件 = wal2json,slot_name = slot1,database = db1(我已經用虛擬值替換了插槽名稱和數據庫名稱)
根據我的理解,因為這里的邏輯復制插槽的 Confirmed_flush_lsn = null 導致此錯誤,因為它阻止連接器找到此插槽。

我該如何解決這個問題,為什么confirmed_flush_lsn 值將為空?

我通過重新啟動連接器引用的 aws 中的 rds 數據庫實例來修復它,之后confirmed_flush_lsn 的值被重置為類似於(restart_lsn = 3/93043310)的非空值。 kafka-connect 能夠按預期找到 replication_slot“slot1”。 連接器也向上。 這暫時解決了我的問題,但我仍然想了解首先為邏輯 replication_slot 設置了 Confirmed_flush_lsn =null 的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM