引用:https://blog.csdn.net/leovnay/article/details/140585094
# 创建两个卷
docker volume ls
docker volume create mysqlData
docker volume create mysqlSQL
# 运行容器
docker run -d --name=mysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=xxx -e TZ=Asia/Shanghai -v mysqlData:/var/lib/mysql -v mysqlSQL:/backup --restart always mysql:8.2.0
连接mysql,导入sql
备份数据库
之前挂载了一个 backup,
在容器内部测试导出sql:
mysqldump --single-transaction --flush-logs --source-data=2 --routines --opt -uroot -p123456 test > /backup/test_20240713.sql
创建一个shell脚本mysql-backup.sh
,写入在宿主机中导出sql的shell:
docker exec mysql8 sh -c 'mysqldump --single-transaction --flush-logs --source-data=2 --routines -uroot -pxxx 数据库名字 > /backup/hehe_$(date +\%Y\%m\%d_\%H\%M\%S).sql'
进入corntab
crontab -e
添加定时任务:
# mysql备份-每1分钟,,,去执行这个mysql-backup.sh,,错误日志放入mysql-backup.log中
*/1 * * * * /var/lib/docker/volumes/mysqlSQL/_data/mysql-backup.sh >> /var/lib/docker/volumes/mysqlSQL/_data/mysql-backup.log 2>&1
# 每天凌晨三点执行
0 3 * * * /var/lib/docker/volumes/mysqlSQL/_data/mysql-backup.sh >> /var/lib/docker/volumes/mysqlSQL/_data/mysql-backup.log 2>&1
保存会及时生效
这个mysql-backup.sh要有执行权限