需求:利用shell脚本和crontab计划任务定时备份mysql(icwarp_accounts)数据库。
操作步骤:
1.指定备份数据库存放路径及其路径
2.定义shell脚本,首先定义一个变量FILE_NAME,备份名称为accounts_backup,并且取date变量的当前值命名,下面是使用mysqldump命令,而且是命令的绝对路径备份数据库中icewarp_accounts这个数据库,备份数据导入到/data目录下,并且使用刚才的变量命名,而且使用bzip2进行压缩备份;最后将此脚本加到计划任务中,即可实现自动备份。
Vi backup.sh
#!/bin/bash
FILE_NAME=accounts_backup_`date +%Y-%m-%d`
/usr/bin/mysqldump -uroot -pmysql -q icewarp_accounts
> /data/$FILE_NAME.sql
bzip2 -9 /data/$FILE_NAME.sql
3.采用./backup.sh测试该脚本是否能够运行,发现权限不够,原来是root没有执行的权限,要使脚本能够运行,必须要有执行权限。
4.给root用户添加对该脚本有执行的权限chmod u+x backup.sh。
5.再次测试该脚本看能否正常运行./backup.sh。
6.脚本没有出错,怎么知道就成功了,只需到/data目录下看一下有备份文件就OK啦。
7.采用crontab定时备份mysql数据库,每天晚上12:00备份icewarp_accounts数据库。
crontab –e
0 23 * * * /bin/bash /root/backup.sh
8.最后要启动crond服务,否则实现不了自动备份功能。
总结:mysql数据库安装有三种方式,RPM包,源码包和二进制包,不同安装方式数据库备份路径略有不同,脚本里命令要采用绝对路径。
bzip2 是一个基于Burrows-Wheeler 变换的无损压缩软件。它免费提供,具有高质量的数据压缩能力。bzip2 利用先进的压缩技术,能够把文件压缩到10%至15%,压缩的速度和解压的效率都非常高,好多人压缩后就解压不了了(解压命令:bzip2 –d filename)。此文章为本地备份,如果有FTP服务的话,可支持异地备份。