Docker 下 MySQL 8 自动备份

MySQL logo

root@debian:~# crontab -e 进入crontab,添加以下内容:

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

0 2 * * *:crontab 每天 2 点

find /var/backup/ -mtime +5 -name "*.sql" -delete:查找该路径下的备份文件,删除 6 天前的备份任务,即保留 7 个版本

-u<username> -p<password>:数据库的用户名及密码

/var/backup/bcksql_`date +\%F`.sql:将备份文件保存到该路径下并命名为“bcksql_日期.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

发表回复