Mysql Docker 主从配置
操作系统:Windows10 使用的MySQL8.0的docker镜像
总览
前置环境说明
首先在系统中起了一个MySQL8.0的docker镜像,并在其中插入了初始数据,容器名就叫mysql(视为主库),从库在主从分离前还没有启动
操作日志如下:
# 拉取MySQL8.0版本镜像并启动,监听在3306端口,设置root用户密码为root
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_ROOT_HOST=% -d mysql:latest
其中使用了脚本,自动生成了表和插入数据,下面有脚本链接,可进行点击查看:
数据导入导出
这里不使用脚本对从库进行初始化,而是从主库中导出数据,导入到从库中
注意:如果主库有在使用,需要停掉相关的使用程序,或者对主库进行加锁
操作日志如下:
# 首先从主库中备份数据到本地(在sh中提前进入准备好的目录)
docker exec mysql /usr/bin/mysqldump -u root --password=root test > backup.sql
# 运行一个新的mysql,作为从库
docker run --name mysql_bk1 -p 3309:3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_ROOT_HOST=% -d mysql:latest
# 新开的数据启动可能需要点时间,请耐心等候,使用下面的命令可以看到mysql的运行日志,运行到新的日志内容就说明准备就绪了,可以进行使用
docker logs -f mysql_bk1
# /usr/sbin/mysqld: ready for connections. Version: '8.0.22' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL.
# 进入到新开的数据库中,建立数据库test
docker exec -ti mysql_bk1 mysql -u root -p
create database test;
# Ctrl-D退出,执行下面的命令导入数据到新开的mysql中,这个需要花费好几分钟,请耐心等待;当然也可以docker cp backup.sql文件到容器中,然后连上数据库使用source backup.sql
cat backup.sql | docker exec -i mysql_bk1 /usr/bin/mysql -u root --password