vlambda博客
学习文章列表

MySQL如何配置读写分离?

既然上一篇提到了(),那我们就接着 MySQL 继续往下聊。


https://www.javanav.com



为了验证面试者是否使用过某些技术,面试官最喜欢问的一句就是,你们项目中是怎么配的?


而在实际开发中,大部分精力都集中在如何实现业务功能,如何修复 BUG,如何解决线上的疑难杂症。配置的问题,只要环境统一、软件版本统一、配置文件统一,配一遍踩过所有会遇到的坑,记个文档,后面按照这个文档来就行了,或者制作发布包、镜像等。数据库的配置一般都涉及不到开发人员。


你平时没留意,但你不会不代表别人不会,就好比高考你不会的题目总有很多人能做出来。我觉得这种题目,有空自己来一遍,记个笔记,往后都门清了。


MySQL 最常用的集群部署方式是主从架构,可以 1 主多从,主库写,从库读,用这种方式来做读写分离。也可以主主架构,两边都可以读写,但需要业务代码控制数据冲突问题。MGRMySQL Group Replication),是分布式架构,支持多点写入,但性能不如上述两者,且对网络要求较高。


所以常用的读写分离基于主从架构实现的较多。


那么主从架构的 MySQL 如何配置呢?


为了解答这个问题,我下载了 64 位 windows MySQL 最新版的 server,8.0.21,进行了安装。


step1、安装流程:

  • 官网下载安装包

  • 解压

  • 创建安装初始化配置文件,my.ini,放在安装包与 bin 目录平级

  • 管理员 CMD 执行 mysqld --initialize --console

  • 解决报错,下载 vcruntime140_1.dll 文件放到 System32 目录

  • 继续安装,成功之后生成 root 账号的临时密码

  • 安装服务 mysqld --install

  • 启动服务 net start mysql

  • 登陆修改 root 密码


第二台电脑也是如此配置。详细我记录在了博客里:

https://javanav.com/article/e7675c2d2a0d4c03aca25a32b60cbabb.html


这样两台电脑的 MySQL 服务安装就搞定了。



step2、配置主从

  • 主库在 my.ini 中新增库 id 与 log-bin 配置

  • 重启主库

  • 为从库创建同步账号、授权

  • 从库在 my.ini 中新增库 id、log-bin、relay-log 配置

  • 重启从库

  • 修改从库由主库同步的配置信息

  • 开启 slave


详细配置见:

https://javanav.com/article/08d7b58e8b4d47b38a3773926a93f36c.html


配置到这里,向主库新建表,增删改数据,都会自动同步到从库。但是回答到这里,只说了配置的一半,就是 MySQL 的主从配置,只得了 50 分


面试官这时候还会追问,项目中是如何配置读写分离的呢?


项目中一般不会自己去控制增删改的 SQL 获取主库的连接进行操作,查询的 SQL 获取从库的连接进行操作。都是通过中间件更优雅地实现读写分离,如何拿到剩下的 50 分,下篇文章继续折腾。



留言区

ConstXiong 发起了一个读者讨论 说说面试官都问过你哪些关于配置的内容?是不是很头疼? 精选讨论内容
我依然都在

蛋疼~面试官骚操作太多了

Author

是啊,突然想到一个好玩的。当面试官遇到面试官,会发生什么?哈哈

星猫

面试造火箭,上班拧螺丝,拿个搬砖钱。

Author

大厂非核心团队,亦如此