日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

1、簡介

  當今MySQL使用相當廣泛,隨著用戶的增多以及數據量的增大,高并發隨之而來。然而我們有很多辦法可以緩解數據庫的壓力。分布式數據庫、負載均衡、讀寫分離、增加緩存服務器等等。這里我們將采用讀寫分離技術進展緩解數據庫的壓力。

  其中實現讀寫分離的技術有很多方法,這里我們將采用mysql-proxy這個中間軟件來實現。這個軟件中含有一個讀寫分離的lua文件,這也是我們使用mysql-proxy實現讀寫分離必用的文件,它需要lua解析器進行解析。因此我們還需要安裝一個lua解析器

2、基本環境

  三臺linux虛擬主機

  Linux版本centos6.6、MySQL 5.5

  mysql-proxy-0.8.5

  lua-5.1.4

  ip:192.168.95.11(寫)、192.168.95.12(讀)、192.168.95.13(mysql-proxy)

3、配置主從復制

mysql主從復制與主主復制

粗略介紹一下數據庫的主從復制的配置:

第一步:

在192.168.95.11中創建一個192.168.95.12主機中可以登錄的MySQL用戶

用戶:mysql12

密碼:mysql12

mysql>GRANT REPLICATION SLAVE ON *.* TO ‘mysql12’@’192.168.95.12’ IDENTIFIED BY ‘mysql12’;

mysql>FLUSH PRIVILEGES;

第二步:

查看192.168.95.11MySQL服務器二進制文件名與位置

mysql>SHOW MASTER STATUS;
阿里大神都在用的MySQL讀寫分離

 

第三步:

告知二進制文件名與位置
在192.168.95.12中執行:

mysql> change master to
    -> master_host='192.168.95.11',
    -> master_user='mysql12',
    ->  master_password='mysql12',
    ->  master_log_file='mysql-bin.000124',
    -> master_log_pos=586;

第四步:

在192.168.95.12中

mysql>SLAVE START; #開啟復制

mysql>SHOW SLAVE STATUSG #查看主從復制是否配置成功

阿里大神都在用的MySQL讀寫分離

 

主從復制配置成功!

(注意:上面Relicate_Do_DB:aa表示主從復制只針對數據庫aa【這是我之前設置的就沒改了】,這里就不講這個了,要想去了解學醫這個的話可以參考文章http://www.cnblogs.com/phpstudy2015-6/p/6485819.html#_label7)

4、MySQL讀寫分離配置

百度云下載:鏈接:https://pan.baidu.com/s/1FBW-76Ew-fOfNb0fW878ZQ 密碼:?

4.1、安裝lua

  官網下載:http://www.lua.org/download.html

  Lua 是一個小巧的腳本語言。Lua由標準C編寫而成,代碼簡潔優美,幾乎在所有操作系統和平臺上都可以編譯,運行。

  一個完整的Lua解釋器不過200k,在目前所有腳本引擎中,Lua的速度是最快的。這一切都決定了Lua是作為嵌入式腳本的最佳選擇。

  1)、安裝lua需要依賴很多軟件包。

  可以通過rpm -qa | grep name檢查以下軟件是否安裝:

  gcc*、gcc-c++*、autoconf*、automake*、zlib*、libxml*、ncurses-devel*、libmcrypt*、libtool*、flex*、pkgconfig*、libevent*、glib*

  若缺少相關的軟件包,可通過yum -y install方式在線安裝,或直接從系統安裝光盤中找到并通過rpm -ivh方式安裝。(我的話一般是直接在系統光盤軟件庫中找到直接rpm安裝的,有些找不到,則先在網上下載然后在ftp傳給linux再進行安裝)

  2)、依賴軟件安裝完畢后則進行編譯安裝lua

  MySQL-Proxy的讀寫分離主要是通過rw-splitting.lua腳本實現的,因此需要安裝lua。

  官網下載:http://www.lua.org/download.html(下載源碼包)

# wget http://www.lua.org/ftp/lua-5.1.4.tar.gz  
# tar zxvf lua-5.1.4.tar.gz 
# cd lua-5.1.4  
# make linux
# make install
# export LUA_CFLAGS="-I/usr/local/include" LUA_LIBS="-L/usr/local/lib -llua -ldl" LDFLAGS="-lm" 
(我安裝的時候是直接在光盤軟件庫中找到,直接rpm安裝)

