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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通