linux定时备份docker安装的mysql数据库

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

 

 

 

 

 

你可能感兴趣的:(linux定时备份docker安装的mysql数据库)