服务器Mysql主从配置docker部署

1.首先拉取docker镜像,我们这里使用5.7版本的mysql:

docker pull mysql:5.7

这里遇到了(镜像源的问题):

  1. 修改 Docker 配置文件

    • 以 root 用户登录到您的容器引擎所在的虚拟机。
    • 修改或创建 /etc/docker/daemon.json 文件,添加如下内容(替换“加速器地址”为您实际获取的地址):
      {
        "registry-mirrors": ["加速器地址"]
      }
    • 例如,如果您的加速器地址是 https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com,则配置文件应如下所示:
      {
        "registry-mirrors": ["https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com"]
      }
  2. 重启 Docker 服务

    • 配置完成后,执行以下命令以重启 Docker 服务:
      systemctl restart docker

 2.使用此镜像启动容器,这里需要分别启动主从两个容器

Master(主):

docker run  -p 3339:3306 --name master  -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
 

Slave(从):

docker run -p 3340:3306 --name slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

此时可以使用Navicat等工具测试连接mysql(用服务器ip)


3.进入主 容器

docker exec -it master /bin/bash

cd /etc/mysql

yum install vim

vim my.cnf

 这里出现vim的安装问题

apt-get update

apt-get install vim

复制以下代码到my.cnf中

[mysqld]
server-id=100  
log-bin=mysql-bin

停止容器   docker stop master

下一步重启mysql

service mysql restart

启动主容器  docker start master

查看容器的ip地址  docker inspect --format='{{.NetworkSettings.IPAddress}}' master

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

docker exec -it master /bin/bash
mysql -uroot -p123456
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

最后先查看主mysql信息状态:

show master status

 

4.进入从容器

和配置Master(主)一样,在Slave配置文件my.cnf中添加如下配置:

docker exec -it slave /bin/bash

cd /etc/mysql

vim my.cnf
[mysqld]
server-id=101  
log-bin=mysql-slave-bin   
relay_log=edu-mysql-relay-bin 

这里出现(vim)每一个容器是一个单独的ip,资源不互通,所以需要重新

apt-get update

apt-get install vim

跟主容器一样

停止容器   docker stop slave

下一步重启mysql

service mysql restart

启动主容器  docker start slave

之后进入从容器:

docker exec -it slave /bin/bash

mysql -uroot -p123456

在Slave 中进入 mysql
 

**master_port**:Master的端口号,指的是容器的端口号

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

**master_password**:用于同步的用户的密码

**master_log_file**:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值

**master_log_pos**:从哪个 Position 开始读,即上文中提到的 Position 字段的值

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

change master to master_host='172.17.0.2',
 master_user='slave',
 master_password='123456', 
master_port=3306, 
master_log_file='mysql-bin.000001',(注意这里就是主容器中的log日志信息)
 master_log_pos= 617, 
master_connect_retry=30;

在Slave 中的mysql终端执行

show slave status \G;

用于查看主从同步状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值