最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

RHEL6.5下MySQL讀寫分離的實(shí)現(xiàn)

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 12:54:20
文檔

RHEL6.5下MySQL讀寫分離的實(shí)現(xiàn)

RHEL6.5下MySQL讀寫分離的實(shí)現(xiàn):使用4臺(tái)RHEL6.5虛擬機(jī),如圖下所示。其中192.168.4.10、192.168.4.20分別作為MySQL主、從服務(wù)器,是整個(gè)服務(wù)的后端;另一臺(tái)192.1 一、要求 1、配置兩臺(tái)MySQL服務(wù)器和一臺(tái)代理服務(wù)器,實(shí)現(xiàn)MySQL代理的讀寫分離。 2、用戶只需要訪問MySQL代理服務(wù)器,
推薦度:
導(dǎo)讀RHEL6.5下MySQL讀寫分離的實(shí)現(xiàn):使用4臺(tái)RHEL6.5虛擬機(jī),如圖下所示。其中192.168.4.10、192.168.4.20分別作為MySQL主、從服務(wù)器,是整個(gè)服務(wù)的后端;另一臺(tái)192.1 一、要求 1、配置兩臺(tái)MySQL服務(wù)器和一臺(tái)代理服務(wù)器,實(shí)現(xiàn)MySQL代理的讀寫分離。 2、用戶只需要訪問MySQL代理服務(wù)器,

使用4臺(tái)RHEL6.5虛擬機(jī),如圖下所示。其中192.168.4.10、192.168.4.20分別作為MySQL主、從服務(wù)器,是整個(gè)服務(wù)的后端;另一臺(tái)192.1

一、要求

1、配置兩臺(tái)MySQL服務(wù)器和一臺(tái)代理服務(wù)器,實(shí)現(xiàn)MySQL代理的讀寫分離。

2、用戶只需要訪問MySQL代理服務(wù)器,實(shí)際的SQL查詢、寫入操作交給后臺(tái)的2臺(tái)MySQL服務(wù)器來完成。

3、其中Master服務(wù)器允許SQL查詢、寫入,Slave服務(wù)器只允許SQL查詢。

二、方案

使用4臺(tái)RHEL6.5虛擬機(jī),如圖下所示。其中192.168.4.10、192.168.4.20分別作為MySQL主、從服務(wù)器,是整個(gè)服務(wù)的后端;另一臺(tái)192.168.4.30作為MySQL代理服務(wù)器,是直接面向客戶的服務(wù)前端;客戶機(jī)192.168.4.100用作訪問測試。

RHEL6.5下MySQL讀寫分離的實(shí)現(xiàn)

