Postgresql

創建 PostgreSQL 9.5 副本的問題

  • January 3, 2018

我正在嘗試為 PostgreSQL 9.5 主伺服器創建一個熱備份副本。

我使用的基本過程是在 master 上啟動備份:

SELECT pg_start_backup('label', true)

然後在從屬伺服器上執行 pg_basebackup:

pg_basebackup -h <master ip> -D /data/pgsql/9.5/data -U replicator -v -P  --xlog-method=stream

完成後,我執行命令以停止主伺服器上的備份:

SELECT pg_stop_backup()

此時,我在 STDOUT 上得到以下資訊:

NOTICE:  pg_stop_backup cleanup done, waiting for required WAL segments to be archived
WARNING:  pg_stop_backup still waiting for all required WAL segments to be archived (60 seconds elapsed)
HINT:  Check that your archive_command is executing properly.  pg_stop_backup can be canceled safely, but the database backup will not be usable without all the WAL segments.

這將繼續並且不會退出。

主伺服器上的歸檔命令設置為:

rsync -a %p <replica ip>:/data/wal-archive/%f

最初,這不起作用,因為需要接受伺服器密鑰。一旦我手動執行此操作,rsync 就會啟動,我可以在 /data/wal-archive 中看到大量文件(目前約為 15GB)。

這是一個 20TB 的數據庫,所以我真的不想通過搞砸一些東西來重新開始這個過程。

退出發出警告的終端是否安全?我在其他文章中讀到archive_mode 只需要在將數據庫流式傳輸到副本的過程中打開以設置副本,除此之外它不是必需的。

在這種情況下,我可以在終端上執行 CTRL-C 並繼續配置副本嗎?

然後我可以在 master 上關閉 archive_mode 嗎?

是的,在 pg_stop_backup() 中使用 CTRL-C 是安全的。

/data/wal_archive 目錄中的文件建構來自 master 上的 archive_command。

一旦在從屬伺服器上啟動了 postgres 服務,這些“日誌”就會被消耗(即寫入從屬伺服器上的數據庫),然後被刪除。

引用自:https://serverfault.com/questions/889468