MySQL集群基本概率
1、数据同步
MySQL自带Master-Slave数据同步模式,也就是主从同步模式。MySQL_A节点开启binlog日志文件后,MySQL_A上面执行的SQL语句(查询语句除外)都会被记录在binlog日志里面。MySQL_B节点通过订阅MySQL_A的binlog文件,能实时下载这个日志文件,然后在MySQL_B这个节点上运行这些SQL语句,就保证了自己的数据和MySQL_A节点一致。
在主从同步模式里面,数据同步是单向的,如果你在MySQL_A上写入数据,可以同步到MySQL_B上。如果在MySQL_B上面写入数据,是不能同步到MySQL_A上的。如果MySQL_A挂了,MySQL_B可以接替工作。但是如果MySQL_A重新上线后,MySQL_A应该从MySQL_B上同步数据,因此我们需要给MySQL_A和MySQL_B设置双向主从同步,也就是互为主从节点。
2、读写分离
现在无论MySQL_A还是MySQL_B单独工作的时候,读写操作都是由一个节点执行,压力很大。另外绝大多数的系统都是读多写少。那么在搭建集群的时候,我们可以让MySQL_1来处理写操作,让MySQL_2和MySQL_3来处理读操作。原来一个节点来处理所有的SQL语句,现在变成了3个节点来分担。MySQL集群的读写性能明显比单节点高几倍,能并发执行的SQL语句条数也翻倍了。
3、数据切分
如果MySQL单表数据超过两千万,该表的读写性能会急剧下降,因此我们要做数据切分,也就是分库分表。有很多算法可以把数据切分到多个MySQL节点上,最简单的是按照主键求模。