linux定时备份docker安装的mysql数据库
程序员文章站
2024-03-11 19:26:31
...
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.编写数据库备份脚本
[[email protected] /]# mkdir -p /backup
[[email protected] /]# vim /backup/back.sh
脚本内容:
#!/bin/sh
docker exec -i mysql bash <<'EOF'
#创建数据库备份路径的文件夹
mkdir -p /backup/mysql
# 备份指定数据库
mysqldump dataBaseName | gzip > /backup/mysql/dataBaseName _$(date +%Y%m%d_%H%M%S).sql.gz
exit
EOF
mkdir -p /backup
#从docker容器中将数据拷贝出来
docker cp mysql:/backup/mysql/ /backup/
#只保留七天内的数据
find /backup/mysql -name "knowledge_base_*.sql" -mtime +7 -type f | xargs rm -rf
3.给脚本文件设置权限,不然定时器执行不了脚本
[[email protected] backup]# chmod 755 /backup/back.sh
4.设置定时器执行脚本(这里设置每天晚上两点备份数据库)
[[email protected] /]# crontab -e
* 2 * * * /backup/back.sh