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