传统备份:
第一种备份:(比较麻烦)
docker exec -it mysql bin/bash
进入容器
mysqldump -uroot -proot --all-databases > emp_`date +%F`.sql
以日期.sql为文件名备份所有数据库至当前目录
exit
退出
docker cp mysql:emp_2022-04-21.sql /var/backup/
将容器里的备份文件复制到宿主机的备份目录
第二种备份(一步到位)
docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -proot --all-databases' > /var/backup/bcksql_`date +%F`.sql
进入容器备份所有数据库以日期.sql结尾并将备份文件复制到宿主机的备份目录下
定时备份
crontab -e
0 2 * * * find /var/backup/ -mtime +9 -name "*.sql" -delete && docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -proot --all-databases' > /var/backup/bcksql_`date +\%F`.sql
每天凌晨两点执行
搜寻backup目录下10天前的所有的.sql文件并删除
并且进入容器备份所有数据库以日期.sql结尾并将备份文件复制到宿主机的备份目录下
MySQL还原备份
docker cp /var/backup/emp_2022-04-15.sql mysql:/var/backups/
将备份文件拷贝到容器的备份目录中
docker exec -it mysql bin/bash
进入容器
mysql -uroot -p
进入mysql
source /var/backups/emp_2022-04-15.sql
执行还原
或者容器外还原
mysql -uroot -proot < /var/backup/emp_2022-04-15.sql
|