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]] »
這個功能有兩個配置屬性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]] »
同時還支援主從讀寫分離:
使用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);