博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql Connector 5.1 好用的新特性
阅读量:6894 次
发布时间:2019-06-27

本文共 3031 字,大约阅读时间需要 10 分钟。

Mysql connector 5.1对于集群部署的情况,给予了负载均衡、故障迁移、主从复制读写分离的支持。

故障迁移

使用mysql connector提供的故障迁移服务,首先需要配置相应的jdbc url:

jdbc:mysql://[primary host][:port],[secondary host 1][:port][,[secondary host 2][:port]]…[/[database]]

[?propertyName1=propertyValue1[&propertyName2=propertyValue2]…]

这个mysql服务器连接表包含了两种类型的mysql服务器,主机和从机。当创建一个mysql连接的时候,驱动总是先去连接主机,但是如果发生了通信问题,就会故障迁移到列表中的从机。

故障迁移可以配置以下连接属性:failOverReadOnly、secondsBeforeRetryMaster、queriesBeforeRetryMaster、retriesAllDown、autoReconnect、autoReconnectForPools。

负载均衡

在mysql connector5.1.3以后,对于mysql服务器集群或者主-主复制部署的情况,可以动态地配置负载均衡连接。

使用mysql connector提供的负载均衡服务,首先需要配置相应的jdbc url:

jdbc:mysql:loadbalance://[host1][:port],[host2][:port][,[host3][:port]]…[/[database]] »

[?propertyName1=propertyValue1[&propertyName2=propertyValue2]…]

 

这个功能有两个配置属性loadBalanceConnectionGroup、loadBalanceEnableJMX。

 

通过配置loadBalanceEnableJMX,你可以通过jmx client例如jconsole来监控和执行远程操作。

 

com.mysql.jdbc.jmx.LoadBalanceConnectionGroupManagerMBean 有以下的方法:

int getActiveHostCount(String group);

int getTotalHostCount(String group);

long getTotalLogicalConnectionCount(String group);

long getActiveLogicalConnectionCount(String group);

long getActivePhysicalConnectionCount(String group);

long getTotalPhysicalConnectionCount(String group);

long getTotalTransactionCount(String group);

void removeHost(String group, String host) throws SQLException;

void stopNewConnectionsToHost(String group, String host) throws SQLException;

void addHost(String group, String host, boolean forExisting);

String getActiveHostsList(String group);

String getRegisteredConnectionGroups();

 

主/从复制

使用mysql connector提供的主从复制服务,首先需要配置相应的jdbc url:

jdbc:mysql:replication://[master host][:port],[slave host 1][:port][,[slave host 2][:port]]…[/[database]] »

[?propertyName1=propertyValue1[&propertyName2=propertyValue2]…]

 

同时还支持主从读写分离:

使用com.mysql.jdbc.ReplicationDriver驱动可以实现主从读写分离,主机是读写模式,从机是读模式。对于一个只读的连接Connection.setReadOnly(true),驱动会自动把查询交给从机。

当设置了readFromMasterWhenNoSlaves=true,如果没有从机的话,就会把只读的连接交给主机。

由于在mysql中主从复制是异步的,所以当对实时性要求比较高的时候,应该Connection.setReadOnly(false)来保证从主机读取数据。

通过设置replicationEnableJMX=true,可以使用com.mysql.jdbc.jmx.ReplicationGroupManagerMBean来进行监控和远程操作。ReplicationGroupManagerMBean提供以下方法。

public abstract void addSlaveHost(String groupFilter, String host) throws SQLException;

public abstract void removeSlaveHost(String groupFilter, String host) throws SQLException;

public abstract void promoteSlaveToMaster(String groupFilter, String host) throws SQLException;

public abstract void removeMasterHost(String groupFilter, String host) throws SQLException;

public abstract String getMasterHostsList(String group);

public abstract String getSlaveHostsList(String group);

public abstract String getRegisteredConnectionGroups();

public abstract int getActiveMasterHostCount(String group);

public abstract int getActiveSlaveHostCount(String group);

public abstract int getSlavePromotionCount(String group);

public abstract long getTotalLogicalConnectionCount(String group);

public abstract long getActiveLogicalConnectionCount(String group);

转载自 

你可能感兴趣的文章
添加和删除虚拟用户
查看>>
shell 变量
查看>>
linux 如何进入grub模式
查看>>
JAVA操作Trip数据库2
查看>>
LINQ系列:Linq to Object限制操作符
查看>>
[BZOJ1296][SCOI2009]粉刷匠(DP)
查看>>
Executor执行框架
查看>>
[FMX] Android APP 启动黑屏优化补丁
查看>>
常用JavaScript的高级技巧
查看>>
bzoj 1670: [Usaco2006 Oct]Building the Moat护城河的挖掘
查看>>
mysql 不同索引的区别和适用情况总结
查看>>
day01 认识python变量 数据类型 条件if语句
查看>>
【算法学习笔记】38.最短路问题 SJTU OJ 1105 path
查看>>
MarkDown写blog(测试)
查看>>
linux主机名 hostname
查看>>
[转]浅论Maven和Git的原理及展示其与Eclipse的集成
查看>>
盒子模型
查看>>
for in遍历对象属性注意事项
查看>>
Module not found: Error: Can't resolve 'XXX' in 'XXXX'
查看>>
Mac Mysql 修改初始化密码
查看>>