1
jixiangqd 2016-02-29 17:10:20 +08:00 1
mycat 、 oneproxy 可以试试这种对应用层透明的中间件。。。
|
2
MasterYoda 2016-02-29 20:35:16 +08:00 1
http://stackoverflow.com/questions/8947918/read-slave-read-write-master-setup
作者自己的答案。 他博客里还写过别的方法,判断 is_flush 的,在底层做读写分离。 |
3
wdg8106 OP @MasterYoda 太感谢了,困扰了好长时间,终于有解决思路了
|
4
wdg8106 OP @jixiangqd 只试过 mysql-proxy ,跟 sqlalchemy 结合使用效果不是很好,你说的这两个中间件是类似的吗,我再自己看看
|
5
SlipStupig 2016-03-02 13:52:57 +08:00 1
@wdg8106 mysql-proxy 是神坑,可以用一下 360 的 atlas
|
6
siteshen 2016-03-07 14:06:12 +08:00 1
继承实现 Session.get_bind 方法就行:
def get_bind(self, mapper=None, clause=None): # 增强版,支持 User.use_master().get(1024) # 当然还需要实现 Query._execute_and_instances ,增加 Query.use_master 方法 # if use_master: # return bind['master'] if not self._flushing and bind['slaves']: return random.choice(bind['slaves']) else: return bind['master'] |