• MySQL读写分离又一好办法 使用 com.mysql.jdbc.ReplicationDriver


    在用过Amoeba 和 Cobar,还有dbware 等读写分离组件后,今天我的一个好朋友跟我讲,MySQL自身的也是可以读写分离的,因为他们提供了一个新的驱动,叫 com.mysql.jdbc.ReplicationDriver

    说明文档:http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-replication-connection.html

    代码例子:

    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();
    
        // We want this for failover on the slaves
        props.put("autoReconnect", "true");
    
        // We want to load balance between the slaves
        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:replication://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");
    
         .......
      }
    }
    

      

    作者:Taven.李锡远
    出处:http://taven.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载。但必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。博主QQ/微信: 17020415 (QQ和微信同号哦^_^)
  • 相关阅读:
    rapidjson 使用
    【设计模式】模板方法模式
    【设计模式】策略模式
    【设计模式】建造者模式
    【设计模式】享元模式
    /dev/sda1 contains a file system with errors,check forced.
    如何编写高效的Python的代码
    VsCode 调试 Python 代码
    Python 使用 pyinstaller 打包 代码
    初次使用git上传代码到github远程仓库
  • 原文地址:https://www.cnblogs.com/taven/p/3040489.html
Copyright © 2020-2023  润新知