Postgresql
創建 PostgreSQL 9.5 副本的問題
我正在嘗試為 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 服務,這些“日誌”就會被消耗(即寫入從屬伺服器上的數據庫),然後被刪除。