After using amoeba, Cobar, dbware, and other read/write splitting components, one of my friends told me today that Mysql itself can also be read/write splitting, because they provide a new driver calledCom. MySQL. JDBC. replicationdriver
Description: http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-replication-connection.html
CodeExample:
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(cmd.exe cuteupdate ("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(.exe cutequery ("select a, B from alt_table ");.......}}