成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Atlas+mysql主主集群實(shí)現(xiàn)讀寫分離-創(chuàng)新互聯(lián)

前言

在樟樹等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需定制設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,網(wǎng)絡(luò)營銷推廣,外貿(mào)營銷網(wǎng)站建設(shè),樟樹網(wǎng)站建設(shè)費(fèi)用合理。

  目前線上系統(tǒng)數(shù)據(jù)庫采用的是主主架構(gòu)。其中一臺(tái)主僅在故障時(shí)切換使用,(僅單臺(tái)服務(wù)器對(duì)外提供服務(wù),當(dāng)一臺(tái)出現(xiàn)問題,切換至另一臺(tái)),該結(jié)構(gòu)很難支撐較大并發(fā),另外雙主中的另外一臺(tái)機(jī)在非故障時(shí)沒得到有效利用。 結(jié)合以上情況,擬采用數(shù)據(jù)庫中間件提供讀寫分離功能(一主讀寫,一主讀)。既可以提高讀并發(fā)能力,又可以充分利用數(shù)據(jù)庫服務(wù)器,后期可繼續(xù)增加主主集群的從服務(wù)器擴(kuò)充讀并發(fā)性能。如下為具體架構(gòu)圖:

Atlas+mysql主主集群實(shí)現(xiàn)讀寫分離

Atlas官方鏈接: https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md

Atlas下載鏈接: https://github.com/Qihoo360/Atlas/releases

Atlas (普通) : Atlas-2.2.1.el6.x86_64.rpm

Atlas (分表) : Atlas-sharding_1.0.1-el6.x86_64.rpm

Ip及軟件信息

IP

系統(tǒng)

軟件版本

安裝路徑

備注

192.168.9.150

CentOS release 6.8 (Final)

Atlas-2.2.1.el6.x86_64.rpm

/usr/local/mysql-proxy

Atlas普通版 

192.168.9.175

CentOS release 6.8 (Final)

mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz

/usr/local/mysql

主主集群

192.168.9.176

CentOS release 6.8 (Final)

mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz

/usr/local/mysql

主主集群

MYSQL主主集群架設(shè)

基本原理:

  對(duì)于一個(gè)mysql服務(wù)器, 一般有兩個(gè)線程來負(fù)責(zé)復(fù)制和被復(fù)制。當(dāng)開啟復(fù)制之后。

1. Slave 上面的IO 線程連接上Master,并請(qǐng)求從指定日志文件的指定位置(或者從最開始的日志)之后的日志內(nèi)容;

2. Master 接收到來自Slave 的IO 線程的請(qǐng)求后,通過負(fù)責(zé)復(fù)制的IO 線程根據(jù)請(qǐng)求信息讀取指定日志指定位置之后的日志信息,返回給Slave 端的IO 線程。返回信息中除了日志所包含的信息之外,還包括本次返回的信息在Master 端的Binary Log文件的名稱以及在Binary Log 中的位置;

3. Slave 的IO 線程接收到信息后,將接收到的日志內(nèi)容依次寫入到Slave 端的Relay Log 文件(mysql-relay-bin.xxxxxx)的最末端,并將讀取到的Master 端的binlog的文件名和位置記錄到master-info 文件中,以便在下一次讀取的時(shí)候能夠清楚的高速M(fèi)aster“我需要從某個(gè)bin-log 的哪個(gè)位置開始往后的日志內(nèi)容,請(qǐng)發(fā)給我”。

4. Slave 的SQL 線程檢測(cè)到Relay Log 中新增加了內(nèi)容后,會(huì)馬上解析該Log 文件中的內(nèi)容成為在Master 端真實(shí)執(zhí)行時(shí)候的那些可執(zhí)行的Query 語句,并在自身執(zhí)行這些Query。這樣,實(shí)際上就是在Master 端和Slave 端執(zhí)行了同樣的Query,所以兩端的數(shù)據(jù)是完全一樣的。

 如圖:

Atlas+mysql主主集群實(shí)現(xiàn)讀寫分離

主主設(shè)置,既兩臺(tái)服務(wù)器互為主從的配置。

略(網(wǎng)上很多相關(guān)配置)

 ATLAS數(shù)據(jù)庫中間件安裝

下載并安裝ATLAS數(shù)據(jù)庫中間件

cd /usr/local/src   wget https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm   rpm –ivh Atlas-2.2.1.el6.x86_64.rpm

安裝好了,它會(huì)默認(rèn)在”/usr/local/mysql-proxy”下給你生成4個(gè)文件夾,以及需要配置的文件,如下:

[root@localhost mysql-proxy]# ls bin  conf  lib  log

1.bin目錄下放的都是可執(zhí)行文件

2.“encrypt”是用來生成MySQL密碼加密的,在配置的時(shí)候會(huì)用到

3.“mysql-proxy”是MySQL自己的讀寫分離代理

4.“mysql-proxyd”是360弄出來的,后面有個(gè)“d”,服務(wù)的啟動(dòng)、重啟、停止。都是用他來執(zhí)行的

編輯配置文件

