我正在尝试为 PostgreSQL 9.5 主服务器创建热备用副本。
我使用的基本过程是在主服务器上启动备份:
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 然后继续配置副本吗?
那么我可以关闭主机上的archive_mode吗?
答案1
是的,按 CTRL-C 退出 pg_stop_backup() 是安全的。
/data/wal_archive 目录中文件的建立源于主服务器上的 archive_command。
一旦在从属服务器上启动了 postgres 服务,这些“日志”就会被使用(即写入从属服务器上的数据库)然后被删除。