章
目
录
本文主要讲解关于MySQL集群部署相关内容,让我们来一起学习下吧!
为什么需要MySQL集群部署
原因:单节点的MySQL抗风险性很差,如果挂掉,会导致软件项目挂掉
目标:搭建一个高可用、高负载、高性能的6节点MySQL集群(根据你的数据量判断)
环境:CentOS7服务器、搭建好Docker环境、MySQL5.7(8.0版本宕机后需要人工对比日志和维护)、MyCat 1.6.7.4
一、MySQL集群主从同步与读写分离原理
1. 数据同步
MySQL主从同步原理是利用主从复制来实现数据同步。具体步骤如下:
- 主数据库(Master)把数据更改记录到二进制日志(binlog)中。
- 从数据库(Slave)把主数据库的二进制日志复制到自己的中继日志(relay log)中。
- 从数据库重做中继日志中的日志,把更改应用到自己的数据库上,以达到数据的最终一致性。
如果这样会发现一个问题,这是单向的同步,如果Master挂掉,那么Slave则无法继续更新数据,所以应该是双向同步,互为主从节点。
2. 读写分离
MySQL的读写分离是一种集群架构策略,目的是通过将数据库的读写操作分离到不同的服务器上,以提高整体数据库性能和并发负载能力。
在读写分离的策略中,主库负责处理事务性查询和写操作(INSERT、UPDATE、DELETE等),而从库只负责处理SELECT查询操作。这样可以使主从库分工明确,提高整体数据库性能。
主库除了处理事务性查询和写操作外,还需要将事务性操作导致的变更同步到从库中,以保证数据的一致性。这个过程一般通过主从复制(Master-Slave)的方式实现。
读写分离在数据库集群架构中有很多应用场景,比如当服务器的业务压力过大时,如果对该服务器既读又写,会影响用户体验。这时候就可以采取读写分离的方式,对只读库(配置低一点),对读写库(配置高速存储:固态硬盘等)进行分离。既可以提高查询效率,又可以保证数据的一致性。
上面的方案时一主两从,主节点是写节点,从节点是读节点,当然也可以配置更多的节点,主从同步还有一个关键,就是Master和Slave身份是固定的,如果Master宕机,Slave节点无法升级成写节点,所以,可以加上双向同步。
3. 数据切分
MySQL数据切分是指通过某种特定的条件,将存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。
数据的切分根据其切分规则的类型,可以分为两种切分模式:
一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切分可以称之为数据的垂直(纵向)切分;
另外一种则是根据表中数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库(主机)上,这种切分称之为数据的水平(横向)切分。
二、docker搭建双主四从MySQL集群
直接阅读《Docker如何搭建双主四从MySQL集群》这篇文章!
三、安装MyCat管理MySQL集群
直接阅读《如何安装MyCat并管理MySQL集群》这篇文章!
总结
以上就是关于MySQL集群部署相关的全部内容,希望对你有帮助。欢迎持续关注潘子夜个人博客,学习愉快哦!