一、数据库定时备份
1、编写mysql在docker容器中备份的shell脚本:
复制代码
#!/bin/bash
# zhengwei 2020-11-15
#docker启动的mysql备份
mysql_user="root"
#数据库密码,注意自行修改
mysql_password="JZTeya0!"
mysql_host="192.168.1.43"
mysql_port="3306"
mysql_charset="utf8mb4"
#备份文件存放的目录,自己创建位置
mkdir -p /home/backup/mysql/
backup_location=/home/backup/mysql/
expire_backup_delete="ON"
#备份文件存放的天数
expire_days=7
backup_time=`date +%Y-%m-%d-%H-%M`
backup_dir=$backup_location
#指定忽略的表
#--ignore-table=tablename
#docker exec -i mysql mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -B zszy-omsdb | gzip> $backup_dir/mysql_backup_dbname_$backup_time.sql.gz
echo -e "\033[32m ------------------- 开始全量备份数据库,请稍等。。。---------------- \033[0m"
docker exec -i mysql mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password --all-databases | gzip> $backup_dir/mysqldb_backup_$backup_time.sql.gz
echo -e "\033[32m -------------------成功备份数据至文件:$backup_dir/mysqldb_backup_$backup_time.sql.gz---------------- \033[0m"
if [ "$expire_backup_delete" == "ON" -a "$backup_location" != "" ];then
`find $backup_location/ -type f -mtime +$expire_days | xargs rm -rf`
echo -e "\033[32m ------------------- MySQL数据库已备份 $expire_days天前的备份已删除---------------- \033[0m" #green
fi
复制代码
2、执行定时计划,每天凌晨1点执行备份
进入 vi /etc/crontab
加入如下的内容
# /home/shell/mysqlbackup.sh 为脚本的路径
00 01 * * * root /home/shell/mysql-backup.sh
你也先测试一分钟执行一次的效果
*/1 * * * * root /home/shell/mysql-backup.sh
注意root前后只能一个空格
可以执行命令: tail -f /var/log/cron 查看效果定时任务的执行效果
二、数据库还原
1、解压文件
gzip -d /home/backup/mysql/mysqldb_backup_2022-11-12-20-35.sql.gz
2、拷贝文件到容器中
docker cp /home/backup/mysql/mysqldb_backup_2022-11-12-20-35.sql mysql:/var
3、进入mysql容器中
docker exec -it mysql bin/bash
4、执行如下命令后会要求输入mysql密码
mysql -uroot -p
5、将拷贝到容器中的.sql文件用于还原mysql数据库
source /var/mysqldb_backup_2022-11-12-20-35.sql
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!