Docker 下MySQL数据库的备份和恢复的操作方法
目录
- docker
- 备份和恢复:
- 恢复:
- 自动化备份mysql
- 设置定时任务
docker
最近迷恋使用doker容器,在docker容器进行部署MySQL,以前针对容器的安全性一直存在怀疑的态度,不过如果能够通过容器也能数据库备份问题,就这样开始docker容器备份
备份和恢复:
第一种方式
#全部备份 [root@localhost home]# docker exec c_mysql sh -c 'exec mysqldump --all-databases -uroot -p123456 --all-databases' > /home/movice202302.sql #备份数据转移 [root@localhost home]# docker cp /home/movice202302.sql salve-mysql:/var # salve-mysql 是容器 #全部恢复 root@6faa12ee2d96:/# mysql -uroot -p123456 < /var/movice202302.sql #查看恢复数据库情况: mysql -uroot -p123456 -e 'drop database SCHOOL;' mysql -uroot -p123456-e 'SHOW DATABASES;'
恢复:
导出数据库的表结构和表数据
mysqldump -uroot -pdbpasswd db_name >db.sql;
[root@localhost home]# docker exec c_mysql sh -c 'exec mysqldump -uroot -p123456 movice_fuli' > /home/movie0216.sql Warning: Using a password on the command line interface can be insecure.
导出数据库表数据 mysqldump -uroot -pdbpasswd -t db_name >db.sql; root@localhost home]# docker exec c_mysql sh -c 'exec mysqldump -uroot -p123456 -t movice_fuli' > /home/movie.sql 导出数据库表结构 mysqldump -uroot -pdbpasswd -d db_name >db.sql; root@localhost home]# docker exec c_mysql sh -c 'exec mysqldump -uroot -p123456 -d movice_fuli' > /home/movie.sql 导出数据库中某个表的表结构 mysqldump -uroot -pdbpasswd -d db_name table_name >db.sql root@localhost home]# docker exec c_mysql sh -c 'exec mysqldump -uroot -p123456 -d movice_fuli user' > /home/movie.sql 导出数据库中某个表的表结构和表数据 mysqldump -uroot -pdbpasswd db_name table_name >db.sql; root@localhost home]# docker exec c_mysql sh -c 'exec mysqldump -uroot -p123456 movice_fuli user' > /home/movie.sql
自动化备份mysql
1 创建目录/usr/data用于存放mysql的数据存放
root@localhost ~]# cd /usr [root@localhost usr]# ls bin etc games include lib lib64 libexec local sbin share src tmp [root@localhost usr]# mkdir data [root@localhost usr]# ls bin data etc games include lib lib64 libexec local sbin share src tmp [root@localhost usr]# cd data [root@localhost data]# ls [root@localhost data]# touch back_clean.sh [root@localhost data]# touch backup .sh [root@localhost data]# mkdir logs [root@localhost data]# mkdir mysql_bak [root@localhost data]# ls back_clean.sh backup logs mysql_bak [root@localhost data]# rm backup rm:是否删除普通空文件 "backup"?y [root@localhost data]# touch backup.sh [root@localhost data]# ls back_clean.sh backup.sh logs mysql_bak
2 编辑 备份脚本和清除大于给定期限的备份数据backup.sh,back_clearn.sh
vi backup.sh
BACKUP_ROOT=/usr/data/
BACKUP_FILEDIR=$BACKUP_ROOT/mysql_bak
#当前日期
DATE=$(date +%Y%m%d)
# 获取容器
mysqlid=docker ps -aqf "name=c_mysql"
#查询所有数据库
DATABASES=$(docker exec -i ${mysqlid} mysql -uroot -p123456 -e "show databases" | grep -Ev "Database|sys|information_schema|performance_schema|mysql")
#循环数据库进行备份
for db in $DATABASES
do
echo
if [[ "${db}" =~ "+" ]] || [[ "${db}" =~ "|" ]];then
echo "jump over ${db}"
else
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz BEGIN----------
docker exec -i ${mysqlid} mysqldump -uroot -p123456 --default-character-set=utf8 -q --lock-all-tables --flush-logs -E -R --triggers -B ${db} | gzip > $BACKUP_FILEDIR/${db}_$DATE.sql.gz
echo ${db}
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz COMPLETE----------
echo
fi
done
echo "备份完成"
vi back_clear.sh
echo ----------CLEAN BEGIN----------
find /usr/data/mysql_bak/ -mtime +7 -name "*.gz" -exec rm -rf {} \;
echo ----------CLEAN COMPLETE---------
设置定时任务
利用Linux crontab 进行设置定时任务
查看定时任务
crotab -l
修改定时任务
crontab -e
#每天02:00自动清理大于7天的mysql备份 00 2 * * * /usr/data/backup_clean.sh > /usr/data/logs/backup_full_clean.log 2>&1 #每天11:00自动备份mysql 00 11 * * * /usr/data/backup.sh > /usr/data/logs/backup.log 2>&1
上一篇:windows下Docker部署Flask的详细教程
栏 目:其它服务器
下一篇:docker部署xxl-job-admin出现数据库拒绝问题及解决方法
本文标题:Docker 下MySQL数据库的备份和恢复的操作方法
本文地址:https://zz.feitang.co/server/30850.html
您可能感兴趣的文章
- 12-20Kubernetes中使用临时容器进行故障排查的方法
- 12-20Nginx设置HTTPS的方法步骤
- 12-20二进制方式安装 Kubernetes1.18.3版本实现脚本
- 12-20Nginx工作模式及代理配置的使用细节
- 12-20ZooKeeper分布式协调服务设计核心概念及安装配置
- 12-20Kubernetes部署可视化地图的十个步骤
- 12-20关于docker清理Overlay2占用磁盘空间的问题(亲测有效)
- 12-20Docker compose配置文件写法及命令使用示例
- 12-20openwrt安装docker并启动的操作方法
- 12-20云原生Kubernetes初始化容器Init使用教程


阅读排行
推荐教程
- 12-07一文教你怎么选择Tomcat对应的JDK版本
- 12-07新版Eclipse集成Tomcat时找不到server选项的解决方法
- 12-06IIS7 应用程序池自动回收关闭的解决方案
- 12-05Windows Server 2019安装VMware
- 12-05Windows服务器默认IE浏览器无法下载文件的解决方法
- 12-05Docker安装Jenkins全过程
- 12-19Zabbix SAML SSO 登录绕过漏洞的操作流程
- 12-15Docker-Compose搭建Spark集群的实现方法
- 12-14Docker Desktop无法正常启动解决(failed to start...)
- 12-14k8s 与docker空间使用分析与清理方法





