阅读738 返回首页    go 搜狐


RDS MySQL 实现读写分离__MYSQL使用_技术运维问题_云数据库 RDS 版-阿里云

 

基础配置流程与要求:

1. 主实例必须为 RDS MySQL 5.6 版本。

2. 在主实例的【实例基本信息】页面购买只读实例。

rd_01.png

3. 在应用侧配置判断和分配读写请求。

下面是基于MySQL Connector/J 中 com.mysql.jdbc.ReplicationDriver 驱动的应用侧配置读写分离样例:

具体请参考:https://dev.mysql.com/doc/connector-j/en/connector-j-master-slave-replication-connection.html 

注:其他应用侧实现读写分离的方式和配置(比如通过MySQL Proxy、Amoeba、Cobar或DBWare)请参考对应实现的技术文档。

 

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

     .......
  }
}

 

 

如问题还未解决,请联系售后技术支持

 

最后更新:2016-07-12 15:28:46

  上一篇:go 云服务器如何通过内网访问RDS?__MYSQL使用_技术运维问题_云数据库 RDS 版-阿里云
  下一篇:go RDS MySQL权限问题(错误代码:1227,1725)__MYSQL使用_技术运维问题_云数据库 RDS 版-阿里云