1.安装mysqldump(如果备份远程mysql库,本地不用安装mysql 也可以单独使用)
yum -y install mysql-client
2.编写备份脚本 首先这里我还是进入到 /shell目录下编写脚本 vim mysql_backup.sh
#!/bin/bash # Author: Mr.song # Blog:https: # Create Date: 2020-10-21 # Description: Database daily backup ! #==================================================== #备份文件存储的目录 BACKUP_DIR=/shell/mysqlback/ #以执行的日期作为文件名,以防文件名重复覆盖 DATE=$(date +%Y_%m_%d) #连接mysql用户名、密码、IP、数据库名,请根据自己的自行修改 #用户名 #MYSQL_USER=root #密码 #MYSQL_PWD=xxxx #因为我这是本地备份,就使用localhost HOST=xx.xx.xx.xx #使用的数据库 DATABASE=xxx echo "mysql backup start $DATE" #判断一下如果备份的目录不存在,就创建该目录,两种写法都行,目前我把两种方式都列出了,想尝试方式二的把注释放掉即可 #方式一: #if [ ! -d $BACKUP_DIR/$DATE ] #then mkdir -p $BACKUP_DIR/$DATE #fi #方式二 [ ! -d $BACKUP_DIR/$DATE ] && mkdir -p $BACKUP_DIR/$DATE #执行mysql备份数据库指令 其实最好将此文件进行压缩打包,这里简单保存为一个sql文件 #mysqldump -u$MYSQL_USER -p$MYSQL_PWD --host=$HOST $DATABASE > $BACKUP_DIR/$DATE/$DATE.sql mysqldump -u$MYSQL_USER --databases $DATABASE > $BACKUP_DIR/$DATE/$DATE.sql >/dev/null 2>&1 #删除5天前的老的备份 find $BACKUP_DIR -mtime +5 -name "*.sql" -exec rm -rf {} \; #解释上面这行命令的含义: #find 是找到命令,找到变量BACKUP_DIR目录下 时间(-mtime) 5天前(+5) ,名字是(-name) 以.sql结尾的("*.sql") #如果找到了的话(-exec),就执行后面的命令,rm -rf 删除 , {} \ 就是找到的内容。写脚本的时候最好不要把密码加载进去 所以在 my.cnf 里编写密码,不需要重启mysql
chmod 600 .my.cnf #为了提高安全性,修改文件权限 mysqldump -u root --databases db > db.sql #备份语句中一定不能使用-p选项,否则还是需要输入密码的;当服务器有多个实例时需要指定套接字-S /path/to/mysql.sock
3.设置定时器
给.sh文件赋予执行权限
chmod +x ./mysql_backup.sh
开始设置定时器
crontab -e
编写定时任务 每天凌晨2点备份
0 2 * * * /usr/local/shell/mysql_backup.sh