一 简介 ReplicationDriver 程序实现读写分离
二 如何使用
1 配置访问串
类似 address=(host=192.168.5.128)(port=3306)(type=master/slave)
完整串 jdbc:mysql:replication://[master host][:port],[slave host 1][:port][,[slave host 2][:port]]...[/[database]][?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]
ReplicationDriver默认将第一个数据库服务器作为Master库,后续其他数据库服务器作为从数据库。
2 判断原理
Mysql驱动使用究竟使用 master还是 slave数据库,取决于 Connection.getReadOnly()的值。
1 如果值为false,则将命令发送到master数据库
2 如果值为true,则将命令发送到slave数据库。
3 当有多台slave数据库时,使用轮询调度(round-robin)算法选择某一台slave数据库。
3 根据原理程序设置
写 conn.setReadOnly(false);
读 conn.setReadOnly(true);
jdbc串 设置master为VIP
4 相关思考
1 当集群出现2个read_only=NO时,会发生什么情况
2 当一个从库下架时,程序是否会出现轮询错误
3 当从库出现复制错误是,是否还会调用
4 本文仅作记录 博文来源 https://www.iteye.com/blog/leitelyaya-2335195 后续会进行调研测试 补充一下 mongo就是有类型的驱动实现了读写分离