一台服务器容器化部署搭建MySQL主从

为什么选择使用docker来部署MySQL的主从
  1. 简化部署:Docker可以提供快速、一致的部署环境,使得在不同的机器上搭建MySQL主从变得简单和可重复。

  2. 灵活性:通过Docker容器,可以轻松地进行水平扩展和垂直扩展,根据需要增加或减少MySQL实例数量。

  3. 高可用性:使用主从复制可以提高系统的可用性。当主数据库发生故障时,从数据库可以接管并继续提供服务。

下面是基于Docker搭建MySQL主从的大致步骤:

  1. 安装Docker:首先需要在相关服务器上安装Docker。

  2. 创建MySQL主容器:使用Docker命令创建一个MySQL主容器,配置相应的参数,比如MySQL版本、端口等。

  3. 配置主数据库:在主容器中打开MySQL配置文件,启用二进制日志(binlog),并设置唯一的服务器ID。

  4. 创建MySQL从容器:使用Docker命令创建一个MySQL从容器,同样配置相应的参数,并设置与主数据库相同的版本和端口。

  5. 配置从数据库:在从容器中打开MySQL配置文件,配置从数据库要连接的主数据库信息,包括主数据库的IP地址、端口号和用户名密码等。

  6. 启动容器:分别启动主数据库容器和从数据库容器。

  7. 配置主从关系:在主数据库中创建一个用于复制的用户,并为该用户授权。然后在从数据库中配置复制连接信息。

  8. 启动主从复制:在从数据库容器中启动复制过程,将从数据库作为从服务器连接到主数据库,并开始同步数据。

首先拉取docker镜像,我这里使用的是mysql的5.7版本

docker pull mysql:5.7

拉取完成之后我们docker  ps 查看一下

接下来就是运行我们的mysql容器

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

这是运行我们的mysql的主库命令

同样的方式我们再来运行一下我们的从库,这里注意,我们的名称跟映射端口要更换

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

然后再执行docker ps查看一下成没成功,运没运行

接下来我们进入到主库开始搭建主从复制

docker exec -it master /bin/bash 

  • docker exec:执行Docker容器内部的命令。

  • -it:使用交互式终端(Interactive TTY)模式来执行命令,即在当前终端会话中启动一个新的bash终端。

  • master:要进入的容器名称或ID。这里假设已经创建了一个名为"master"的MySQL主容器。

  • /bin/bash:要在容器内部执行的命令,这里是启动一个bash终端。

接下来我们来修改容器内部的my.cnf的文件来做主从,修改文件的内容实际跟普通的主从方式是一样的

打开my.cnf文件

会发现我们没有yum,也没有vim,这时,我们来执行yum update 

当执行 yum update 命令时,它会尝试从网络上获取最新的软件包以更新容器内的软件,执行完之后根据个人的需求看需不需要来执行yum -y install epel-release 来拓展一下源软件包

接下来就下载vim 

再去修改配置文件,master的my.cnf文件修改如下

修改完成之后切记要进行重启,使配置文件生效

当然,我们在重启之前,对master还需做一些操作,去创建我们的主从用户 ,创建完成之后去进行重启,重启之后记得进去执行以下show master status\G,我忘记截图了,大家别忘了,待会在下方认证时有用

docker restart master

slave的配置文件修改如下

跟上方一样改完配置文件重启,重启完成之后我们来认证主从

在认证主从的时候,容器内的指向IP与普通的不一样,我们需要去查看一下

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

获取之后再去认证

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

该指令就不解释了,跟普通的操作一样,就一个master_connect_retry是指定的刷新时间,30S

接下来启动slave即可,去查看主从状态

start slave;

没有问题,主从搭建完成,资源紧缺,才在一台服务器上搭建的这么一个主从,有需要的话照搬就可以了

猜你喜欢

转载自blog.csdn.net/pengpeng0121/article/details/134122235