Linux服务器MySQL数据库定时自动备份/自动删除/远程备份

2019-11-04  本文已影响0人  不是王大锤

内容:
1、创建存放备份文件的目录
2、编写自动备份脚本(包含自动删除)
3、设置定时备份任务

备注:如需备份到其他主机,所有操作均在目标主机上操作

一、创建存放备份文件的目录

 [root@A]# mkdir /home/dbback   
 [root@A home]# ls
 dbback 

二、编写自动备份/自动删除shell脚本

1、 在dback目录下新建脚本mysqlback.sh
 [root@A]# vi /home/dbback/mysqlback.sh
2、编写脚本(远程与本地区别在于:-h '远程主机IP')
#!/bin/bash
#数据表自动备份脚本
# Name:bakmysql.sh
# This is a ShellScript For Auto DB Backup and Delete old Backup

#备份存放路径
backupdir=/home/dbback
#时间格式
time=` date +%Y%m%d%H `

#本地备份单个数据库(结构+数据):mysqldump路径+用户+用户密码+数据库名> $存放路径/备份包命名$时间格式
/usr/local/mysql/bin/mysqldump -u root -p密码 --databases dbname | gzip > $backupdir/dbbackname$time.sql.gz

#备份远程主机数据库
#/usr/local/mysql/bin/mysqldump -h '远程主机IP' -u root -p密码 --databases dbname | gzip > $backupdir/dbbackname$time.sql.gz

#备份多个数据库
#/usr/local/mysql/bin/mysqldump -u root -p密码 --databases 数据库1 数据库2 | gzip > $backupdir/dbbackname$time.sql.gz

#备份所有数据库(-A:结构+数据)(-A -d:只备份结构)
#/usr/local/mysql/bin/mysqldump -u root -p密码 -A -d | gzip > $backupdir/dbbackname$time.sql.gz

#删除1天前(-mtime +1)的文件
rm -rf $(find  /home/dbback/ -mtime +1 -name "*.sql.gz")
3、设置脚本执行权限
   [root@A]#chmod +x /home/dbback/mysqlback.sh
   执行验证
   [root@A dbback]#./mysqlback.sh
   忽视报错,在dbback目录下生成备份文件代表脚本运行成功

三、设置定时备份任务

1、在crontab末尾加入自动执行脚本命令(每天03:15执行)
[root@A]# vi /etc/crontab
命令:15 03 * * * root /home/dback/mysqlback.sh
2、 保存退出,重启cron。
[root@A]# /etc/rc.d/init.d/crond restart
Stopping crond:                                            [  OK  ]
Starting crond:                                            [  OK  ]
3、时间设置规则
分 时 日 月 周 root/脚本路径

M: 分钟(0-59)。每分钟用*或者 */1表示
H:小时(0-23)。(0表示0点)
D:天(1-31)。
m: 月(1-12)。
d: 一星期内的天(0~6,0为星期天)。
每五分钟执行    */5 * * * *
每小时执行      0 * * * *
每天执行        0 0 * * *
每周执行        0 0 * * 0
每月执行        0 0 1 * *
每年执行        0 0 1 1 *
上一篇下一篇

猜你喜欢

热点阅读