docker部署mysql5.7主从

 

一、创建网络

docker network create -d bridge my_network

 

二、拉取mysql镜像

docker pull mysql:5.7

 

 

三、创建容器

主库:

docker run -p 13306:3306 --name master_mysql --net my_network -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

 

从库:

docker run -p 13307:3306 --name slave_mysql --net my_network -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

 

完成之后,需要更改my.cnf配置,通过docker cp命令拷贝文件进行修改

 

主库

[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

 

4. 配置主库

在master数据库(主库)中创建同步用户授予用户slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。

创建用户并授权,允许从库服务连接主库的服务

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

 

注意:如果是mysql8以上版本,还需要修改加密模式

alter user 'slave'@'%' identified with  mysql_native_password  by '123456';

 

刷新一下

flush privileges;

 

查询主库File和Position

show master status;

 

进入从库Slave 中进入 mysql,执行

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;

 

查看从库的状态,有两个Yes的话说明主从配置成功,可以在主库上新建数据库进行测试

show slave status \G

 

 

posted @ 2022-07-03 18:57  程序员小艺  阅读(179)  评论(0编辑  收藏  举报