• 1
  • 2
  • 3
  • 4
  • 5
mysql数据库问题 首 页  »  帮助中心  »  数据库  »  mysql数据库问题
关于RDS MySQL 的读写分离操作
发布日期:2015-11-6 11:11:1

  关于RDS MySQL 的读写分离操作

  关于基础配置流程与要求如下:

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

         2. 在主实例的【实例基本信息】页面购买只读实例。实例关系图如下:

  

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