Docker 下MySQL数据库的备份和恢复的操作方法

本站所有内容来自互联网收集,仅供学习和交流,请勿用于商业用途。如有侵权、不妥之处,请第一时间联系我们删除!Q群:迪思分享

免费资源网 – https://freexyz.cn/
目录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
免费资源网 – https://freexyz.cn/


© 版权声明
THE END
★喜欢这篇文章吗?喜欢的话,麻烦动动手指支持一下!★
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容