对docker MySql进行全量、增量备份以及恢复

背景:当数据库服务器使用的docker容器部署的MySlq服务时,我们如何在不进入docker容器的前提下在宿主机上执行命令就能把备份文件备份到宿主机上。

前提条件:你的宿主机已经安装好MySql Docker容器,如何安装请自行搜搜,执行docker ps -a查看当前容器运行状态,如下图:

备份

1.全量备份,命令如下{dockerName}为上图中选中的mysql_volues,其他的我认为不用解释了

docker exec -i {dockerName} mysqldump -h127.0.0.1 -p3306 -u{MysqlUserName} -p{MyqlPass} --databases {dataBase1} {dataBase2} > /opt/backup/dbz111.sql

执行效果如下:

2.增量备份,增量备份需要配置bin_log,配置方法用两种,一种是映射文件配置,一种是进入docker bash里面去配置,具体配置不赘述了。列举下看下图我的配置,不了解的自行百度有很多教程。

对docker MySql进行全量、增量备份以及恢复_第1张图片

 

使用以下命令生成增量备份的二进制文件

docker exec -it {dockerName}

mkdir -p /opt/backup/

exit

docker exec -i {dockerName} mysqladmin  -h127.0.0.1 -p3306 -uroot -p123 flush-logs // 生成二进制文件到docker容器的/opt/backup/ 目录下

docker exec -i {dockerName} tail -n 1 {log_bin}.index // 获取最新的bin-log日志文件,{log_bin}参数就是上图中配置的log_bin,获取结果{logFile}

docker cp {dockerName}:{logFile} /opt/backup //将docker里的文件复制到本地宿主机

执行结果如下

对docker MySql进行全量、增量备份以及恢复_第2张图片

恢复

1.全量恢复

确保docker容器中存在备份文件,如果不存在备份文件用docker cp复制到容器指定目录下,使用以下命令在宿主机上执行

docker exec -i {dockerName} mysql -h127.0.0.1 -p3306  -uroot -p123 < {backupFile}

 

你可能感兴趣的:(docker,容器,java,mysql)