cd /usr/local/mysql-proxy/conf/ vim test.cnf [mysql-proxy]   #帶#號(hào)的為非必需的配置項(xiàng)目   #管理接口的用戶名 admin-username = user   #管理接口的密碼 admin-password = pwd   #Atlas后端連接的MySQL主庫的IP和端口,可設(shè)置多項(xiàng),用逗號(hào)分隔。注意設(shè)置為主庫僅支持寫功能。若要讀寫要同時(shí)將該庫在從庫中進(jìn)行設(shè)置。支持讀功能。 proxy-backend-addresses = 192.168.9.175:3306   #Atlas后端連接的MySQL從庫的IP和端口,@后面的數(shù)字代表權(quán)重,用來作負(fù)載均衡,若省略則默認(rèn)為1,可設(shè)置多項(xiàng),用逗號(hào)分隔 。這里將主庫的數(shù)據(jù)庫再次配置到這里用以支持讀。達(dá)到讀負(fù)載均衡的目的。 proxy-read-only-backend-addresses = 192.168.9.176:3306@1,192.168.9.175:3306@1   #用戶名與其對(duì)應(yīng)的加密過的MySQL密碼,密碼使用PREFIX/bin目錄下的加密程序encrypt加密,下行的user1和user2為示例,將其替換為你的MySQL的用戶名和加密密碼! pwds = root:/iZxz+0GRoA=   #設(shè)置Atlas的運(yùn)行方式,設(shè)為true時(shí)為守護(hù)進(jìn)程方式,設(shè)為false時(shí)為前臺(tái)方式,一般開發(fā)調(diào)試時(shí)設(shè)為false,線上運(yùn)行時(shí)設(shè)為true,true后面不能有空格。 daemon = true   #設(shè)置Atlas的運(yùn)行方式,設(shè)為true時(shí)Atlas會(huì)啟動(dòng)兩個(gè)進(jìn)程,一個(gè)為monitor,一個(gè)為worker,monitor在worker意外退出后會(huì)自動(dòng)將其重啟,設(shè)為false時(shí)只有worker,沒有monitor,一般開發(fā)調(diào)試時(shí)設(shè)為false,線上運(yùn)行時(shí)設(shè)為true,true后面不能有空格。 keepalive = true   #工作線程數(shù),對(duì)Atlas的性能有很大影響,可根據(jù)情況適當(dāng)設(shè)置 event-threads = 8   #日志級(jí)別,分為message、warning、critical、error、debug五個(gè)級(jí)別 log-level = message   #日志存放的路徑 log-path = /usr/local/mysql-proxy/log   #SQL日志的開關(guān),可設(shè)置為OFF、ON、REALTIME,OFF代表不記錄SQL日志,ON代表記錄SQL日志,REALTIME代表記錄SQL日志且實(shí)時(shí)寫入磁盤,默認(rèn)為OFF #sql-log = OFF   #慢日志輸出設(shè)置。當(dāng)設(shè)置了該參數(shù)時(shí),則日志只輸出執(zhí)行時(shí)間超過sql-log-slow(單位:ms)的日志記錄。不設(shè)置該參數(shù)則輸出全部日志。 #sql-log-slow = 10   #實(shí)例名稱,用于同一臺(tái)機(jī)器上多個(gè)Atlas實(shí)例間的區(qū)分 #instance = test   #Atlas監(jiān)聽的工作接口IP和端口 proxy-address = 0.0.0.0:1234   #Atlas監(jiān)聽的管理接口IP和端口 admin-address = 0.0.0.0:2345   #分表設(shè)置,此例中person為庫名,mt為表名,id為分表字段,3為子表數(shù)量,可設(shè)置多項(xiàng),以逗號(hào)分隔,若不分表則不需要設(shè)置該項(xiàng) #tables = person.mt.id.3   #默認(rèn)字符集,設(shè)置該項(xiàng)后客戶端不再需要執(zhí)行SET NAMES語句 #charset = utf8   #允許連接Atlas的客戶端的IP,可以是精確IP,也可以是IP段,以逗號(hào)分隔,若不設(shè)置該項(xiàng)則允許所有IP連接,否則只允許列表中的IP連接 #client-ips = 127.0.0.1, 192.168.1   #Atlas前面掛接的LVS的物理網(wǎng)卡的IP(注意不是虛IP),若有LVS且設(shè)置了client-ips則此項(xiàng)必須設(shè)置,否則可以不設(shè)置 #lvs-ips = 192.168.1.1

編輯添加啟動(dòng)腳本

vim /etc/init.d/atlas #!/bin/sh # #atlas:    Atlas Daemon # # chkconfig:    - 90 25 # description:  Atlas Daemon # # Source function library. start() {         echo -n $"Starting atlas: "         /usr/local/mysql-proxy/bin/mysql-proxyd test start         echo  } stop() {         echo -n $"Shutting down atlas: "         /usr/local/mysql-proxy/bin/mysql-proxyd test stop         echo } ATLAS="/usr/local/mysql-proxy/bin/mysql-proxyd" [ -f $ATLAS ] || exit 1 # See how we were called. case "$1" in         start)                 start                 ;;         stop)                 stop                 ;;         restart)                 stop                 sleep 3                 start                 ;;         *)                 echo $"Usage: $0 {start|stop|restart}"                 exit 1 esac exit 0

