启用 binlog
MySQL要启用增量备份,必须开启binlog。检查是否数据库是否开启binlog
查看mysql运行情况
进入容器内部查看
docker exec -it mysql8 mysql -uroot -p //进入mysql8查看 docker exec -it mysql57 mysql -uroot -p //进入mysql57查看
|
| log_bin | ON |
表示已经开启。
如果未开启binlog,如果你挂载了mysql配置文件,只需要修改它对应内容如下:
挂载my.cnf
[mysqld] log-bin=mysql-bin server-id=1 //数据库有几个这个id就往后便宜,不要指定一个id binlog_format=ROW expire_logs_days=7
|
未挂载配置文件,需要重新挂载,查看容器是否挂载了宿主机目录
docker inspect mysql8 --format='{{range .Mounts}}{{println .Source "->" .Destination}}{{end}}' //容器mysql8 docker inspect mysql57 --format='{{range .Mounts}}{{println .Source "->" .Destination}}{{end}}' //容器mysql57
|
提示如下
/var/lib/docker/volumes/18866e7c265e4d2dd61ff3b80de1d54dffd86f98e1f29f316908c5a001926e31/_data -> /var/lib/mysql
说明没有挂载文件,使用了 Docker 的匿名 volume,需要重新挂载。
创建挂载数据目录,并复制原数据
mkdir -p /home/mydata/mysql8/data mkdir -p /home/mydata/mysql57/data
# mysql8 docker run --rm -v 5e7fa8659f50f29cf1c647ecabf1e42ff2cc96f73b3c715eaea0cfa40530d128:/from -v /home/mydata/mysql8/data:/to alpine sh -c "cp -a /from/* /to/"
# mysql57 docker run --rm -v 18866e7c265e4d2dd61ff3b80de1d54dffd86f98e1f29f316908c5a001926e31:/from -v /home/mydata/mysql57/data:/to alpine sh -c "cp -a /from/* /to/"
|
完成并检查对应文件夹数据是否拷贝成功
并删除原容器
docker stop mysql8 mysql57 docker rm mysql8 mysql57
|
重新创建容器,挂载目录
#mysql8 docker run -d --name mysql8 -e MYSQL_ROOT_PASSWORD=123456 -v /home/mydata/mysql8/data:/var/lib/mysql -v /home/mydata/mysql8/my.cnf:/etc/my.cnf -p 3308:3306 swr.cn-east-3.myhuaweicloud.com/library/mysql:8.0
# mysql57 docker run -d --name mysql57 -e MYSQL_ROOT_PASSWORD=123456 -v /home/mydata/mysql57/data:/var/lib/mysql -v /home/mydata/mysql57/my.cnf:/etc/my.cnf -p 3307:3306 swr.cn-east-3.myhuaweicloud.com/library/mysql:5.7
#确认挂载生效 docker inspect mysql8 --format='{{range .Mounts}}{{println .Source "->" .Destination}}{{end}}' docker inspect mysql57 --format='{{range .Mounts}}{{println .Source "->" .Destination}}{{end}}'
|
挂载生效后的目录