mysql版本:8.0.16
ubuntu版本:Ubuntu 18.04.1 LTS
1.mysql备份命令
如果mysqldump备份命令出现(Warning: Using a password on the command line interface can be insecure.) 警告信息,可以在my.cnf中加上以下内容:
[mysqldump]
user=your_backup_user_name
password=your_backup_password
然后直接使用mysqldump命令的时候就可以不需要用户和密码了
mysqldump dataBaseName | gzip > /backup/mysql/dataBaseName _$(date +%Y%m%d_%H%M%S).sql.gz
如果可以使用用户密码的格式就用这种格式
mysqldump -uusername -ppassword dataBaseName | gzip > /backup/mysql/dataBaseName _$(date +%Y%m%d_%H%M%S).sql.gz
2.编写数据库备份脚本
[root@localhost /]# mkdir -p /backup
[root@localhost /]# vim /backup/back.sh
脚本内容:
#!/bin/sh
docker exec -i mysql bash <<'EOF'
#创建数据库备份路径的文件夹
mkdir -p /backup/mysql
#备份指定数据库,这里数据库备份时区要少8个小时,所以这里加上8小时
mysqldump dataBaseName | gzip > /backup/mysql/dataBaseName_$(date -d "+8 hour" +%Y%m%d).sql.gz
#只保留容器中七天内的数据
find /backup/mysql -name "dataBaseName_*" -mtime +7 -exec rm -rf {} \;
exit
EOF
mkdir -p /backup
#从docker容器中将数据拷贝出来
docker cp mysql:/backup/mysql/dataBaseName_$(date +%Y%m%d).sql.gz /backup/mysql/
#只保留七天内的数据
find /backup/mysql -name "dataBaseName_*" -mtime +7 -exec rm -rf {} \;
3.给脚本文件设置权限,不然定时器执行不了脚本
[root@localhost backup]# chmod 755 /backup/back.sh
4.设置定时器执行脚本(这里设置每天晚上两点备份数据库)
[root@localhost /]# crontab -e
0 2 * * * /backup/back.sh
参考链接:https://blog.51cto.com/13941177/2310406
https://blog.csdn.net/MR1269427885/article/details/82978311