docker搭建mysql主从配置 记录一下午的踩坑记录

首先你要安装docker 并且pull一个MySQL,docker这里不做多说

注意mysql版本一定要够 我这里也用是5.7 

#docker pull mysql:5.7    拉一个5.7的镜像

docker run -p 3339:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123345 -d mysql:5,7

docker跑容器  这里容器3339端口映射主机3306端口(容器端口这大家随意哈)--name起个容器名 (你喜欢master也一样)

注意:-e后面是设置初始化密码的  如果不打 你无法使用Navicate工具远程链接数据库;

从数据库同理 docker run -p 3340:3306 --name myslave -e MYSQL_ROOT_PASSWORD=123345 -d mysql:5,7

成功后docker ps -a看一下所有容器(不带-a是查看这个在运行的容器);

然后用navicate进行连接 成功后:

建议用xshell ,本人宝塔终端敲卡的差点当场去世

docker exec -it  5b4f9e344d91 /bin/bash;

进入容器内 5b4f9e344d91是容器ID 不要搞错

如图进入后找到my.cnf文件修改配置,但是由于是docker安装的 这里还需要安装一下vim;

直接装vim还会爆错 ,必须先更新一下;

apt-get update;更新

apt-get install vim;搞vim下来然后vim修改my.cnf文件(友情提示coder菜鸡 1.vim 文件名 2.i  3光标处输入4 敲esc按键后 :wq报存);

修改配置后 service mysql restart;重启mysql 但是重启会导致当前的docker容器停止,因为容器只有特么的mysql 停了就全听了这里好奇的可以自己去搜docker的运行机制;

再次运行容器 docker start mymysql ; 这里mymysql是我的容器名你喜欢容器ID也一样

mysql -u root -p 进入收据库终端 运行下面创建用户

create user 'slave'@'%' identified by '123456';

grant replication slave,replication client on *.* to 'slave'@'%';

这里有可能回报错 因为mysql已经有slave用户了;

================================分界线=====================================

这里同理去配置从数据库myslave的my.cnf文件

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

  查看当前容器的ip地址,mymysql 注意是容器的 mysqlslave同理

进入查看主数据库mysql终端

输入show master status;

请记住这里 file的文件和位置下面要用到

 

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= 2830, master_connect_retry=50;

这里的坑说两句:

master_port:master端口号也是容器的端口

master_user:数据同步的用户

master_password:同步的用户的密码

master_log_file:指定 slave 从哪个日志文件开始复制数据,红框中 File 字段的值

master_log_pos: Position 字段的值

master_connect_retry:链接失败的重连时间,单位是秒,默认是60秒

这里千万不要有空行

然后在我们的从数据库mysql终端执行

start slave;开启主从模式

show slave status \G;查看状态

标红出都是YES就成功了

【这里有俩坑  如果两个参数都不是yes 查看   提示 Last_IO_Error: Got fatal error 1236 from master 如果后面提示 binlog 那八成是找不到主数据库的备份文件了

1.从数据库先stop slave;停止主从

2.去主数据库flush logs 更新日志,再show master status 查看file与postion

3.从数据 重新配置CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=577;

再重新start slave;开启主从;

4.从数据库show slave status\G;会有奇迹

在主数据库创建表同数据库就也会出现

这都解决不了问题 请自裁吧 

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值