linux mysql proxy 的安裝,配置,以及讀寫分離

linux mysql proxy 的安裝,配置,以及讀寫分離

張映 發表於 2010-03-03php

分類目錄: mysqlmysql

一,mysql proxy是什麼,幹什麼用的linux

MySQL Proxy就是這麼一箇中間層代理,簡單的說,MySQL Proxy就是一個鏈接池,負責將前臺應用的鏈接請求轉發給後臺的數據庫,而且經過使用lua腳本,能夠實現複雜的鏈接控制和過濾,從而實現讀寫分離和負 載平衡。對於應用來講,MySQL Proxy是徹底透明的,應用則只須要鏈接到MySQL Proxy的監聽端口便可。固然,這樣proxy機器可能成爲單點失效,但徹底可使用多個proxy機器作爲冗餘,在應用服務器的鏈接池配置中配置到多 個proxy的鏈接參數便可。程序員

mysql replication 數據同步

mysql replication 數據同步web

上圖中,web到底鏈接那個數據庫,這個要程序員本身寫的代友來決定的,如今是二臺mysql服務器,若是有多臺或者是N臺呢,靠用php代碼來管理鏈接數據庫,就很鬱悶了。sql

mysql proxy 圖示

mysql proxy 圖示數據庫

mysql proxy就很好解決了這個問題,對於程序端而言,web端的請求,只要到mysql proxy的鏈接池就OK了,剩下的工做就交給mysql proxy了。對於程序代碼管理來講就簡單多了。我的以爲這一點最值得借用的了。centos

二,mysql proxy的安裝服務器

我在安裝mysql proxy的時候,提示要安裝lua,其餘的沒有什麼提示,不過我在網上看到好多要裝這個,那個。eclipse

那些東西,我都已經裝過了,裝系統的時候,就自帶的裝了。

a,安裝pkg-config

Ubuntu安裝: apt-get install pkg-config

centos安裝:yum install pkg-config

archlinux安裝:pacman -S pkg-config

若是你要手動裝,本身下

b,安裝libevent

c,安裝glib

d,安裝lua

怎麼安裝同a

e,安裝mysql在這兒很少說了,一搜網上都是

f,二進制包mysql proxy

wget http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/mysql-proxy-0.6.0-linux-rhas4-x86.tar.gz

#解壓到mysql下面,由於這個東西能夠當作是mysql的一個插件了。

tar zxvf mysql-proxy-0.6.0-linux-rhas4-x86.tar.gz -C /usr/local/mysql

mv /usr/local/mysql/mysql-proxy-0.6.0-linux-rhas4-x86  /usr/local/mysql/mysql_proxy

cd /usr/local/mysql/mysql_proxy/sbin/

echo $PATH
/usr/local/mmseg/bin:/usr/local/mmseg/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/share/eclipse:/usr/bin/perlbin/site:/usr/bin/perlbin/vendor:/usr/bin/perlbin/core

cp mysql-proxy /usr/sbin               #加到環境變成裏面去

查看一下是否安裝成功

[root@BlackGhost sbin]#  mysql-proxy --help
Usage:
mysql-proxy [OPTION...] - MySQL Proxy

Help Options:
-?, --help                                          Show help options
--help-all                                          Show all help options
--help-admin                                        Show options for the admin-module
--help-proxy                                        Show options for the proxy-module

Application Options:
-V, --version                                       Show version
--daemon                                            Start in daemon-mode
--pid-file=<file>                                   PID file in case we are started as daemon

三,啓動mysql proxy

#注意:LUA_PATH="/usr/local/mysql/mysql-proxy/share/mysql-proxy/*.lua"

啓動前,增長一下LUA的環境變量,否則用mysql proxy啓動mysql時,會報找不到lua,會報如下錯誤

[root@BlackGhost share]# mysql -u root -h 127.0.0.1 -P 8888
(lua-error) [/usr/local/mysql/mysql_proxy/share/mysql-proxy/rw-splitting.lua]
...mysql/mysql_proxy/share/mysql-proxy/rw-splitting.lua:29: module 'proxy.commands' not found:
no field package.preload['proxy.commands']
no file './proxy/commands.lua'
no file '/data1/mysqldev/mysql-proxy/inst/lua/share/lua/5.1/proxy/commands.lua'
no file '/data1/mysqldev/mysql-proxy/inst/lua/share/lua/5.1/proxy/commands/init.lua'
no file '/data1/mysqldev/mysql-proxy/inst/lua/lib/lua/5.1/proxy/commands.lua'

mysql-proxy --proxy-address=127.0.0.1:8888 --proxy-read-only-backend-addresses=192.168.1.75:3306 --proxy-backend-addresses=192.168.1.91:3306 --proxy-lua-script=/usr/local/mysql/mysql_proxy/share/mysql-proxy/rw-splitting.lua &

[root@BlackGhost sbin]# ps -e|grep mysql-proxy

15804 pts/1    00:00:00 mysql-proxy

四,測試mysql proxy

1,在192.168.1.75的test數據庫中,建一個test表,結構同樣

2,在192.168.1.91的test數據庫中,建一個test表,結構同樣

mysql -u root -h 127.0.0.1 -P 8888            #利用鏈接池,進入數據庫

use test

INSERT INTO `test` ( `name`, `sex`) VALUES ('tank', 1)

你會發現這條數據會出如今192.168.1.91的mysql的數據庫中。

相關文章
相關標籤/搜索