Docker下MySQL主从配置

1.docker安装MySQL

1.1 启动docker

systemctl start docker

1.2 从仓库中查询mysq

docker search mysql

在这里插入图片描述
1.3 下载mysql镜像

docker pull docker.io/mysqld

在这里插入图片描述
查询镜像是否下载成功

docker image ls

在这里插入图片描述
1.4 运行docker 容器(container, 主服务器(master))

docker run -itd --name=mysql_master -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123 docker.io/mysql

1.5 查询mysql进程是否启动

docker ps

1.6 运行从(slave)容器

docker run -itd --name=mysql_slave -p 3311:3306 -e MYSQL_ROOT_PASSWORD=123 docker.io/mysql

1.7 查看启动的container

docker ps

在这里插入图片描述
1.8使用navicat( 图形化工具)测试
在这里插入图片描述

2.配置主(master)服务器

2.1 进入master服务器容器内

docker exec -it mysql_master /bin/bash

2.2 进入/etc/mysql文件夹

cd etc/
cd mysql
ls

显示如下文件

conf.d my.cnf my.cnf.fallback

2.3 使用vi/vim编辑my.cnf文件

vi my.cnf

因为vi没有安装,所以显示如下提示
在这里插入图片描述

  • 此时执行 apt-get update
apt-get update

在这里插入图片描述

  • 执行apt-get install vim 安装vim
apt-get install vim
  • 使用vi编辑 my.cnf
vi my.cnf

在这里插入图片描述

  • 在my.cnf添加代码如下(使用“i” 键进入编辑模式)
    server-id:唯一编号
    在这里插入图片描述
  • 编辑完成后按Esc 输入 :wq 之后回车保存
    在这里插入图片描述
  • 出现如下界面,按回车继续
    在这里插入图片描述
  • 重新启动容器让配置生效
docker restart mysql_master

在这里插入图片描述
2.4 创建专用账户(slave)进行主从同步

  • 使用root账户登入mysql
docker exec -it mysql_master /bin/bash
 mysql -u root -p

输入密码

  • 创建专用同步账户(slave)
//创建slave账户,并初始化密码
CREATE USER 'slave'@'%' IDENTIFIED BY '123';
//给账户slave授权,REPLICATION SLAVE 常用于建立复制时所需要用到的用户权限 
//REPLICATION CLIENT 不可用于建立复制,有该权限时,只是多了可以使用如"SHOW SLAVE STATUS"、"SHOW MASTER STATUS"等命令。
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';
//使权限生效
flush privileges;

3.配置从(slave)容器

3.1 进入slave服务器容器内

docker exec -it mysql_slave /bin/bash

在这里插入图片描述
3.2 进入/etc/mysql文件夹

cd etc/mysql
ls

在这里插入图片描述
3.3 使用vi/vim编辑my.cnf文件

apt-get update

在这里插入图片描述

apt-get install vim

在这里插入图片描述

vi my.conf

修改如下图
在这里插入图片描述

4.主(master)从(Slave)复制

4.1 查看master状态

  • 进入master容器
docker exec -it mysql_master /bin/bash
mysql -u slave -p
  • 显示主服务器状态
show master status;

记住主服务器状态
在这里插入图片描述
4.2 在slave中执行命令

  • 查询master容器的独立IP
docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql_master // mysql_master--master容器的名称

记住IP地址
在这里插入图片描述

  • 进入slave容器中
docker exec -it mysql_slave /bin/bash
mysql -u root -p

在这里插入图片描述

  • 执行SQL语句
change master to master_host='172.17.0.2',//独立IP地址 
master_user='slave', //数据同步用户
master_password='123', //数据同步用户密码
MASTER_LOG_FILE='mysql-bin.000001',//主服务器状态
MASTER_LOG_POS=1327;//主服务器端口号
  • 开启主从复制过程
start slave;
show slave status \G;

出现如下界面,框选内容都为YES,及配置成功。否则看下面问题所在与解决方案
在这里插入图片描述

  • 图形化界面检测主从配置成功在这里插入图片描述

5.问题及解决方案

  1. error connecting to master ‘slave@172.17.0.2:3306’ - retry-time: 60 retries: 2 message:
    Authentication plugin ‘caching_sha2_password’ reported error: Authentication requires
    secure connection.
    解决方案:
    在master服务器修改用户密码信息
ALTER USER ‘slave’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123; 
FLUSH PRIVILEGES;

解锁表

unlock tables
  1. Slave failed to initialize relay log info structure from the repository, Error_code: 1872
    解决方案:
    在slave服务器进行如下操作:
    关闭slave服务器
stop slave; //关闭slave

重置slave

reset slave;//重置slave

重新运行change master to :确保配置内容无错

change master to master_host='172.17.0.2',
master_user='slave', 
master_password='123',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1327;

启动slave容器

start slave;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值