Docker 下MySQL数据库的备份和恢复的操作方法
作者:dayu2020 时间:2024-01-18 03:02:44
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
来源:https://www.cnblogs.com/pushuiyu/archive/2023/02/17/17129487.html
标签:MySQL,数据库,备份,恢复
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python在游戏中的热更新实现
2022-04-05 14:10:15
iframe全跨域高度自适应解决方案
2008-12-21 16:16:00
![](https://img.aspxhome.com/file/UploadPic/200812/21/cross_domain_iframe-43s.jpg)
DBA应当了解的MySQL客户端程序启动选项
2009-01-04 13:00:00
![](https://img.aspxhome.com/file/UploadPic/20091/20091511658825.jpg)
javascript面向对象技术基础(一)
2010-02-07 13:01:00
如何将sql执行的错误消息记录到本地文件中实现过程
2024-01-22 06:50:37
![](https://img.aspxhome.com/file/2023/0/122400_0s.jpg)
玩转MySQL中的外键约束之PHP篇
2010-03-18 10:20:00
python常见字符串处理函数与用法汇总
2023-10-19 08:07:11
浅谈golang结构体偷懒初始化
2024-02-15 17:27:10
golang判断net.Conn 是否已关闭的操作
2024-04-30 10:07:02
如何把外网python虚拟环境迁移到内网
2021-12-28 14:08:13
Golang迭代如何在Go中循环数据结构使用详解
2024-02-08 04:23:11
详解JavaScript 高阶函数
2024-04-18 09:30:14
网页设计之步骤和大局观
2008-03-18 12:50:00
python 实现简单的FTP程序
2021-03-29 10:33:00
![](https://img.aspxhome.com/file/2023/2/85382_0s.jpg)
在ASP中使用SQL语句之7:ORDER BY
2007-08-11 12:51:00
Python字符串本身作为bytes进行解码的问题
2022-12-22 07:18:42
Python百度指数获取脚本下载并保存
2023-01-05 23:47:44
![](https://img.aspxhome.com/file/2023/8/67878_0s.webp)
PHP邮件发送类PHPMailer用法实例详解
2023-11-19 16:31:17
opencv实现图像缩放效果
2022-10-24 04:52:28
![](https://img.aspxhome.com/file/2023/8/92188_0s.jpg)
OpenCV半小时掌握基本操作之对象测量
2023-06-08 12:09:18
![](https://img.aspxhome.com/file/2023/1/76011_0s.gif)