docker安装mysql主从

实验环境

linux :cenos7

第一步:拉取镜像

docker pull mysql:5.6

第二步:用拉取的镜像启动容器

启动主mysql

docker run -p 3309:3306 --name mymysqlmaster2 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6

启动从mysql

docker run -p 3310:3306 --name mymysqlslave2 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6

master对外映射的端口是3309,slave对外映射的端口是3310。因为docker容器是相互独立的,每个容器有其独立的ip,所以不同容器使用相同的端口并不会冲突。这里我们应该尽量使用mysql默认的3306端口,否则可能会出现无法通过ip连接docker容器内mysql的问题。

查看运行中的容器

docker ps

20191218211843310.png

使用navicat连接查看数据库主从

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA3NzIyMzA=,size_16,color_FFFFFF,t_70watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA3NzIyMzA=,size_16,color_FFFFFF,t_70

第三步:配置mysql主数据库

进入主mysql容器内

docker exec -it 容器id /bin/bash

docker exec -it ec61ee948cd8 /bin/bash

进入配置文件夹

cd /etc/mysql

更新命令,有点久,耐心等待

apt-get update

安装vim命令,有点久,耐心等待

apt-get install vim


vim编辑my.cnf

[mysqld]
## 同一局域网内注意要唯一
server-id=100  
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin

重启mysql服务
 

service mysql restart

重启mysql服务会导致容器停止,重启容器

docker start mymysqlmaster2

进入容器

docker exec -it ec61ee948cd8 /bin/bash

进入mysql

mysql –u root -p

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

CREATE USER 'slave'@'%' IDENTIFIED BY 'root';

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

第四步:配置mysql从数据库,跟主库差不多一样的操作

进入从库

docker exec -it 3f059d45a02c /bin/bash

进入

cd /etc/mysql

更新

apt-get update

安装vim命令

apt-get install vim


vim编辑my.cnf

[mysqld]
## 设置server_id,注意要唯一
server-id=101  
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin   
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin 

重启

service mysql restart
docker start mymysqlslave2
docker exec -it 3f059d45a02c /bin/bash


进入mysql

mysql –u root -p
CREATE USER 'slave'@'%' IDENTIFIED BY 'root';

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

第五步:链接Master(主)和Slave(从)

用navicat打开mysql主数据库,查询以下语句。

show master status

2019121821324196.png

File和Position字段的值后面将会用到,记住查询出来的值

查看容器ip
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id
 

docker inspect --format='{{.NetworkSettings.IPAddress}}' mymysqlmaster2

2019121821363451.png

在slave 中进入 mysql,执行
 

change master to master_host='172.17.0.4', master_user='slave', master_password='root', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 1832, master_connect_retry=30;

这句话代表,从数据库可以从主数据同步数据,包含了通信的ip地址和文件,和重试的参数。

其中

master_host:主数据库的ip,即刚才查看容器ip的查询结果

master_user:用于同步的数据库用户

master_password:用户的密码

master_log_file,master_log_pos为主数据库show master status查出来的数据。

master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒

第六步:开启slave,实现主从复制
 

start slave

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA3NzIyMzA=,size_16,color_FFFFFF,t_70

打开navicate连接mysql从数据库查看状态
 

show slave status 

20191218214244884.png

看到这两个参数为yes的话,就安装配置完成了。

第七步:验证

在主库创建数据库db5,发现从数据库自动创建了db5了,验证完毕。

20191218215219865.png

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值