記錄一下搭建MySQL Proxy的過程:
配置:
共3台Ubuntu伺服器分別為:
MySQL Proxy: 192.168.1.101 (ununtua)
MySQL 1: 192.168.1.104 (ubuntub)
MySQL 2: 192.168.1.103 (ubuntuc)
在ubuntu-a:上安裝MySQL Proxy:
參考官方文檔:http://dev.mysql.com/doc/refman/5.1/en/mysql-proxy-install-binary.html
安裝lua
ununtua@ununtua:~$ sudo apt-get install lua5.1
安裝MySQL Proxy
ununtua@ununtua:/usr/local$ sudo tar zxf mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit.tar.gz
ununtua@ununtua:/usr/local/mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit$ PATH=$PATH:/usr/local/mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit/bin/
在ubuntu-b 和 ubuntu-c上
安裝MySQL配置為可以遠端存取.
分別建立資料庫 database 'rep'
分別建立表:
mysql> desc user;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(30) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
在ubuntu-b:
mysql> insert into user(name) values('B');
在ubuntu-c:
mysql> insert into user(name) values('C');
回到ubuntu-a,啟動mysql-proxy:
ununtua@ununtua:~$ mysql-proxy --proxy-read-only-backend-addresses=192.168.1.104:3306 --proxy-backend-addresses=192.168.1.102:3306 --admin-lua-script=/usr/local/mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit/share/doc/mysql-proxy/rw-splitting.lua --admin-username=root --admin-password=''
在另外一台電腦上串連MySQL Proxy:
操作方式和操作普通的資料庫一樣,只是連接埠號碼不同
localhost:~ admin$ mysql -uroot -p -h 192.168.1.101 -P 4040
mysql> use rep;
Database changed
mysql> select * from user;
多開幾個串連,多進行一些添加和查詢操作,看操作是否被分配到了不同的資料庫上。有的文章說,需要串連足夠多的時候才會真正的做負載平衡,不知道是什麼規則。我在本地操作的過程中,資料庫的操作結果都被實際上是通過proxy-backend-addresses來做的, --proxy-read-only-backend-addresses是被忽略了?為什嗎? 還需要繼續研究一下。
參考文章:
http://blog.csdn.net/yueliangdao0608/article/details/2398655
http://forums.mysql.com/read.php?146,192274,192274#msg-192274
http://jan.kneschke.de/2007/8/1/mysql-proxy-learns-r-w-splitting/