天天看點

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]] »

這個功能有兩個配置屬性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);