一文讲清楚mysql主从服务搭建过程

2023-10-21 00:01:43 浏览数 (1)

shigen坚持日更的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。坚持记录和分享从业两年以来的技术积累和思考,不断沉淀和成长。

shigen今天带来的文章是mysql主从服务的搭建,原谅这篇迟到的文章。

先说一下我想搭建的原因的吧。我必须申明的是:我们目前的项目接触不到。shigen是一个比较喜欢折腾的人,在接触腾讯云的云数据库(CDB)的时候,有很多的主从节点。我一想,我也可以尝试去搭建一个呢。

主从架构主从架构

所以,本文的设计优点在于:

一个docker-compose文件即可启动; 详细的搭建过程; 结合实际业务的思考。

首先,我们需要整明白为什么需要主从节点的mysql服务,这就要对比我们单一节点的mysql了。

高可用,实时灾备,用于故障切换。比如主库挂了,可以切从库,保证系统的稳定性; 读写分离,提供查询服务,减少主库压力,提升性能; 备份数据,避免影响业务。

那好处在这里,mysql主从服务的原理是什么呢?我找到了一张图解释整个过程:

mysql主从复制原理mysql主从复制原理

具体的过程是这样的:

  1. 主库提交完事务后,写入binlog日志
  2. 从库连接到主库,请求获取binlog日志
  3. 主库创建一个dump线程,将binlog推送到从库
  4. 从库开启一个IO线程读取同步过来的binlog,并记录到relay log中继日志中
  5. 从库再开启一个sql线程读取relay log中的记录,同步到数据库中
  6. 从库记录自己的binlog日志

好的,以上就是基本的理论,现在我们开始激动人心的实战篇。

Docker-compose.yaml

docker-compose文件的编写docker-compose文件的编写

⚠️注意:

需要制定相同的同步数据库,这里是test

指定links 实现两个容器之间的内网访问 数据文件、配置文件的挂载

My.cnf

master

这里炫酷一点是为了改变默认显示灰色的字体,看起来效果不大理想。具体的配置代表的含义都有详细的注释。

master的配置master的配置
slaver的配置slaver的配置

好的,现在万事俱备,只欠东风了

执行docker-compose up -d命令,会发现拉取镜像、启动容器了。

启动容器启动容器

我们尝试连接一下mysql的主节点:

链接mysql主节点链接mysql主节点

此时发现mysql的主节点上已经有一个数据库test了,但是数据表是空的。

空数据表的数据库test空数据表的数据库test

魔法生成表结构哥模拟数据:

创建数据表并模拟数据创建数据表并模拟数据
插入的数据插入的数据

此时,我们查询一下mysql主节点的状态:

mysql主节点的状态mysql主节点的状态

出现以上的结果,代表主节点的配置完成了,现在我们中心在slave节点。

我们进入slave容器,并用 curl mysql-master:3306尝试一下是否能获得相应。

shigen这里也是先执行docker inspect xxx查看了容器的详细信息,才发现可以直接用mysql-master作为主节点的IP。

curl测试curl测试

进入容器的mysql,执行一下的命令:

在salve中执行命令在salve中执行命令

参数代表的含义:

master_host master的ip master_port master的端口 master_user master 用户名 master_password master 密码 master_log_file master中此时的File 参数 master_log_pos master中此时的Position 参数

现在,我们看一下从节点的状态:

查看从节点的状态查看从节点的状态

此时发现配置上没啥问题了,但是数据没同步怎么回事呢?分析了发现:master_log_pos master中此时的Position 参数设置的有问题,我们应该从0开始。

那怎么办,复制一下之前的建表语句和数据的插入语句。

重复之前的建表操作重复之前的建表操作

我们再次在主节点插入一条数据,看看从节点会不会同步过来。

插入一条新的数据插入一条新的数据
在从节点查询在从节点查询

查询了从节点的数据,发现同步过来了,代表着我的主从节点的搭建成功了!


其实还有其他的一主多从架构,加上keepalive nginx,实现负载均衡……感兴趣的伙伴可以再去研究下。

nginx mysql集群架构nginx mysql集群架构

以上就是今天分享的全部内容了,觉得不错的话,记得点赞 在看 关注支持一下哈,您的鼓励和支持将是shigen坚持日更的动力。

shigen一起,每天不一样!

0 人点赞