簡體   English   中英

如何檢查 PostgreSQL 邏輯復制槽是否已經存在於 java?

[英]How to check if a PostgreSQL logical replication slot already exists with java?

我正在使用 PostgreSQL 復制 API 創建一個帶有 Java 代碼的邏輯復制槽,我想在創建過程之前添加一個測試以檢查該槽是否已經存在。 這是我的代碼:

connection.getReplicationAPI()
.createReplicationSlot()
.logical()
.withSlotName(slotName)
.withOutputPlugin("test_decoding")
.make();
SELECT
  slot_name,
  plugin,
  slot_type,
  datoid,
  database,
  temporary,
  active,
  active_pid,
  xmin,
  catalog_xmin,
  restart_lsn,
  confirmed_flush_lsn
FROM pg_replication_slots
WHERE slot_name = ?

我想你可以通過以下方式檢查它:

    log.info("creating replication slot, slotName={}", slotName);
try {
  connection.getReplicationAPI()
      .createReplicationSlot()
      .logical()
      .withSlotName(slotName)
      .withOutputPlugin("test_decoding")
      .make();
  log.info("replication slot created");
} catch (Exception e) {
  if (e.getMessage()
      .equals("ERROR: replication slot \"" + slotName
          + "\" already exists")) {
    log.info("replication slot exists, not creating");
  } else {
    log.error("error creating replication slot", e);
    throw new RuntimeException(e);
  }
}

暫無
暫無

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

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