MySQL如何配置读写分离?
既然上一篇提到了(),那我们就接着 MySQL 继续往下聊。
https://www.javanav.com
为了验证面试者是否使用过某些技术,面试官最喜欢问的一句就是,你们项目中是怎么配的?
而在实际开发中,大部分精力都集中在如何实现业务功能,如何修复 BUG,如何解决线上的疑难杂症。配置的问题,只要环境统一、软件版本统一、配置文件统一,配一遍踩过所有会遇到的坑,记个文档,后面按照这个文档来就行了,或者制作发布包、镜像等。数据库的配置一般都涉及不到开发人员。
你平时没留意,但你不会不代表别人不会,就好比高考你不会的题目总有很多人能做出来。我觉得这种题目,有空自己来一遍,记个笔记,往后都门清了。
MySQL 最常用的集群部署方式是主从架构,可以 1 主多从,主库写,从库读,用这种方式来做读写分离。也可以主主架构,两边都可以读写,但需要业务代码控制数据冲突问题。MGR(MySQL 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 分,下篇文章继续折腾。
留言区
蛋疼~面试官骚操作太多了
是啊,突然想到一个好玩的。当面试官遇到面试官,会发生什么?哈哈
面试造火箭,上班拧螺丝,拿个搬砖钱。
大厂非核心团队,亦如此