使用 rsync 参数 -u 同步 PostgreSQL 复制是否安全?
例如,如果我的复制由于连接问题(例如 WAL 存档已被删除)而丢失了很长时间,我总是需要将我数据库的所有文件再次从主服务器同步到副本。
所以我正在使用类似(或几乎类似)的东西(在奴隶内部):
systemctl stop postgresql@11-slave
psql -h 10.0.0.MASTER -Atc "select pg_start_backup('clone', true);"
rsync -avz [email protected]:/var/lib/postgresql/11/main /var/lib/postgresql/11/
systemctl start postgresql@11-slave
psql -h 10.0.0.MASTER -Atc "select pg_stop_backup('clone', true);"
上面的解决方案工作得很好,并且经过多次测试,没有任何数据丢失。
但我很想尝试使用更快(危险?)的方法来恢复复制,例如:
systemctl stop postgresql@11-slave
psql -h 10.0.0.MASTER -Atc "select pg_start_backup('clone', true);"
rsync -uavz [email protected]:/var/lib/postgresql/11/main/ /var/lib/postgresql/11/
systemctl start postgresql@11-slave
psql -h 10.0.0.MASTER -Atc "select pg_stop_backup('clone', true);"
在 rsync(更新)上使用参数 -u 而不是重新复制所有文件是否安全,或者当我的复制发生问题时我应该继续复制所有文件吗?