一、主从架构
MySQL 主从架构部署比较简单,常见架构根据主从节点个数不同分成 一主多从,多主一从,双主节点等。
一主多从的主从复制数据库集群架构师最基本也是最常用的一种架构部署,能够满足很多业务需求。本篇博文主要针对该架构进行实操。
优点:
- 数据存在多个镜像和数据冗余,可以防止单一主机的数据丢失,提高数据的安全性。
- 如果使用mysql proxy,在业务上可以实现读写分离。即可以把一些读操作在从服务器上执行,减小主服务器的负担。
- 在从服务器上做数据备份,这样不影响主服务器的正常运行。
- 从服务器可以使用不用的存储引擎,从库上的数据表建立不同的索引,适用不同的业务场景。
缺点:
- 基于mysql主从数据同步方式(异步复制和Mysql5.7新增的半同步复制)会出现数据不一致的问题
主从复制
主主复制
双主多从
二、主从+Keepalived
三、高可用架构(扩展)
上述主从架构,master宕机无法进行故障转移。再此基础上可能需要使用引入三方组件来保证服务的高可用。
比如:lVS负载、HaProxy、keepalive等组件。基于上述组件加持的高可用架构有如下解决方案
- LVS + Keepalived + MySQL(有脑裂问题?但似乎很多人推荐这个)
- DRBD + Heartbeat + MySQL(有一台机器空余?Heartbeat切换时间较长?有脑裂问题?)
- MySQL Proxy(不够成熟与稳定?使用了Lua?是不是用了他做分表则可以不用更改客户端逻辑?)
- *InnoDB Cluster *(社区版不支持INNODB引擎?商用案例不足?)
- MySQL + MHA(Haproxy)(如果配上异步复制,似乎是不错的选择)
- MySQL + MMM(MMM即Multi-Master Replication Manager for MySQL) (mysql多主复制管理器,基于perl实现,关于mysql主主复制 配置的监控、故障转移和管理的一套可伸缩的脚本套件)
3.1 LVS + Keepalived + MySQL
3.2 DRBD + Heartbeat + MySQL
3.3 MySQL Proxy
- Cobar
- Sharding-JDBC
- Sharding-Proxy
https://blog.csdn.net/qq_44300280/article/details/126211533
https://blog.csdn.net/WRZ19941220/article/details/117264928
3.4 InnoDB Cluster(商业版才有)
InnoDB Cluster 支持自动 Failover、 强一致性、 读写分离、 读库高可用、 读请求负载均衡, 横向扩展的特性, 是比较完备的一套方案。
但是部署起来复杂, 想要解决 router单点问题好需要新增组件, 如没有其他更好的方案可考虑该方案。 InnoDB Cluster 主要由 MySQL Shell、 MySQL Router 和 MySQL 服务器集群组成, 三者协同工作, 共同为MySQL 提供完整的高可用性解决方案。
MySQL Shell 对管理人员提供管理接口, 可以很方便的对集群进行配置和管理
MySQL Router 可以根据部署的集群状况自动的初始化, 是客户端连接实例。 如果有节点 down 机, 集群会自动更新配置。 集群包含单点写入和多点写入两种模式。 在单主模式下, 如果主节点 down 掉, 从节点自动替换上来,MySQL Router 会自动探测, 并将客户端连接到新节点。
3.5 MYSQL-MHA(mysql 主主复制管理器)
MHA(Master High Availability) 目前在 MySQL 高可用方面是一个相对成熟的解决方案,由日本 DeNA 公司 youshimaton(现就职于 Facebook 公司) 开发, 是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在 MySQL故障切换过程中,MHA 能做到在 0~30 秒之内自动完成数据库的故障切换操作(以 2019 年的眼光来说太慢了), 并且在进行故障切换的过程中, MHA 能在最大程度上保证数据的一致性, 以达到真正意义上的高可用。
3.6 MYSQl-MMM(Master-Master Replication Manager for MySQL
MySQL-MMM 是 Master-Master Replication Manager for MySQL(mysql 主主复制管理器) 的简称, 是 Google 的开源项目(Perl 脚本) 。
MMM 基于 MySQL Replication 做的扩展架构, 主要用来监控 mysql 主主复制并做失败转移。 其原理是将真实数据库节点的IP(RIP) 映射为虚拟 IP(VIP) 集。mysql-mmm 的监管端会提供多个虚拟 IP(VIP) , 包括一个可写 VIP,多个可读 VIP, 通过监管的管理, 这些 IP 会绑定在可用 mysql 之上, 当某一台 mysql 宕机时, 监管会将 VIP迁移至其他 mysql。在整个监管过程中, 需要在 mysql 中添加相关授权用户, 以便让 mysql 可以支持监理机的维护。 授权的用户包括一个mmm_monitor 用户和一个mmm_agent用户, 如果想使用 mmm 的备份工具则还要添加一个 mmm_tools 用户。
总结
对于上述两大类集群架构都涉及到了集群中的多节点数据同步问题,涉及到同步问题需要了解mysql数据复制的类型和数据同步原理。
最后编辑:Jeebiz 更新时间:2024-08-22 10:22