本文实例讲述了MySQL定时备份数据库操作。分享给大家供大家参考,具体如下:
1. 查看mysqldump
1 root@laowang:/# which mysqldump
2 /usr/bin/mysqldump
2. 编写脚本
编辑my.cnf文件, 指定账号与密码, 然后在脚本中引用
1 root@laowang:/# vim /etc/my.cnf
2
3 [mysqldump]
4 user=root
5 password=root
脚本文件
1 root@laowang:/var/backups# vim mysql_backup.sh
2 #!/bin/sh
3 #################################################
4 # 备份数据库
5 #################################################
6 #mysqldump备份程序执行路径
7 DUMP=/usr/bin/mysqldump
8 #备份文件存放路径
9 OUT_DIR=/var/database
10 #备份文件所属权限
11 LINUX_USER=root
12 #要备份的数据库名字
13 DB_NAME=laowang
14 #备份的天数,之前的删除
15 DAYS=1
16
17 #进入备份存放目录
18 cd $OUT_DIR
19 #获取当前系统时间
20 DATE=`date +%Y_%m_%d`
21 #备份数据库的文件名
22 OUT_SQL=$DB_NAME"_$DATE.sql"
23 #最终保存的数据库备份文件名
24 TAR_SQL=$DB_NAME"_$DATE.tar.gz"
25 #开始执行备份数据库
26 $DUMP --defaults-extra-file=/etc/my.cnf --default-character-set=utf8 $DB_NAME > $OUT_SQL
27
28 #压缩为.tar.gz格式
29 tar -czf $TAR_SQL ./$OUT_SQL
30 #删除.sql格式的备份文件
31 rm $OUT_SQL
32 #更改备份数据库文件的所有者
33 chown $LINUX_USER:$LINUX_USER $OUT_DIR/$TAR_SQL
34 #删除30天前的备份文件(注意:{} ;中间有空格)
35 find $OUT_DIR -name "*.tar.gz" -type f -mtime +$DAYS -exec rm -f {} ;
3. 定时计划
1 root@laowang:/# crontab -e
2 # m h dom mon dow command
3 10 10 * * * /var/backups/mysql_backup.sh
ctrl+X 退出
y 保存修改