Docker 下 MySQL 8 自动备份
更新日期:2023年4月18日
先前使用时可以正常定时备份,但最近使用同样配置但无法生成备份文件,所以寻找了其他自动备份方法,可以移步到:Docker Mysql 8 自动定时备份 查看最新的操作方法。
root@debian:~# crontab -e
进入crontab,添加以下内容:
// 0 2 * * *:crontab 每天 2 点,-u<username> -p<password>:数据库的用户名及密码
0 2 * * * find /var/backup/ -mtime +5 -name "*.sql" -delete && docker exec mysql sh -c 'exec mysqldump --all-databases -u<username> -p<password> --all-databases' > /var/backup/bcksql_`date +\%F`.sql
// 查找该路径下的备份文件,删除 6 天前的备份任务,即保留 7 个版本
find /var/backup/ -mtime +5 -name "*.sql" -delete
// 将备份文件保存到该路径下并命名为“bcksql_日期.sql”(以上路径需要有对应权限,否则无法正常存储)
/var/backup/bcksql_`date +\%F`.sql
mysqldump 常用操作示例
备份全部数据库的数据和结构
mysqldump -uroot -p123456 -A > /data/mysqlDump/mydb.sql
备份全部数据库的结构(加 -d 参数)
mysqldump -uroot -p123456 -A -d > /data/mysqlDump/mydb.sql
备份全部数据库的数据(加 -t 参数)
mysqldump -uroot -p123456 -A -t > /data/mysqlDump/mydb.sql
备份单个数据库的数据和结构(数据库名mydb)
mysqldump -uroot-p123456 mydb > /data/mysqlDump/mydb.sql
备份单个数据库的结构
mysqldump -uroot -p123456 mydb -d > /data/mysqlDump/mydb.sql
备份单个数据库的数据
mysqldump -uroot -p123456 mydb -t > /data/mysqlDump/mydb.sql
备份多个表的数据和结构(数据,结构的单独备份方法与上同)
mysqldump -uroot -p123456 mydb t1 t2 > /data/mysqlDump/mydb.sql
一次备份多个数据库
mysqldump -uroot -p123456 --databases db1 db2 > /data/mysqlDump/mydb.sql