1. 程式人生 > >mysql proxy搭建讀寫分離

mysql proxy搭建讀寫分離

rhel 6.10
主伺服器 :  192.168.2.121   rac01
從伺服器 :  192.168.2.122   rac02
排程伺服器: 192.168.2.123   rac03

--建立目錄,建立使用者

mkdir -p /mysql 
groupadd mysql
useradd mysql -g mysql 

-- 安裝mysql

./mysql_install_db --basedir=/mysql/mysql3306 --datadir=/mysql/mysql3306/data --user=mysql 
./mysql_install_db --basedir=/mysql/mysql3307 --datadir=/mysql/mysql3307/data --user=mysql 

-- 啟動mysql

./mysqld_safe  --defaults-file=/mysql/mysql3306/my.cnf --user=mysql &  
./mysqld_safe  --defaults-file=/mysql/mysql3307/my.cnf --user=mysql & 

-- 連線mysql

./mysql --socket=/mysql/mysql3306/mysql.sock
./mysql --socket=/mysql/mysql3307/mysql.sock

-- 關閉mysql

./mysqladmin -uroot -p --socket=/mysql/mysql3306/mysql.sock shutdown
./mysqladmin -uroot -p --socket=/mysql/mysql3307/mysql.sock shutdown

--配置主從

vi Master  my.cnf
server-id=1
log-bin=mysql3306-bin
binlog-ignore-db = mysql,information_schema

vi slave my.cnf
server-id=2

-- 主伺服器上建立複製帳號,並授權

GRANT REPLICATION SLAVE ON *.* to 'rep1'@'%' identified by 'mysql';

show master status;
mysql> show master status;
+----------------------+----------+--------------+--------------------------+-------------------+
| File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB         | Executed_Gtid_Set |
+----------------------+----------+--------------+--------------------------+-------------------+
| mysql3306-bin.000001 |      318 |              | mysql,information_schema |                   |
+----------------------+----------+--------------+--------------------------+-------------------+
1 row in set (0.00 sec)

mysql> 

-- 配置從庫

change master to 
master_host='192.168.2.121',
master_user='rep1',
master_password='mysql',
master_log_file='mysql3306-bin.000001',
master_log_pos=318

start slave  

-- 配置mysql proxy

cd mysql-proxy
mkdir lua 
mkdir logs 
cp /mysql/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua ./lua  
cp /mysql/mysql-proxy/share/doc/mysql-proxy/admin-sql.lua ./lua  

vi /mysql/mysql-proxy/mysql-proxy.cnf 
[mysql-proxy]
user=root  
admin-username=proxy  
admin-password=mysql
proxy-address=192.168.2.123
proxy-read-only-backend-addresses=192.168.2.122
proxy-backend-addresses=192.168.2.121
proxy-lua-script=/mysql/mysql-proxy/lua/rw-splitting.lua  
admin-lua-script=/mysql/mysql-proxy/lua/admin-sql.lua  
log-file=/mysql/mysql-proxy/logs/mysql-proxy.log 
log-level=info 
daemon=true    
keepalive=true

-- 修改讀寫分離指令碼

vi /mysql/mysql-proxy/lua/rw-splitting.lua

if not proxy.global.config.rwsplit then
 proxy.global.config.rwsplit = {
  min_idle_connections = 1, 
  max_idle_connections = 1, 
  is_debug = false
 }
end

-- 啟動mysql proxy

./mysql/mysql-proxy/bin/mysql-proxy --defaults-file=mysql-proxy.cnf

(critical) mysql-proxy-cli.c:326: loading config from 'mysql-proxy.cnf' failed
由於安全要求,必須將配置檔案許可權設為660(建立人可讀寫,同組人可讀),否則不允許啟動。

chmod 660 /mysql/mysql-proxy/mysql-proxy.cnf
netstat -tupln | grep 4040
[[email protected] ~]$ netstat -tupln | grep 4000
(No info could be read for "-p": geteuid()=500 but you should be root.)
tcp        0      0 192.168.2.123:4000          0.0.0.0:*                   LISTEN      -                   
[[email protected] ~]$ 

搭建完畢。待測試讀寫分離。

end