debian mysql自动日常备份

我需要每天在Debian服务器下备份我的Mysql数据库。 我知道有足够的脚本,但是我的需求是每天备份为一个sql文件,并将每个备份单独放在同一个文件夹下(也许当前date是文件名?),因此每个备份都不会覆盖单个文件。

问候

我经常使用automysqlbackup.sh它每天都会执行一个mysqldump,让它们保持一个星期,每周备份一个月,每月保存一年 – 所有这些都非常无聊!

就像是:

for db in $(mysql -e "show databases" -B --skip-column-names); do mysqldump --opt --databases "$db" \ | gzip -3 --rsyncable > "/var/backup/$db-$(date +%Y-%m-%d).sql.gz" done 

然后,您可以在cron作业中使用它来每天进行备份。

你可以使mysqldump将所有的数据库转储到一个文件中,但是如果出现了问题,就很难恢复一个数据库。 如果您通过rsync将文件复制到另一台服务器上,则确实需要使用–rsyncable选项。 它浪费了一些磁盘空间,以换取比rsync更好的性能。 这主要与rsync计算要传输的数据块的方式有关。

除了我们不使用文件名中的date,我们使用与上面的脚本类似的东西,因为这会导致您必须处理清理旧备份。 我们使用backuppc来处理保留旧的副本。 除非您已经有远程备份解决scheme,否则我强烈build议您查看backuppc。

David对我来说很好看,但还有一些可供参考(第二个备份所有的数据库,但David的mysql选项比我认为的sed命令更好):

例1:

 #!/bin/bash #Create local backups of the mysql drupal database for easy restore #KMB 2008 dumpdir='/root/drupaldumps' backupdir='/root/drupal_backups' myuser='drupal' mypass='SECRET' dumpfile="${dumpdir}/drupal-$(date +%s).sql" mysqldump -udrupal -p${mypass} drupal > $dumpfile mv $dumpfile ${backupdir}/ find $backupdir -name '*.sql*' -type f -mtime +7 -exec rm {} + 

例2:

 #!/bin/bash #KMB March 2009 umask u=rw,g=,o= dumpdir='/root/db_backups' backupdir='/root/db_backups/dumps' myuser='backup_user' mypass='SUPER_SECRET' while read database; do dumpfile="${dumpdir}/${database}-$(date +%s).sql.bz2" mysqldump -u $myuser -p${mypass} $database | bzip2 > $dumpfile mv $dumpfile ${backupdir}/ done < <(mysql -u $myuser -p${mypass} -e 'show databases' -s | sed '1d;$d') find $backupdir -name '*.sql.bz2*' -type f -mtime +7 -exec rm {} \; 

不要忘记添加脚本到crontab

15 0 * * * /path/to/script.sh

或者,如果你只是想在一个SQL文件中的所有数据库:

  mysqldump -u -p --opt --all-databases> / path / to / backup / $(date -Imin).sql 

然后只保留一周的备份:

  find / path / to / backup -type -f -mtime +7 -delete 

你也可以试试Zmanda Recovery Manager(zrm-m​​ysql)。

虽然初看起来可能过于复杂,但我已经使用ZRM的Community Edition为许多远程MySQL服务器创build了完全encryption的pipe理良好的集中式备份解决scheme。

有关主题的更多信息可以在HowtoForge上find,例如:

http://www.howtoforge.com/mysql-backups-with-zrm-2.0

干杯

我曾经做过的一件事就是在备份文件生成后通过电子邮件发送到服务器 。 这样,即使服务器死了,我仍然会在另一台服务器上有最新的备份。 您也可以使用rsync或其他方法将备份存档移动到另一台计算机。

使用RSNAPSHOT.org的rsnapshot。 它可以通过“apt-get install rsnapshot”来获得。

设置机器SSH密钥后,它就像一个魅力和通过SSH工作…该网站提供了一些脚本,以备份MySQL。 您可以修改这些以满足您的任何特定需求。

rsnapshot是用于备份本地和远程系统的文件系统快照实用程序。

使用rsync和硬链接,可以使多个完整备份立即可用。 所需的磁盘空间只是一个完整备份的空间,加上增量。

根据您的configuration,只需几分钟即可完成设置。 文件可以由拥有它们的用户恢复,而不需要root用户参与。