ubuntu定时备份mysql,首先要写一段shell脚本,用来备份mysql数据库,再通过crontab定时执行备份mysql数据库的shell脚本。
1.备份mysql的shell脚本如下:
代码如下 | 复制代码 |
#!/bin/bash date_str=$(date +%Y%m%d-%T) cd /home/steven/backup mysqldump -h localhost -u root --password=xxxx -R -E -e --max_allowed_packet=1048576 --net_buffer_length=16384 databaseName | gzip > /home/steven/backup/juziku_$date_str.sql.gz |
把上面这个脚本存放位置:/home/steven/mysql_backup.sh (当然,也可以放在其他位置)
再赋于执行的权限,通过下面命令:
代码如下 | 复制代码 |
sudo chmod +x /home/steven/mysql_backup.sh |
完成这步,我们就来执行一下这段脚本,看能不能备份mysql数据库。
在命令行输入
代码如下 | 复制代码 |
./mysql_backup.sh |
就可以看到备份好的数据库文件了
2.完成上面这步,就可以备份mysql数据库了,接下来,我们再通过crontab定时执行这段脚本。
使用crontab -e命令,这个命令的使用比较简单。
在命令行输入中,直接输入 crontab -e
就会打开一个编辑窗口,最后一行会有内容格式的提示:
代码如下 | 复制代码 |
# m h dom mon dow command |
具体意义表示:分钟 小时 日期 月份 星期 命令,在某月(mon)的某天(dom)或者星期几(dow)的几点(h,24小时制)几分(m)执行某个命令(command),*表示任意时间。例如:0 3 * * * /home/steven/mysql_backup.sh就是:每天早上3点,执行mysql_backup.sh脚本。
我们只要在里面添加一行就行了,内容如下:
代码如下 | 复制代码 |
# 备份mysql数据库 每天早上3点整执行 0 3 * * * /home/steven/mysql_backup.sh |
这样,每天早上3点,就会自动备份mysql数据库了
另一个实例 crontab
利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。
1、创建保存备份文件的路径/mysqldata
代码如下 | 复制代码 |
#mkdir /mysqldata |
2、创建/usr/sbin/bakmysql文件
代码如下 | 复制代码 |
#vi /usr/sbin/bakmysql 输入
|
或者写成
代码如下 | 复制代码 |
rq=` date +%Y%m%d ` mysqldump --all-databases -u root -p980405 > /mysqldata/mysql$rq.tar.gz /var/lib/mysql |
是你数据库文件的目录,部分用户是/usr/local/mysql/data,每个人可能不同
/mysqldata/表示保存备份文件的目录,这个每个人也可以根据自己的要求来做。
3、修改文件属性,使其可执行
代码如下 | 复制代码 |
# chmod +x /usr/sbin/bakmysql |
4、修改/etc/crontab
#vi /etc/crontab 在下面添加
代码如下 | 复制代码 |
01 3 * * * root /usr/sbin/bakmysql 表示每天3点钟执行备份 |
5、重新启动crond
代码如下 | 复制代码 |
# /etc/rc.d/init.d/crond restart |
完成。
这样每天你在/mysqldata可以看到这样的文件
mysql20040619.tar.gz 你直接下载就可以了。
在tar命令执行前,停止数据库服务进程或锁定数据库,
否则恢复数据时,会出现数据库损坏的情形,运气好时可修复,运气不好时就不可以了。