zoukankan      html  css  js  c++  java
  • Mysql Connector 5.1 好用的新特性

    转载自并发编程网 – ifeve.com本文链接地址: Mysql Connector 5.1 好用的新特性

    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);

  • 相关阅读:
    11. Container With Most Water
    9. Palindrome Number
    375. 猜数字大小 II leetcode java
    leetcode 72 编辑距离 JAVA
    73. 矩阵置零 leetcode JAVA
    快速排序 JAVA实现
    63. 不同路径 II leetcode JAVA
    重写(override)与重载(overload)
    62 不同路径 leetcode JAVA
    leetcode 56 合并区间 JAVA
  • 原文地址:https://www.cnblogs.com/yinkh/p/6293558.html
Copyright © 2011-2022 走看看