mysql 在1台linux主机上通过docker部署1主2从

架构图:Master 提供增删改功能,2个Slave提供查询功能

系统环境:

linux 版本 

 

 docker 版本

 1.1 拉取 mysql 容器镜像

docker pull mysql:8.0

查看已经获取的镜像

docker images

1.2 运行镜像

创建 master 容器  mysql-master_3307

docker run -d --restart=always --name mysql-master_3307 -p 3307:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123456  mysql:8.0 

 

 

 创建 slave 容器 mysql-slave_3311

docker run -d --restart=always --name mysql-slave_3311 -p 3311:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123456  mysql:8.0

 

创建 slave 容器 mysql-slave_3312

docker run -d --restart=always --name mysql-slave_3312 -p 3312:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123456  mysql:8.0

 

测试连接:

 

 注意:如果服务器主机是在云服务器上需要在防火墙上设置允许 3307,3311,3312端口。

1.3 配置master主库和slave从库

1.3.1 进入 mysql-master_3307 容器配置master主库 

进入 mysql-master_3307 容器    docker exec -it mysql-master_3307 bash 

再切目录       cd /etc/mysql

需要编辑该目录下的my.cnf文件,这里如果没有vim命令的话需要先安装vim命令(主从两个容器都需要这样安装)。

        a.安装vim命令:apt-get update

  b.更新完成后再次安装:apt-get install vim

完成之后,需要更改my.cnf配置  vim my.cnf

主库 mysql-master_3307   配置文件 my.cnf 配置如下

 

 

1.3.2  进入 mysql-slave_3311 容器配置slave从库 

重复 1.3.1 配置主库的步骤,即进入容器,切目录,安装vim,修改配置文件 my.cnf

从库 mysql-slave_3311  配置文件 my.cnf 配置如下

 

1.3.3 进入 mysql-slave_3312 容器配置slave从库 

重复 1.3.1 配置主库的步骤,即进入容器,切目录,安装vim,修改配置文件 my.cnf

从库 mysql-slave_3312  配置文件 my.cnf 配置如下

 

1.4 重启主库和从库容器

以退出 主库为例:

先退出容器内部  exit

docker restart mysql-master_3307   

 

 然后重复1.4步骤,重启两个slave容器

1.5 查看主库状态

进入到容器,然后再连接容器内部mysql

docker exec -it mysql-master_3307 bash

mysql -u root -p123456

show global variables like 'log_bin%';

 

在主库上修改root可以通过任何客户端连接

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

 再查看 master 状态(在容器内部连接上mysql执行命令)

show master status;

 

1.6 配置从库

1.6.1 配置从库  mysql-slave_3311

连接到容器mysql服务器

docker exec -it mysql-slave_3311 bash

mysql -u root -p123456

修改root可以通过任何客户端连接

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

然后再配置从库同步主库配置语句如下:

change master to
master_host='10.0.12.7',
master_user='root',
master_log_file='mysql-bin.000001',
master_log_pos=157,
master_port=3307,
master_password='123456';

 

如果是局域网部署其中的 master_host 就是ifconfig命令下的ip地址

 

 

 

在从库上开启同步
start slave;

在从库上查看同步状态
show slave status \G;

 

 

 1.6.2 配置从库 mysql-slave_3312

重复 1.6.1 配置从库 mysql-slave_3311的步骤就行;

注意:改了主库的配置重启主库容器,也要重启一下从库容器;

1.7 测试

使用navicat连接到3个主从服务器

 

 

 

在主库上执行以下语句:

复制代码
create database Test;

use Test;

create table T_20220508
(
Id int,
Name varchar(20)
);
复制代码

执行成功后,刷新主库和从库

 

 

 

 

参考链接:

https://www.bilibili.com/video/BV1b44y1H7yM?p=19

https://blog.csdn.net/xizhen2791/article/details/123660049?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-5-123660049-blog-113703876.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-5-123660049-blog-113703876.pc_relevant_antiscanv2&utm_relevant_index=10

 

posted @   温故纳新  阅读(182)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示