我是靠谱客的博主 灵巧鞋垫,最近开发中收集的这篇文章主要介绍MySQL ReplicationConnection,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.简介

从JDBC驱动程序Connector/J 3.1.7 开始,我们提供了一个JDBC驱动’变体’。它能够通过Connection.getReadOnly()返回的状态,自动向可读写的Master数据提交查询语句,进行错误恢复及在Slaver数据库集间实现负载均衡。

应用程序通过调用Connection.setReadOnly(true)将事务设为只读,这将使事务被提交到那些通过轮转调度实现负载均衡的Slave服务器上(这将连接到一个Slave服务器上,除非Slave已在服务器集上被移除)。如果你要进行数据更新操作,或者你要进行一个时间敏感的读操作(在MySql上Master/Slave 间的数据同步是同步进行的),你可以通过调用Connection.setReadOnly(false)将与数据库的连接后的数据操作设为不是只读,则驱动程序将确保此连接的后续操作被发送到Master数据库上进行操作。驱动程序通过检查当前的autocommit(只动提交)标记,隔离级别,以及维护所有的数据库连接列表来实现负载均衡的功能。

在配置数据库连接池或为单独的程序创建JDBC驱动实例时,你必须使用" com.mysql.jdbc.ReplicationDriver " 类以便让驱动自动实现Master和Slave间的负载均衡。ReplicationDriver使用与标准的JDBC 驱动相同的URL格式连接数据库,目前ReplicationDriver不能和标准的java.sql.DriverManager一起工作,ReplicationDriver并不是使用java.sql.DriverManager连接数据库的,仅仅是使用它注册MySql JDBC 驱动程序而已。

2.实例

import java.sql.Connection;
import java.sql.ResultSet;
import java.util.Properties;

import com.mysql.jdbc.ReplicationDriver;

public class ReplicationDriverDemo {

  public static void main(String[] args) throws Exception {
    ReplicationDriver driver = new ReplicationDriver();

    Properties props = new Properties();

    // 对Slave进行故障恢复
    props.put("autoReconnect", "true");

    // 在Slave上进行负载均衡
    props.put("roundRobinLoadBalance", "true");

    props.put("user", "foo");
    props.put("password", "bar");

    //
    // Looks like a normal MySQL JDBC url, with a
    // comma-separated list of hosts, the first 
    // being the 'master', the rest being any number
    // of slaves that the driver will load balance against
    //

    Connection conn =
        driver.connect("jdbc:mysql://master,slave1,slave2,slave3/test",
            props);

    //
    // Perform read/write work on the master
    // by setting the read-only flag to "false"
    //

    conn.setReadOnly(false);
    conn.setAutoCommit(false);
    conn.createStatement().executeUpdate("UPDATE some_table ....");
    conn.commit();

    //
    // Now, do a query from a slave, the driver automatically picks one
    // from the list
    //

    conn.setReadOnly(true);

    ResultSet rs = 
      conn.createStatement().executeQuery("SELECT a,b FROM alt_table");

     .......
  }
}

3.参考资料

http://blog.csdn.net/ckcs49/article/details/2064248

最后

以上就是灵巧鞋垫为你收集整理的MySQL ReplicationConnection的全部内容,希望文章能够帮你解决MySQL ReplicationConnection所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部