Mysql Connector 5.1 好用的新特性
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);
最後更新:2017-05-19 10:25:09