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则同步正常

 

posted @ 2024-09-05 21:48  程序员小艺  阅读(157)  评论(0编辑  收藏  举报