docker部署mysql8主从
一、创建网络
docker network create -d bridge my_network
二、拉取mysql镜像
docker pull mysql:8.0
三、创建容器
# 主库
docker run -p 13306:3306 --name master_mysql --net my_network -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0
# 从库
docker run -p 13307:3306 --name slave_mysql --net my_network -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0
四、配置主库
[mysqld] ## 同一局域网内注意要唯一 server-id=100 ## 开启二进制日志功能,可以随便取(关键) log-bin=mysql-bin
##支持监听表结构变化
binlog-format=ROW
五、配置从库
[mysqld] ## 设置server_id,注意要唯一 server-id=101
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用 log-bin=mysql-slave-bin
## relay_log配置中继日志 relay_log=edu-mysql-relay-bin
配置完成之后重启mysql
docker restart master_mysql
docker restart slave_mysql
六、在主库创建用户并授权,允许从库服务连接主库的服务
CREATE USER 'slave'@'%' IDENTIFIED BY '123456'; GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%'; ALTER USER 'slave'@'%' identified with mysql_native_password by '123456';
flush privileges;
七、配置主从同步
# 查主库中询File和Position
show master status;
# 在从库中设置主库信息
change master to master_host='master_mysql', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 784, master_connect_retry=30;
flush privileges;
八、启动主从
# 在从库中执行
start slave;
# 查看状态
show slave status \G
出现双yes则同步正常