我正在通过发出以下命令进行 postgresql 复制:
在主人身上:
>select pg_start_backup('clone', true);
>\q
#tar -cz main -f main.tar.gz
(说明:main是我系统上的数据目录/var/lib/postgresql/9.6/main)
然后我将 main.tar.gz 传输到从机....
在奴隶上:
--Uncompressing main.tar.gz....
#tar -zxf main.tar.gz
--Copying previously created recovery.conf
#cp recovery.conf main/
--And then just starts the slave
#service postgresql start
在主人身上:
--And stoping backup mode on the master:
>select pg_stop_backup();
我得到的是复制工作正常,而且确实很好用。
但是我在阅读官方文档后怀疑我应该在额外的步骤中复制 pg_xlog ... https://wiki.postgresql.org/wiki/Binary_Replication_Tutorial
但我从来没有这样做过,也从来没有遇到过问题——做了很多测试,比如计算每个表的行数,包括主从等等,但最坏的情况会发生吗?
它工作正常,直到它不工作。然后你得到一个不会启动的备份,将启动但不会连接主服务器以流式传输新数据,或者可能会启动但已悄悄损坏的备份(不太可能,但我不排除这种可能性)。您是否在负载非常大的大型服务器上测试过这种方法?
如果您使用
pg_basebackup
,它会为您处理,或者会在您发现困难之前通知您备份失败,或者通知您需要一个单独的 WAL 存档。取决于 PostgreSQL 的版本以及您为pg_basebackup
.