最近搞個(gè)mysql 主被 具體需求如下
- master 正常時(shí) 所有請(qǐng)求router到master;
- master不正常時(shí)娃圆,DQL路由到slaves(slaves 會(huì)進(jìn)行負(fù)載均衡,算法自定),DML DDL等拋異常;
本想寫個(gè)開源的 參考了下 sharding-jdbc的代碼 擠牙膏擠出來(lái)了點(diǎn)
https://github.com/yiwugou/yiwugou-jdbc
但是還沒有進(jìn)行詳細(xì)的測(cè)試 問題應(yīng)該一大堆 但是最近忙于別的項(xiàng)目 而且馬上要演示了 暫時(shí)也抽不開身專心搞這功能 突然間想到這個(gè)方案 不知道可行不可行 大家一起琢磨下
配置方法
master : master_ip
slave : slave_ip
keepalived: virtual_ip (主 master_ip, 備 slave_ip)
sharding-jdbc 配置如下
<master-slave: master-data-source-name="master_ip" slave-data-source-names="virtual_ip" />
這樣正常情況下 DQL 到 virtual_ip --> 也就是 master_ip, DML 到 master_ip
master_ip 不可訪問時(shí)褥赊, DQL到 virtual_ip --> slave_ip, DML 還是到 master_ip