对于MySQL数据库来说,从比较早的版本开始,MySQL就支持master-slave复制,这个特性是MySQL数据库非常重要,而且也应用比较广泛的特性。MySQL复制在读写分离,数据备份,可伸缩性等方面都有比较好的应用,并结合其他特性,也很容易实现高可用性。
除了MySQL复制及MySQL官方的集群架构技术外,一些第三方公司也开发了很多工具用于实现MySQL集群的各种特性,整体来说,目前常见的MySQL集群架构类型有下面几种:
1.mysql复制
MySQL复制主要是通过在master节点上记录发生改变的binlog日志,slave节点从master节点获取日志,并在slave节点上应用,以实现slave节点与master节点的数据同步,与oracle数据库中的逻辑DataGuard实现方式比较相似。MySQL复制架构一般由以下几种应用方式:
² 一主多从:
在主库读取请求压力非常大的场景下,可以通过配置一主多从复制架构实现读写分离,把大量对实时性要求不是特别高的读请求通过负载均衡分布到多个从库上,降低主库的读取压力。在主库出现异常宕机的情况下,可以把一个从库切换为主库继续提供服务;
² 级联复制:
一主多从能够解决大部分读请求压力特别大的场景的需求,但主库的I/O压力和网络压力会随着从库的增加而增长,而使用多级复制架构就可以解决一主多从场景下,主库额外的I/O和网络压力。
但要注意的是,多级复制场景下主库的数据是经历两次才到达读取的从库,期间的延时比一主多从复制场景下只经历一次复制的要大。这种方案可以与第三方软件结合使用,例如Slave+LVS+Keepalived 实现高可用。
² 双主复制:Dual-Master 高可用环境