08-利用MySQL复制分流查询操作
利用MySQL的主从复制(具体介绍见第29章)可以有效地分流更新操作和查询操作,具体的实现是一个主服务器承担更新操作,而多台从服务器承担查询操作,主从之间通过复制实现数据的同步。多台从服务器一方面用来确保可用性,一方面可以创建不同的索引以满足不同查询的需要。
对于主从之间不需要复制全部表的情况,可以通过在主服务器上搭建一个虚拟的从服务器,将需要复制到从服务器的表设置成BlackHole引擎,然后定义replicate-do-table参数只复制这些表,这样就过滤出需要复制的BINLOG,减少了传输BINLOG的带宽。因为搭建的虚拟从服务器只起到过滤BINLOG的作用,并没有实际记录任何数据,所以对主数据库服务器的性能影响也非常有限。
通过复制来分流查询是减少主数据库负载的一个常用方法,但是这种办法也存在一些问题,最主要的问题是当主数据库上更新频繁或者网络出现问题的时候,主从之间的数据可能存在比较大的延迟更新,从而造成查询结果和主数据库上有所差异。因此应用在设计的时候需要有所考虑。