最近搞个mysql 主被 具体需求如下
- master 正常时 所有请求router到master;
- master不正常时,DQL路由到slaves(slaves 会进行负载均衡,算法自定),DML DDL等抛异常;
本想写个开源的 参考了下 sharding-jdbc的代码 挤牙膏挤出来了点
https://github.com/yiwugou/yiwugou-jdbc
但是还没有进行详细的测试 问题应该一大堆 但是最近忙于别的项目 而且马上要演示了 暂时也抽不开身专心搞这功能 突然间想到这个方案 不知道可行不可行 大家一起琢磨下
配置方法
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 不可访问时, DQL到 virtual_ip --> slave_ip, DML 还是到 master_ip