常见方案:三种
- MMM
- MHA
- MGR
特点:
- 对主从结点复制的master进行监控
- 自动对master进行迁移,vip方式
- 重新配置集群的其他slave对新master进行同步
MMM
master-master-replication manager for MySQL ,基于Perl语音实现,可以主从配置,故障迁移
需要两个master,只有一个对外提供服务,类似主备模式
通过VIP进行两主之间的切换,但是不能从备用服务切换成主服务
不需要开发切换的脚本
不支持gtid的复制
MHA
master high availability manager andtools forMySQL
基于Perl脚本的工具
可以实现把slave转成master服务,,会把拥有新数据的slave结点
会避免数据一致性的问题,
淘宝的内部TMHA产品
MHA需要单独部署,分为manager结点和node结点
manger:单独部署
node:部署在每一台MySQL的机器上,会解析各个MySQL进行操作
优点
:支持GTID
可以从旧的master中恢复二进制日志,
缺点
需要自行开发vip转移脚本
只监控master状态,未监控slave的状态
MGR
MySQL Group Replication ,类似zk的事务,过半提交,保证主从一致,解决异步复制,半同步复制的一致性问题
一个复制组,过半数结点通过后,才会提交。
依赖一致性协议,类似paxos协议,实现
两种模式
- 多主模式,
- 单主模式
分库分表
1:作用
提高数据库性能,
2:方式
- 垂直分片(纵向分片)
对业务进行分批,就是专库专用,不同的数据,放在不同的表中,
需要对架构设计进行调整,单点的瓶颈还是有的,
可以缓解数据量访问量的问题,但是超过单点的阈值,还是需要水平分的
水平分片(横向分片)
不是根据业务逻辑分,而是通过某个字段,吧数据分散到不同的库中,
每个每篇保存一部分的数据
分片的策略
取模,取余,:可以均匀放数据,但是扩容非常麻烦
范围分配:容易扩容,数据不够均匀
时间分片:容易扩容,
枚举分片:按照地区
各种考虑吧,
3:分库分表的缺点:
如果是增长缓慢的业务,可以预估数据,做好方案
如果是增长快速,且稳定,可以多分一些
考虑降级的问题,比较统计查询,分页,聚合考虑ES方案
5:常见的分库分标组件
- shardingsphere 官网地址:https://shardingsphere.apache.org/document/current/cn/overview/
- 当当网研发,由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成
提供标准化的数据分片、分布式事务和数据库治理功能
- mycat 官网地址: http://www.mycat.org.cn/
- 基于阿里开业cobar研发,比较优秀吧
- DBLE 官网地址:https://opensource.actionsky.com/
- 其中分布式中间件可以认为是MyCAT的一个增强版,专注于MySQL的集群化管理