win10环境Docker下启动多个mysql构建主从服和遇到的问题

第一步:下载mysql镜像:docker pull mysql

查看镜像

第二步:启动两个mysql容器

主服务器:docker run --name master -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql

从服务器:docker run --name slave -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306 -d mysql

查看容器:

第三步:

配置master容器

运行docker exec -it ce16ed2a83b2 /bin/bash 或者 docker exec -it ce16ed2a83b2 bash进入

这时因为系统很干净所以很多命令用不了 按照ubuntu命令安装 

apt-get update

apt-get upgrade

apt-get install vim

安装完毕后最好替换下 软件源

vim etc/apt/sources.list 

使用dd命令删除所有行

然后按i进入插入模式 复制下面的软件源在insert模式下右键即可

然后保存退出

清华大学的软件源

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

第四步 修改mysql配置

vim etc/mysql/my.cnf

插入

## 同一局域网内注意要唯一

server-id=100

## 开启二进制日志功能,可以随便取(关键)

log-bin=mysql-bin

保存退出

重启一下容器

docker stop ce16ed2a83b2

docker exec -it ce16ed2a83b2 bash

第五步 创建用户

mysql -u root -p 123456
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

slave容器的操作只需要前四步操作

my.cnf的配置不太一样

## 设置server_id,注意要唯一

server-id=101

## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用

log-bin=mysql-slave-bin

## relay_log配置中继日志

relay_log=edu-mysql-relay-bin

第六步:配置master

cmd 查看一下主容器的host

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

master容器里查看一下用户状态

 mysql -u root -p 输入密码进入mysql

use mysql

select user,plugin from user;

新版Mysql的密码加密方式可能验证不通过 需要修改slave的密码验证方式为 mysql_native_password

alter user 'slave'@'%' identified by '123456' password expire never;

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

flush privileges;

查看一下binlog的编号和位置

以上就是master要做的准备了

第七步 slave配置

连接主服

change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 2460, master_connect_retry=30;

启动从库

start slave;

show slave status\G;

启动成功

注意:

Slave_IO_Running: NO

原因很多 我遇到的是刚刚那个mysql密码验证格式的问题 
           

Slave_SQL_Running: No 可能是master容器下的最后一句mysql语句在从库这边权限有问题 

 

在maste容器下随便运行一句查询语句就可以解决这个问题 也可能是其他情况 具体情况请百度

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值