首页 > 数据库 > mysql > 关于阿里云RDS MySQL 实现读写分离
2015
07-31

关于阿里云RDS MySQL 实现读写分离

最近有客户要迁移到云主机上去,本来在主机上是有做主从复制的,所以看了下RDS的说明

基础配置流程与要求:

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

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

关于阿里云RDS MySQL 实现读写分离 - 第1张  | 大话运维

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

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

具体请参考:http://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");

     .......
  }
}

 

RDS是否需要自己做分表、读写分离

RDS产品是主备架构,但是备库不支持读写请求,只作高可用存在,RDS目前已经推出只读实例,您可以到官网购买RDS只读实例做读写分离。

另外,我们后续也会提供分布式RDS,解决您水平拆分的问题,目前RDS需要您自己分表、分库(分平拆分、垂直拆分)。

最后编辑:
作者:saunix
大型互联网公司linux系统运维攻城狮,专门担当消防员

留下一个回复