MySQL主从复制与Mycat读写分离
MySQL 的主从复制配合 Mycat 的读写分离,用起来真是挺顺的。你要是平时后端压力大、查询又多,这一套能帮你省不少事。主库负责写,从库分担读操作,响应也快,数据还安全。你只要搭配得当,Mycat 把求分发得清清楚楚,读写流畅,系统抗压能力也能提升一截。嗯,用起来就一个字——稳!
MySQL 的主从复制其实不难理解。主库负责业务求,比如写入数据;从库跟在后面同步这些变更。这样即使主库宕了,从库也能立刻顶上,业务不中断。读多写少的业务场景下,适合这样做,成本低,收益高。
你可以把读求分发到从库上,像报表、搜索这些操作,从库抗住没问题。主库继续专心写入,避免被慢查询拖累。Mycat在这方面做得比较成熟,自动读写分离、SQL 路由策略灵活,还有连接池加持,性能也还不错。
讲点原理,不怕你烦。主库会记录binlog
,从库用 I/O 线程拉去这些日志,SQL 线程按顺序执行,数据就同步过来了。复制有三种方式:异步(快但有丢数据风险)、半同步(折中方案)、全同步(最稳但最慢)。一般选半同步,安全和性能平衡得比较好。
实际操作时,记得 binlog 要开,主从配置别搞错,尤其是server-id
得唯一。你也可以用docker-compose
来搭环境,部署快,还方便测试。
如果你刚好也在折腾读写分离的架构,MySQL 配 Mycat 是个不错的选择。不想自己造轮子的话,下面这些文章也蛮值得一看:
- CodeIgniter 读写分离示例
- 使用 Atlas 实现 MySQL 读写分离
- 为什么选择 MyCat?-mycat 技术分享
- docker-compose 构建 mysql 主从镜像包
- binlog2sql 工具使用教程
如果你想进一步提升读写分离的智能性,可以研究下 Mycat 的 SQL 解析规则,是基于正则的分库分表策略,灵活性还蛮高。
20.95KB
文件大小:
评论区