4.2、安裝mysql-proxy

  1)、首先查看linux版本確認是32位還是64為系統

  查看linux內核版本

  # cat /etc/issue

  查看linux版本

  # cat /proc/version

  2)、按系統位數下載(上面百度云鏈接64位的文件)

  3)、安裝

# tar –zxvf mysql-proxy-0.8.5- linux-rhel5-x86-64bit.tar.gz
# mkdir /usr/local/mysql-proxy
# cp ./ mysql-proxy-0.8.5-linux-rhel5-x86-64bit/* /usr/local/mysql-proxy
# cd /usr/local/mysql-proxy
阿里大神都在用的MySQL讀寫分離

 

安裝成功

5、MySQL讀寫分離測試

1)、修改rw-splitting.lua文件

  修改默認連接,進行快速測試,不修改的話要達到連接數為4時才啟用讀寫分離

  #cp /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua ./

阿里大神都在用的MySQL讀寫分離

 

  # vi rw-splitting.lua

阿里大神都在用的MySQL讀寫分離

 

2)、修改完成后,啟動mysql-proxy

# cd /usr/local/mysql/bin
# ./mysql-proxy --proxy-read-only-backend-addresses=192.168.95.12:3306 --proxy-backend-addresses=192.168.95.11:3306 --proxy-lua-script=/usr/local/mysql-proxy/rw-splitting.lua &

參數:

  --proxy-read-only-backend-addresses  #只讀服務器地址(ip)

  --proxy-backend-addresses       #服務器地址(主服務器)

  --proxy-lua-script            #lua腳本路勁

  &                     #表示后臺執行

阿里大神都在用的MySQL讀寫分離

 

3)、創建用于讀寫分離的數據庫連接用戶

  用戶名:proxy1

  密 碼:321

mysql>grant all on *.* to 'proxy1'@'192.168.95.13' identified by '321';
mysql>use aa;
mysql>create table tab1(id int auto_increment,name varchar(32) not null,primary key(id));

【因為已經開啟了主從復制所以,11、12主機mysql中都創建了這個用戶】

4)、測試登陸賬號[email protected]進行添加數據

  可以使用任意ip客戶端登陸這個賬號

  在192.168.95.13登陸:

  # ./mysql -u proxy1 -P4040 -h192.168.95.13 –p

阿里大神都在用的MySQL讀寫分離

 

在兩個mysql中查看結果:一致

阿里大神都在用的MySQL讀寫分離

 

結果表明:賬號使用

(ps:id是自增長,之前高主主復制的時候更改了配置文件,還沒更改回來,就將就用著先吧)

5)、關閉12mysql的從復制

  mysql> stop slave;

阿里大神都在用的MySQL讀寫分離

 

6)、證明寫分離

  使用[email protected]賬號打開多個客戶端進行插入數據

  打開三個mysql客戶端分別插入2條數據:

mysql> insert into tab1 (name) values('stop_slave11111');

….

mysql> insert into tab1 (name) values('stop_slave6666’);

  查看:

  分別登陸11mysql與12mysql查看aa.tab1中的數據

  主數據庫:

阿里大神都在用的MySQL讀寫分離

 

從數據庫:

阿里大神都在用的MySQL讀寫分離

 

結果中顯示插入的數據存在與主數據庫,而從數據庫沒有,所以證明寫能夠分離。

7)、證明讀分離

  使用[email protected]賬號登陸mysql,查看aa.tab1中的數據

mysql>use aa;
mysql>select*from tab1;
阿里大神都在用的MySQL讀寫分離

 

結果中顯示只有從數據庫的數據,結合上面的測試,可以證明讀分離。

6、建議

為了方便啟動與管理mysql-proxy可以創建mysql-proxy服務管理腳本

下面這個管理腳本僅適合以上我給出的安裝路徑位置

【此管理腳本需要按照自己的安裝路徑做出相應的修改方可使用】

 1 #!/bin/sh
 2 
 3 #
 4 # mysql-proxy This script starts and stops the mysql-proxy daemon
 5 #
 6 # chkconfig: - 78 30
 7 # processname: mysql-proxy
 8 # description: mysql-proxy is a proxy daemon to mysql
 9 
