rsync 的 “file has vanished” 问题

新做的pg数据库的备份系统上线,今天发现报了一个错误,

data/TABLESPACE/cyp_nw_data/PG_9.1_201105231/pgsql_tmp/
file has vanished: "/usr/local/pgsql/data/TABLESPACE/cyp_nw_data/PG_9.1_201105231/pgsql_tmp/pgsql_tmp26098.4"

rsync 的返回值不为0 ,

我们代码是基于判断rsync 的返回值来确认数据同步是否完成。这样就给以后的作业步骤带来困惑了。

数据库在运行过程中,tmp表空间的临时文件是随时变化的,而这些文件同步到远端,在恢复的过程中是没有意义的。

pg 在数据库重启的过程中,会清理掉tmp表空间的所有的文件。

所以我们可以在rsync 的命令行选项中,添加 --exclude 选项来屏蔽 同步tmp表空间的数据。

pg 的tmp 表空间是跟单个database  设定的, 当然也可以设置全局的tmp表空间。

我们的代码里最后加上了 --exclude  */pgsql_tmp/*  这样问题就解决了。


而 这个告警并不会实际上影响备份的效果,只是 shell 里一般用  $? -eq 0 作为 代码正确退出的判断,在这里会影响判断。


-------------------------后记--------------------------------

经过测试   这个告警导致rsync 的返回值为 24  

可以使用 $? -eq  24  -o  $? -eq 0  标识正确退出。



 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/133735/viewspace-735380/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/133735/viewspace-735380/

你可能感兴趣的:(rsync 的 “file has vanished” 问题)