Linux服务器 – 备份生产数据库

我创build了一个脚本来备份生产数据库。 我最初的做法是备份mysql目录本身(/ var / lib / mysql),但其他用户不鼓励它。

脚本非常简单,一旦shell脚本知识很基础。

#!/bin/bash # backup file backupFile="backup_$(date +%d%m%Y_%H%M).sql" # create the backup file using mysqldump /usr/bin/mysqldump -uuser -ppass db > /home/user/db_backups/$backupFile # copy the backup file to the remote server rsync -e ssh -varuzP /home/user/db_backups/ user@remoteserver:/home/user/backup/mysql 

首先,我想知道你对剧本的看法。 其次,我还想知道rsync是否在生产服务器和远程备份服务器之间的传输过程中检查可能的文件损坏。

在此先感谢您的帮助,最好的问候!

至less你的脚本简单而直接。

一种检查rsync是否正常的方法是比较md5sums。

 LOCALCOPY=`md5sum /home/user/db_backups/$backupFile` REMOTECOPY=`ssh user@remoteserver md5sum /home/user/backup/mysql/$backupfile` if [ $LOCALCOPY == $REMOTECOPY ]; then echo "Checksum OK"; else echo "Checksum ERROR. Eep."; fi 

或者类似的事情,并没有真正的testing。

出于性能和完整性原因,应避免使用大型数据库的mysqldump。 你可以设置一个副本,并在从机上进行备份。

在互联网上search,你会发现很多关于mysql备份的文章。

脚本对我来说看起来不错,但是你可能要考虑设置一个循环系统,旧的备份被覆盖(从而充分利用rsync)。 至于腐败检查,我相信rsync会自动为你做这个,如果你使用--checksum选项。

除非你打算观看输出,或者将它输送到一个文件中,否则我不会build议使用--verbose选项。 另外,不需要-a-r在一起:

-a, – 存档
这相当于-rlptgoD。

另请参阅StackOverflow问题: 确保mysqldump < – > rsync的数据完整性