10 # Source function library.
11 . /etc/rc.d/init.d/functions
12 
13 #PROXY_PATH=/usr/local/bin
14 PROXY_PATH=/usr/local/mysql-proxy/bin
15 
16 prog="mysql-proxy"
17 
18 # Source networking configuration.
19 . /etc/sysconfig/network
20 
21 # Check that networking is up.
22 [ ${NETWORKING} = "no" ] && exit 0
23 
24 # Set default mysql-proxy configuration.
25 #PROXY_OPTIONS="--daemon"
26 
27 PROXY_OPTIONS="--proxy-read-only-backend-addresses=192.168.95.12:3306 --proxy-backend-addresses=192.168.95.11:3306 --proxy-lua-script=/usr/local/mysql-proxy/rw-splitting.lua"
28 
29 PROXY_PID=/usr/local/mysql-proxy/run/mysql-proxy.pid
30 
31 # Source mysql-proxy configuration.
32 if [ -f /etc/sysconfig/mysql-proxy ]; then
33         . /etc/sysconfig/mysql-proxy
34 fi
35 
36 PATH=$PATH:/usr/bin:/usr/local/bin:$PROXY_PATH
37 # By default it's all good
38 RETVAL=0
39 
40 # See how we were called.
41 case "$1" in
42   start)
43         # Start daemon.
44         echo -n $"Starting $prog: "
45         $NICELEVEL $PROXY_PATH/mysql-proxy $PROXY_OPTIONS --daemon --pid-file=$PROXY_PID --user=root --log-level=debug --log-file=/usr/local/mysql-proxy/log/mysql-proxy.log
46         RETVAL=$?
47         echo
48         if [ $RETVAL = 0 ]; then
49                 touch /var/lock/subsys/mysql-proxy]
50                 echo "ok"
51         fi
52        ;;
53   stop)
54         # Stop daemons.
55         echo -n $"Stopping $prog: "
56         killproc $prog
57         RETVAL=$?
58         echo
59         if [ $RETVAL = 0 ]; then
60                 rm -f /var/lock/subsys/mysql-proxy
61                 rm -f $PROXY_PID
62         fi
63        ;;
64   restart)
65         $0 stop
66         sleep 3
67         $0 start
68        ;;
69   condrestart)
70        [ -e /var/lock/subsys/mysql-proxy ] && $0 restart
71       ;;
72   status)
73         status mysql-proxy
74         RETVAL=$?
75        ;;
76   *)
77         echo "Usage: $0 {start|stop|restart|status|condrestart}"
78         RETVAL=1
79        ;;
80 esac
81 exit $RETVAL
#---我將mysql-proxy服務管理腳本放在了/usr/local/mysql-proxy/init.d/文件夾里
#---給執行權限,建立相應目錄
#chmod +x /usr/local/mysql-proxy/init.d/mysql-proxy
#mkdir /usr/local/mysql-proxy/run
#mkdir /usr/local/mysql-proxy/log

#cd /usr/local/mysql-proxy/init.d/
#---啟動mysql-proxy
#./mysql-proxy start
#---停止mysql-proxy
#./mysql-proxy stop
#---重啟mysql-proxy
#./mysql-proxy restart

一些相關參數:

PROXY_PATH=/usr/local/mysql-proxy/bin //定義mysql-proxy服務二進制文件路徑

--proxy-read-only-backend-addresses=192.168.95.12:3306 //定義后端只讀從服務器地址
--proxy-backend-addresses=192.168.95.11:3306 //定義后端主服務器地址
--proxy-lua-script=/usr/local/mysql-proxy/rw-splitting.lua //定義lua讀寫分離腳本路徑

PROXY_PID=/usr/local/mysql-proxy/run/mysql-proxy.pid //定義mysql-proxy PID文件路徑

--daemon //定義以守護進程模式啟動
--keepalive //使進程在異常關閉后能夠自動恢復【上面的管理腳本沒有加上此參數】
--user=root //以root用戶身份啟動服務
--log-level=debug //定義log日志級別,由高到低分別有(error|warning|info|message|debug)
--log-file=/usr/local/mysql-proxy/log/mysql-proxy.log //定義log日志文件路徑

(以上是自己的一些見解與總結,若有不足或者錯誤的地方請各位指出)

如果本文對你有幫助,別忘記給我個3連 ,點贊,轉發,評論,

咱們下期見。

分享到:
標簽:讀寫 分離
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定