1.概述
1.1 基于查询分离
最简单的分离方法是将所有不能容忍脏数据的读和写查询分配到主动或主库服务器上。其他的读查询分配到备库或被动服务器上。该策略很容易实现,但事实上无法.有效地使用备库,因为只有很少的查询能容忍脏数据。
1.2 基于脏数据分离
这是对基于查询分离方法的小改进。需要做–些额外的工作,让应用检查复制延迟,以确定备库数据是否太旧。许多报表类应用都使用这个策略:只需要晚上加载的数据复制到备库即可,它们并不关心是不是100%跟上了主库。
1.3 基于会话分离
另一个决定能否从备库读数据的稍微复杂–点的方法是判读用户自己是否修改了数据。用户不需要看到其他用户的最新数据,但需要看到自己的更新。可以在会话层设置-一个标记位,表明做了更新,就将该用户的查询在一段时间内总是指向主库
。这是我们通常推荐的策略,因为它是在简单和有效性之间的一种很好的妥协。
如果有足够的想象力,可以把基于会话的分离方法和复制延迟监控结合起来。如果用户在10秒前更新了数据,而所有备库延迟在5秒内,就可以安全地从备