賦予啟動(dòng)腳本權(quán)限并添加開機(jī)啟動(dòng)

chmod –R 755 /etc/init.d/atlas chkconfig atlas on                                  啟動(dòng)atlas service atlas start

端口介紹

默認(rèn)會(huì)開啟兩個(gè)端口1234和2345端口。(以上端口可以在配置文件中修改)

Atlas監(jiān)聽的工作接口IP和端口

proxy-address = 0.0.0.0:1234

Atlas監(jiān)聽的管理接口IP和端口

admin-address = 0.0.0.0:2345

訪問管理后臺(tái)并查看管理命令(注意用戶名密碼為缺省的,為了安全最好修改掉):

mysql -uuser -ppwd -P2345 -h 127.0.0.1 mysql> select * from help; +----------------------------+---------------------------------------------------------+ | command                    | description                                             | +----------------------------+---------------------------------------------------------+ | SELECT * FROM help         | shows this help                                         | | SELECT * FROM backends     | lists the backends and their state                      | | SET OFFLINE $backend_id    | offline backend server, $backend_id is backend_ndx's id | | SET ONLINE $backend_id     | online backend server, ...                              | | ADD MASTER $backend        | example: "add master 127.0.0.1:3306", ...               | | ADD SLAVE $backend         | example: "add slave 127.0.0.1:3306", ...                | | REMOVE BACKEND $backend_id | example: "remove backend 1", ...                        | | SELECT * FROM clients      | lists the clients                                       | | ADD CLIENT $client         | example: "add client 192.168.1.2", ...                  | | REMOVE CLIENT $client      | example: "remove client 192.168.1.2", ...               | | SELECT * FROM pwds         | lists the pwds                                          | | ADD PWD $pwd               | example: "add pwd user:raw_password", ...               | | ADD ENPWD $pwd             | example: "add enpwd user:encrypted_password", ...       | | REMOVE PWD $pwd            | example: "remove pwd user", ...                         | | SAVE CONFIG                | save the backends to config file                        | | SELECT VERSION             | display the version of Atlas                            | +----------------------------+---------------------------------------------------------+ 16 rows in set (0.00 sec)

訪問工作端口

可使用NAVICAT客戶端進(jìn)行連接配置

Atlas+mysql主主集群實(shí)現(xiàn)讀寫分離

讀負(fù)載均衡驗(yàn)證(經(jīng)驗(yàn)證會(huì)交替采用后端兩臺(tái)數(shù)據(jù)庫服務(wù)器響應(yīng)請(qǐng)求)

mysql> select @@hostname; +------------+ | @@hostname | +------------+ | db1        | +------------+ 1 row in set mysql> select @@hostname; +------------+ | @@hostname | +------------+ | db2        | +------------+ 1 row in set

讀寫分離驗(yàn)證

mysql> begin;select @@hostname;commit; Query OK, 0 rows affected   +------------+ | @@hostname | +------------+ | db1        | +------------+ 1 row in set   Query OK, 0 rows affected   mysql> begin;select @@hostname;commit; Query OK, 0 rows affected   +------------+ | @@hostname | +------------+ | db1        | +------------+ 1 row in set   Query OK, 0 rows affected

壓力測(cè)試

  讀寫分離壓力測(cè)試需要使用到Jmeter了,它是Java寫第一套開源的壓力測(cè)試工具,因?yàn)檫@個(gè)比較方便。他有專門測(cè)試MySQL的模塊,需要使用MySQL的JDBC驅(qū)動(dòng)jar包,配置很簡(jiǎn)單,東西很好很強(qiáng)大很好用。

Jmeter下載地址:http://jmeter.apache.org/download_jmeter.cgi

MySQL的JDBC :http://dev.mysql.com/downloads/connector/j/

下載下來后,分別都解壓開來,打開Jmeter ( 在bin路面下的jmeter.bat ) ,在測(cè)試計(jì)劃中,導(dǎo)入JDBC的jar包。具體步驟略

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

本文標(biāo)題:Atlas+mysql主主集群實(shí)現(xiàn)讀寫分離-創(chuàng)新互聯(lián)
鏈接地址:http://jinyejixie.com/article10/dhdcgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、營銷型網(wǎng)站建設(shè)、網(wǎng)站策劃、定制網(wǎng)站、域名注冊(cè)微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司
兰溪市| 邯郸县| 漠河县| 新源县| 饶河县| 阿瓦提县| 资讯 | 万载县| 锦屏县| 锦屏县| 贡觉县| 宁阳县| 东丽区| 西充县| 射阳县| 扶绥县| 彰化县| 西乌珠穆沁旗| 赤水市| 遵化市| 桂东县| 临洮县| 磴口县| 屏南县| 巴中市| 稻城县| 石景山区| 勃利县| 泗洪县| 塔河县| 萍乡市| 娄底市| 新丰县| 荆州市| 汉寿县| 万州区| 铜鼓县| 沁水县| 灵台县| 万安县| 沧州市|