oneproxy基於一主一從的MySQL 讀寫分離配置步驟
環境準備:
a. 搭建好MySQL 主從複製環境
b. 下載並安裝好oneproxy,並能正常啓動
oneproxy讀寫分離配置
1.MySQL Master上建立三個用戶
a)metadb用戶,創建oneproxy schema的庫和表。
create database oneproxy;
GRANT SELECT, INSERT, UPDATE, DELETE,CREATE ON oneproxy
.* TO ‘metadb’@’127.0.0.1’ IDENTIFIED BY ‘123456’;
b)repadmin 主從複製監控用戶
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO ‘repadmin’@’%’ IDENTIFIED BY ‘123456’;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON test
.* TO ‘repadmin’@’%’ ;
c)訪問mysql的業務用戶
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON test
.* TO ‘test’@’%’ IDENTIFIED BY ‘123456’;
2.用oneproxy帶的mysqlpwd對密碼進行加密
/oneproxy/bin/mysqlpwd 123456
9D7E55EAF8912CCBF32069443FAC452794F8941B
/oneproxy/bin/mysqlpwd 123
956C97523BADD23B6091B09E332A77B5CBDBBEEF
3.在/oneproxy/conf/proxy.conf中添加如下配置
metadb-username = metadb
metadb-password = 9D7E55EAF8912CCBF32069443FAC452794F8941B
metadb-address = 172.25.18.94:3316
proxy-user-list = oneuser/956C97523BADD23B6091B09E332A77B5CBDBBEEF@test
proxy-user-group = server1:test/9D7E55EAF8912CCBF32069443FAC452794F8941B@test
repadmin-username = repadmin
repadmin-password = 9D7E55EAF8912CCBF32069443FAC452794F8941B
proxy-master-addresses = 172.25.18.94:3316@server1
proxy-slave-addresses = 172.25.1814:3316@server1
proxy-secure-client = 172.25.18.94
proxy-group-security = server1:4
proxy-group-policy = server1:read_slave
proxy-group-slavedelay = server1:2
proxy-replication-check = 1
proxy-force-master = t2
4.重啓oneproxy
5.驗證讀寫分離
可根據返回的server_id判斷請求轉發到master還是slave上。
也可以打開general_log ,觀察sql執行情況。
正常情況begin;select @@server_id;commit; 轉發到mastr上;
select @@server_id ;轉發到slave上;
mysql -utest -p123 -h172.25.18 -P3307 -e “begin;select @@server_id;commit;”
mysql -utest -p123 -h172.25.18 -P3307 -e “select @@server_id;”