對(duì)比兩種方式的讀寫分離效果——

  • MySQL主從復(fù)制:客戶機(jī)訪問Master服務(wù)器來寫數(shù)據(jù)庫,客戶機(jī)訪問Slave服務(wù) 器來讀數(shù)據(jù)庫。這種情況下,需要客戶端自行區(qū)分向何處寫、從何處讀。
  • MySQL主從復(fù)制+代理:客戶機(jī)訪問Proxy服務(wù)器,讀、寫請(qǐng)求交給Proxy識(shí)別,如果是寫數(shù)據(jù)庫操作則交給Master,如果是讀數(shù)據(jù)庫操作則交給Slave處理,具體由分配策略控制。這種情況下,無需客戶端區(qū)分讀、寫目標(biāo),而是由Proxy服務(wù)器代勞了,從而降低了客戶端程序的復(fù)雜度。
  • 以下是在mysql主從復(fù)制的基礎(chǔ)上實(shí)現(xiàn)的,mysql主從復(fù)制部分請(qǐng)參見另一篇文章《MySQL主從復(fù)制》

    三、實(shí)現(xiàn)

    1、部署mysql-proxy代理服務(wù)器

    1)安裝MySQL官方提供的mysql-proxy軟件包

    MySQL官方提供了mysql-proxy的免安裝版本,解壓后即可使用。由于msyql-proxy使用了LUA腳本語言,因此需要提前安裝好lua軟件包(RHEL6鏡像內(nèi)已含)以確保其正常使用:

    [root@proxy ~]# yum -y install lua

    然后部署mysql-proxy軟件包:

    [root@proxy 桌面]# tar zxf mysql-proxy-0.8.3-linux-rhel5-x86-64bit.tar.gz -C /usr/local/

    [root@proxy 桌面]# cd /usr/local/

    [root@proxy local]# mv mysql-proxy-0.8.3-linux-rhel5-x86-64bit/ mysql-proxy //將文件改短一點(diǎn),方便訪問

    切換到部署后的目錄,確認(rèn)相關(guān)目錄、可執(zhí)行程序、腳本。一般情況下,使用bin目錄下的mysql-proxy腳本來啟動(dòng)代理服務(wù):

    [root@proxy local]# cd mysql-proxy/

    [root@proxy mysql-proxy]# ls

    bin include lib libexec licenses share

    [root@proxy mysql-proxy]# ls bin/ libexec/

    bin/: //服務(wù)腳本目錄

    mysql-binlog-dump mysql-myisam-dump mysql-proxy

    libexec/: //可執(zhí)行程序目錄

    mysql-binlog-dump mysql-myisam-dump mysql-proxy

    2)準(zhǔn)備讀寫分離的LUA策略腳本

    直接復(fù)制mysql-proxy提供的樣例策略即可:

    [root@proxy mysql-proxy]# cp share/doc/mysql-proxy/rw-splitting.lua ./

    3)啟動(dòng)mysql-proxy代理服務(wù)

    主要命令選項(xiàng):

    -P(大寫):指定代理監(jiān)聽的IP地址、端口

    -r:指定讀服務(wù)器的IP地址、端口

    -b:指定寫服務(wù)器的IP地址、端口

    -s:指定lua腳本文件

    --keepalive:如果服務(wù)進(jìn)程崩潰,嘗試重啟此進(jìn)程

    [root@proxy mysql-proxy]# pwd

    /usr/local/mysql-proxy

    [root@proxy mysql-proxy]# bin/mysql-proxy -P 192.168.4.30:3306 \

    > -b 192.168.4.10:3306 \

    > -r 192.168.4.20:3306 \

    > -s rw-splitting.lua &

    [root@proxy mysql-proxy]# netstat -anpt | grep mysql //確認(rèn)監(jiān)聽狀態(tài)

    tcp 0 0 192.168.4.30:3306 0.0.0.0:* LISTEN 16119/mysql-proxy

    對(duì)于客戶端來說,這臺(tái)代理主機(jī)192.168.4.30就相當(dāng)于一臺(tái)可讀可寫的MySQL數(shù)據(jù)庫服務(wù)器了。

    為了每次開機(jī)啟動(dòng)mysql-proxy代理服務(wù)可以將上面的命令寫到/etc/rc.local配置文件內(nèi):

    [root@proxy ~]# vim /etc/rc.local

    .. ..

    /usr/local/mysql-proxy/bin/mysql-proxy -P 192.168.4.30:3306 \

    -b 192.168.4.10:3306 \

    -r 192.168.4.20:3306 \

    -s rw-splitting.lua &

    2、測試通過mysql-proxy的讀寫分離

    1)在Master服務(wù)器上授權(quán)用戶,允許其從192.168.4.0/24的客戶機(jī)遠(yuǎn)程訪問。

    mysql> GRANT all ON *.* TO user02@'192.168.4.%' IDENTIFIED BY 'pwd123';

    Query OK, 0 rows affected (0.07 sec)

    因?yàn)榇饲耙雅渲胢ysql庫的主從同步,SLAVE上的用戶授權(quán)會(huì)自動(dòng)更新

    2)從客戶機(jī)上192.168.4.100訪問Mysql數(shù)據(jù)庫

    [root@client ~]# mysql -h192.168.4.30 -uuser02 -ppwd123

    ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.4.30' (113)

    出現(xiàn)上面這種情況,可以關(guān)閉代理的防火墻,或者添加一條允許訪問3306端口的防火墻規(guī)則

    [root@proxy ~]# iptables -I INPUT -s 192.168.4.0/24 -p tcp --dport 3306 -j ACCEPT

    再次登錄:

    [root@client ~]# mysql -h192.168.4.30 -uuser02 -ppwd123

    ... ...

    mysql> //表示登錄成功

    mysql> CREATE DATABASE student; //新建庫

    Query OK, 1 row affected (0.10 sec)

    mysql> USE student;//切換到新建的庫

    Database changed

    mysql> CREATE TABLE info( id int(4),name varchar(48)); //新建表

    Query OK, 0 rows affected (1.23 sec)

    mysql> INSERT INTO info VALUES(1,"hanmeimei"),(2,"lilei"); //插入2條表記錄

    Query OK, 2 rows affected (0.18 sec)

    Records: 2 Duplicates: 0 Warnings: 0

    mysql> SELECT * FROM info;

    +------+-----------+

    | id | name |

    +------+-----------+

    | 1 | hanmeimei |

    | 2 | lilei |

    +------+-----------+

    2 rows in set (0.01 sec)

    mysql> quit

    Bye

    3)在master和slave上確認(rèn)客戶端新建的表

    [root@client ~]# mysql -h192.168.4.10 -uuser02 -ppwd123

    mysql> USE student;

    mysql> SHOW TABLES;

    +-------------------+

    | Tables_in_student |

    +-------------------+

    | info |

    +-------------------+

    1 row in set (0.00 sec)

    mysql> SELECT * FROM info;

    +------+-----------+

    | id | name |

    +------+-----------+

    | 1 | hanmeimei |

    | 2 | lilei |

    +------+-----------+

    2 rows in set (0.00 sec)

    [root@client ~]# mysql -h192.168.4.20 -uuser02 -ppwd123

    mysql> SELECT * FROM student.info;

    +------+-----------+

    | id | name |

    +------+-----------+

    | 1 | hanmeimei |

    | 2 | lilei |

    +------+-----------+

    2 rows in set (0.00 sec)

    4)觀察MySQL代理訪問的網(wǎng)絡(luò)連接

    在Proxy代理商可看到與MySQL讀、寫服務(wù)器的網(wǎng)絡(luò)連接:

    [root@proxy mysql-proxy]# netstat -anpt | grep mysql

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    RHEL6.5下MySQL讀寫分離的實(shí)現(xiàn)

    RHEL6.5下MySQL讀寫分離的實(shí)現(xiàn):使用4臺(tái)RHEL6.5虛擬機(jī),如圖下所示。其中192.168.4.10、192.168.4.20分別作為MySQL主、從服務(wù)器,是整個(gè)服務(wù)的后端;另一臺(tái)192.1 一、要求 1、配置兩臺(tái)MySQL服務(wù)器和一臺(tái)代理服務(wù)器,實(shí)現(xiàn)MySQL代理的讀寫分離。 2、用戶只需要訪問MySQL代理服務(wù)器,
    推薦度:
    標(biāo)簽: 6.5 56 mysql
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top