1. 数据库集群能解决什么问题?
单节点和集群哪个读写速度更快?在低并发情况下,单节点MySQL读写速度快;在高并发情况下,大量的读写请求会让单节点的MySQL硬盘无法承受,MySQL集群能把这些请求分发到不同的节点,所以此时集群的读写速度更快。所以数据库集群解决了高并发情况下单节点MySQL的性能瓶颈问题。
2. MySQL集群的两种方案
-
读写分离,就是把写操作和读操作分发给不同的节点执行,这样就提升了数据读写的效率。因为大部分系统都是读多写少的,所以可以把写操作发给DB1节点,然后把读操作发给DB2节点,DB1节点和DB2节点之间进行同步数据操作,如果读操作远远大于写操作,那么可以增加多个DB2节点以提高吞吐量。最为重要的是,读写分离方案的前提得保证两个节点是同步的。
- 数据切分方案, 把数据切分存储到多个节点上面,每个节点存储的数据量都不多,只要InnoDB引擎的数据不少过2000W,那么读写效率还是很快的。DB1和DB2之间的数据是不同的,这和读写分离方案是不同的。
读写分离和数据切分的两种方案都会把请求分发不同的节点上来执行,减少单节点的压力。读写分离防范降低了高并发的压力,数据切分方案降低了数据存储的压力。在组建数据库集群的时候,这两种方案都要使用。
3. MySQL集群常见的两种最佳实践
- 常见的MySQL集群方案有PXC和Replication
- 两种集群方案有各自的缺点,PXC集群适合保存少量高价值数据,Replication集群适合保存大量低价值数据
- Replication集群的同步方式是异步传输,当数据写入DB1后,事务就直接提交了,不管数据能不能及时的同步到DB2,导致读操作不能立刻读取到数据。
- PXC集群,节点之间是同步传输的,只有数据同步到DB2节点上,事务才算提交成功。也正是因为数据需要同步到其他节点,数据才算写入成功,所以PXC集群数据的写入速度不如Replication集群。因此PXC集群只适合保存少量高价值数据。