云計(jì)算集群技術(shù)與應(yīng)用- 教案-教學(xué)設(shè)計(jì) 第03章 數(shù)據(jù)庫(kù)集群_第1頁(yè)
云計(jì)算集群技術(shù)與應(yīng)用- 教案-教學(xué)設(shè)計(jì) 第03章 數(shù)據(jù)庫(kù)集群_第2頁(yè)
云計(jì)算集群技術(shù)與應(yīng)用- 教案-教學(xué)設(shè)計(jì) 第03章 數(shù)據(jù)庫(kù)集群_第3頁(yè)
云計(jì)算集群技術(shù)與應(yīng)用- 教案-教學(xué)設(shè)計(jì) 第03章 數(shù)據(jù)庫(kù)集群_第4頁(yè)
云計(jì)算集群技術(shù)與應(yīng)用- 教案-教學(xué)設(shè)計(jì) 第03章 數(shù)據(jù)庫(kù)集群_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

云計(jì)算集群技術(shù)與應(yīng)用教學(xué)設(shè)計(jì)課程名稱:云計(jì)算集群技術(shù)與應(yīng)用__授課年級(jí):_______________________授課學(xué)期:_______________________教師姓名:_______________________年月日課程名稱第3章數(shù)據(jù)庫(kù)集群計(jì)劃學(xué)時(shí)4學(xué)時(shí)內(nèi)容分析本章主要介紹數(shù)據(jù)庫(kù)集群的相關(guān)知識(shí),包含數(shù)據(jù)庫(kù)簡(jiǎn)介、數(shù)據(jù)庫(kù)集群簡(jiǎn)介、數(shù)據(jù)庫(kù)集群架構(gòu)、數(shù)據(jù)庫(kù)主從復(fù)制實(shí)戰(zhàn)、數(shù)據(jù)庫(kù)讀寫分離實(shí)戰(zhàn)。教學(xué)目標(biāo)與教學(xué)要求【知識(shí)目標(biāo)】理解數(shù)據(jù)庫(kù)簡(jiǎn)介。理解數(shù)據(jù)庫(kù)集群簡(jiǎn)介。理解數(shù)據(jù)庫(kù)集群架構(gòu)。【技能目標(biāo)】掌握部署數(shù)據(jù)庫(kù)主從復(fù)制。掌握部署數(shù)據(jù)庫(kù)讀寫分離?!舅颊四繕?biāo)】引導(dǎo)學(xué)生認(rèn)識(shí)學(xué)習(xí)的過(guò)程也是由簡(jiǎn)入難的逐步積累過(guò)程,并且學(xué)習(xí)的過(guò)程也需要秉承嚴(yán)謹(jǐn)、踏實(shí)、精益求精的大國(guó)工匠精神。引導(dǎo)學(xué)生樹(shù)立科學(xué)嚴(yán)謹(jǐn)?shù)募軜?gòu)精神,數(shù)據(jù)安全意識(shí)。培養(yǎng)學(xué)生項(xiàng)目開(kāi)發(fā)的全局觀和系統(tǒng)思維。教學(xué)重點(diǎn)數(shù)據(jù)庫(kù)集群架構(gòu)、數(shù)據(jù)庫(kù)主從復(fù)制實(shí)戰(zhàn)、數(shù)據(jù)庫(kù)讀寫分離實(shí)戰(zhàn)教學(xué)難點(diǎn)數(shù)據(jù)庫(kù)集群架構(gòu)、數(shù)據(jù)庫(kù)主從復(fù)制實(shí)戰(zhàn)、數(shù)據(jù)庫(kù)讀寫分離實(shí)戰(zhàn)教學(xué)方式課堂講解配合ppt演示2學(xué)時(shí),上機(jī)演練2學(xué)時(shí)教學(xué)過(guò)程第一學(xué)時(shí)(數(shù)據(jù)庫(kù)簡(jiǎn)介、數(shù)據(jù)庫(kù)集群簡(jiǎn)介、數(shù)據(jù)庫(kù)集群架構(gòu))一、提出需求,導(dǎo)入學(xué)習(xí)任務(wù)(1)思考數(shù)據(jù)庫(kù)集群的學(xué)習(xí)應(yīng)該從何入手。通過(guò)MySQL宕機(jī)事故,引出數(shù)據(jù)庫(kù)集群的重要性。事件一:2012年9月10-11日,GitHub服務(wù)中斷,持續(xù)1.46小時(shí)。宕機(jī)的原因?yàn)镚itHub將一對(duì)古老的、基于DRBD的MySQL服務(wù)器替換成一個(gè)擁有3個(gè)節(jié)點(diǎn)的集群。在合并到新系統(tǒng)時(shí),“活動(dòng)的”數(shù)據(jù)庫(kù)自動(dòng)出現(xiàn)了多個(gè)故障轉(zhuǎn)移(failover),同時(shí)又因?yàn)榧汗芾碥浖腻e(cuò)誤操作導(dǎo)致性能下降,最終造成網(wǎng)站宕機(jī)。事件二:2012年6月29日,AmazonRDS宕機(jī)事件,持續(xù)時(shí)間3小時(shí)。一個(gè)被稱為derecho的強(qiáng)雷暴天氣系統(tǒng)通過(guò)弗吉尼亞州北部,使得亞馬遜在該地區(qū)的設(shè)施失去了動(dòng)力,發(fā)電機(jī)不能正常運(yùn)行,消耗應(yīng)急電源的不間斷電源(電源)系統(tǒng),從而導(dǎo)致運(yùn)行在AmazonRDS上的大概上千個(gè)MySQL數(shù)據(jù)庫(kù)宕機(jī)。(2)明確學(xué)習(xí)方向。理解相關(guān)數(shù)據(jù)庫(kù)。理解數(shù)據(jù)庫(kù)集群。理解數(shù)據(jù)庫(kù)集群架構(gòu)。二、知識(shí)講解(一)數(shù)據(jù)庫(kù)簡(jiǎn)介1.概念數(shù)據(jù)庫(kù)(Database)是按照一定的數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)的組織形式或數(shù)據(jù)之間的聯(lián)系)來(lái)組織、存儲(chǔ)及管理數(shù)據(jù)的倉(cāng)庫(kù),可視為電子化的文件柜,用戶可以對(duì)文件中的數(shù)據(jù)進(jìn)行新增、查詢、更新、刪除等操作。2.數(shù)據(jù)庫(kù)模型早期比較受歡迎的數(shù)據(jù)庫(kù)模型有三種,分別為層次式數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)式數(shù)據(jù)庫(kù)、關(guān)系型數(shù)據(jù)庫(kù)。而現(xiàn)代的互聯(lián)網(wǎng)世界中,最常用的數(shù)據(jù)庫(kù)模型只有兩種,關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)。關(guān)系型數(shù)據(jù)庫(kù)關(guān)系型數(shù)據(jù)庫(kù)模型是把復(fù)雜的數(shù)據(jù)結(jié)構(gòu)歸結(jié)為簡(jiǎn)單的二元關(guān)系(即二維表格形式)。在關(guān)系型數(shù)據(jù)庫(kù)中,對(duì)數(shù)據(jù)的操作幾乎全部建立在一個(gè)或多個(gè)關(guān)系表格上,通過(guò)這些關(guān)聯(lián)的表格分類、合并、連接或選取等運(yùn)算來(lái)實(shí)現(xiàn)數(shù)據(jù)的管理。非關(guān)系型數(shù)據(jù)庫(kù)非關(guān)系型數(shù)據(jù)庫(kù)也被稱為NoSQL數(shù)據(jù)庫(kù),NoSQL的本意是“NotOnlySQL”,指的是非關(guān)系型數(shù)據(jù)庫(kù),而不是“NOSQL”的意思,因此,NoSQL的產(chǎn)生并不是要徹底否定關(guān)系型數(shù)據(jù)庫(kù),而是作為傳統(tǒng)數(shù)據(jù)庫(kù)的一個(gè)有效補(bǔ)充。NoSQL數(shù)據(jù)庫(kù)在特定的場(chǎng)景下可以發(fā)揮難以想象的高效率和高性能。(二)數(shù)據(jù)庫(kù)集群簡(jiǎn)介1.概念數(shù)據(jù)庫(kù)集群,顧名思義,配置若干(兩臺(tái)及以上)臺(tái)數(shù)據(jù)庫(kù)服務(wù)器組成一個(gè)系統(tǒng),作為一個(gè)整體為客戶端提供透明的數(shù)據(jù)服務(wù)。大量讀寫請(qǐng)求來(lái)臨時(shí),數(shù)據(jù)庫(kù)集群可以將請(qǐng)求分發(fā)給不同的集群節(jié)點(diǎn),這樣的處理使得數(shù)據(jù)的讀寫速度更快,也更好地解決了高并發(fā)情況下單節(jié)點(diǎn)數(shù)據(jù)庫(kù)的性能問(wèn)題。2.分布式數(shù)據(jù)庫(kù)分布式數(shù)據(jù)庫(kù)是指利用網(wǎng)絡(luò)將分散的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)連接起來(lái)組成一個(gè)整體提供數(shù)據(jù)庫(kù)服務(wù)。用戶通過(guò)分布式數(shù)據(jù)庫(kù)系統(tǒng)的就近訪問(wèn)原則,可以訪問(wèn)就近的數(shù)據(jù)庫(kù)節(jié)點(diǎn),數(shù)據(jù)庫(kù)各節(jié)點(diǎn)之間能夠同步數(shù)據(jù)傳輸,實(shí)現(xiàn)了數(shù)據(jù)的一致性。3.數(shù)據(jù)庫(kù)集群與分布式數(shù)據(jù)庫(kù)系統(tǒng)的對(duì)比圖4.數(shù)據(jù)庫(kù)集群與分布式數(shù)據(jù)庫(kù)系統(tǒng)的區(qū)別數(shù)據(jù)庫(kù)可以具有多個(gè)相似或相同的數(shù)據(jù)集,分布式數(shù)據(jù)庫(kù)系統(tǒng)一般具有完全不同的數(shù)據(jù)集。數(shù)據(jù)庫(kù)集群的各節(jié)點(diǎn)使用相同的操作系統(tǒng)、數(shù)據(jù)庫(kù)版本,以及相同版本的補(bǔ)丁包,而分布式數(shù)據(jù)庫(kù)系統(tǒng)中各節(jié)點(diǎn)可以使用不同的操作系統(tǒng)和不同版本的數(shù)據(jù)庫(kù)系統(tǒng)。數(shù)據(jù)庫(kù)集群一般情況下是建立在高速局域網(wǎng)內(nèi),而分布式數(shù)據(jù)庫(kù)系統(tǒng)還可以建立在異地遠(yuǎn)程網(wǎng)絡(luò)。(三)數(shù)據(jù)庫(kù)集群架構(gòu)主從復(fù)制主從復(fù)制架構(gòu),顧名思義,分為主數(shù)據(jù)庫(kù)和從數(shù)據(jù)庫(kù)。從數(shù)據(jù)庫(kù)要求與主數(shù)據(jù)庫(kù)有完全相同數(shù)據(jù)庫(kù)環(huán)境,當(dāng)主數(shù)據(jù)庫(kù)實(shí)時(shí)更新數(shù)據(jù)信息時(shí),主數(shù)據(jù)庫(kù)會(huì)將更新信息寫入一個(gè)二進(jìn)制文件binlog中,然后發(fā)送到從數(shù)據(jù)庫(kù)中。從服務(wù)器成功連接主服務(wù)器后,讀取主服務(wù)器的二進(jìn)制文件,并執(zhí)行相應(yīng)的操作直至最后一次更新的位置,然后等待主服務(wù)器通知新的更新。數(shù)據(jù)的完整性依賴于主庫(kù)保存的binlog,比如主庫(kù)宕機(jī)了,還可以通過(guò)binlog把丟失的數(shù)據(jù)同步到從庫(kù)中,以加強(qiáng)數(shù)據(jù)的安全性。一主多從復(fù)制的邏輯圖。多級(jí)復(fù)制一主多從的復(fù)制架構(gòu)可以解決大部分請(qǐng)求壓力較大的場(chǎng)景需求,隨著業(yè)務(wù)量的增大,主庫(kù)發(fā)送binlog日志到從庫(kù)的I/O訪問(wèn)頻率過(guò)高,網(wǎng)絡(luò)壓力也會(huì)隨著增大,這時(shí)多級(jí)復(fù)制架構(gòu)可以解決主庫(kù)額外的I/O線程壓力和網(wǎng)絡(luò)壓力。MySQL的多級(jí)復(fù)制邏輯圖。雙主復(fù)制雙主復(fù)制(DualMaster)又稱為主主復(fù)制,即兩個(gè)主數(shù)據(jù)庫(kù),且兩個(gè)主庫(kù)互為主從。主主復(fù)制架構(gòu)常用于數(shù)據(jù)庫(kù)管理員做維護(hù)時(shí)需要主從切換的場(chǎng)景,從而避免了重復(fù)搭建從庫(kù)的麻煩。主主復(fù)制邏輯圖。多源復(fù)制MySQL5.7版本開(kāi)始支持多源(Multi-Source)復(fù)制,實(shí)現(xiàn)了多主一從復(fù)制,將多個(gè)數(shù)據(jù)庫(kù)(Master)的數(shù)據(jù)集中發(fā)送到1臺(tái)從庫(kù)(Slave)上。多源復(fù)制結(jié)構(gòu)要求至少包含兩個(gè)主庫(kù)和一個(gè)從庫(kù),常被用于復(fù)雜的業(yè)務(wù)需求,不但可以支撐OLTP(聯(lián)機(jī)事務(wù)處理),又能夠滿足OLAP(聯(lián)機(jī)分析處理)。多源復(fù)制的邏輯圖。三、知識(shí)鞏固(1)回顧上課前的學(xué)習(xí)目標(biāo),對(duì)本節(jié)課知識(shí)點(diǎn)進(jìn)行總結(jié)。(2)使用第3章課后作業(yè)。第二學(xué)時(shí)(數(shù)據(jù)庫(kù)主從復(fù)制實(shí)戰(zhàn)、數(shù)據(jù)庫(kù)讀寫分離實(shí)戰(zhàn))一、回顧上節(jié)課內(nèi)容(1)對(duì)上節(jié)課布置的作業(yè)以及學(xué)生提出的問(wèn)題進(jìn)行答疑解惑。(2)回顧上節(jié)課內(nèi)容,引出本節(jié)課主題。(3)明確學(xué)習(xí)方向。掌握部署數(shù)據(jù)庫(kù)主從復(fù)制。掌握部署數(shù)據(jù)庫(kù)讀寫分離。二、知識(shí)講解(一)數(shù)據(jù)庫(kù)主從復(fù)制實(shí)戰(zhàn)1.MySQL主從復(fù)制原理MySQL的主從復(fù)制是一個(gè)異步的復(fù)制過(guò)程,數(shù)據(jù)將從一個(gè)MySQL數(shù)據(jù)庫(kù)(Master)復(fù)制到另外一個(gè)MySQL數(shù)據(jù)庫(kù)(Slave),是由三個(gè)線程參與完成了在Master與Slave之間數(shù)據(jù)復(fù)制的過(guò)程。其中有兩個(gè)線程(SQL線程和I/O線程)在Slave端,另外一個(gè)線程(I/O線程)在Master端。要實(shí)現(xiàn)MySQL的主從復(fù)制,首先必須打開(kāi)Master端的binlog記錄功能,否則就無(wú)法實(shí)現(xiàn)。因?yàn)檎麄€(gè)復(fù)制過(guò)程實(shí)際上就是Slave端從Master端獲取binlog日志,然后再在Slave上以相同的順序執(zhí)行獲取的binlog日志中所記錄的各種SQL操作。要打開(kāi)MySQL的binlog記錄功能,可以通過(guò)在MySQL的配置文件f中的mysqld模塊增加log_bin參數(shù)來(lái)實(shí)現(xiàn)。MySQL主從復(fù)制的工作過(guò)程。2.實(shí)驗(yàn)環(huán)境準(zhǔn)備2臺(tái)VM虛擬機(jī)(或者物理服務(wù)器),一臺(tái)做主數(shù)據(jù)庫(kù)(master1),一臺(tái)從數(shù)據(jù)庫(kù)(slave1),具體如表。配置項(xiàng)主服務(wù)器從服務(wù)器HostNamemaster1slave1IP4445ServerID144145版本號(hào)MySQL5.7MySQL5.73.部署MySQL(1)配置MySQL鏡像源(2)下載并安裝MySQL查看Yum倉(cāng)庫(kù)中提供的MySQL版本。市場(chǎng)中現(xiàn)在使用的是較穩(wěn)定的5.7版本,這里借助Yum管理工具包關(guān)閉MySQL8.0版本,開(kāi)啟5.7版本進(jìn)行實(shí)驗(yàn)。首先下載Yum管理工具包。[root@qfedu~]#yum-yinstallyum-utils使用yum-config-manager命令關(guān)閉MySQL8.0版本,并開(kāi)啟MySQL5.7版本。[root@qfedu~]#yum-config-manager--disablemysql80-community[root@qfedu~]#yum-config-manager--enablemysql57-community設(shè)置完成后再次確認(rèn)目前倉(cāng)庫(kù)中提供的MySQL版本。[root@qfedu~]#yumrepolistenabled|grepmysqlmysql-connectors-community/x86_64MySQLConnectorsCommunity221mysql-tools-community/x86_64MySQLToolsCommunity135mysql57-community/x86_64MySQL5.7CommunityServer使用Yum命令下載并安裝MySQL,具體如下所示。[root@qfedu~]#yum-yinstallmysql-community-server(3)初始化MySQL安裝完成后,啟動(dòng)MySQL服務(wù)并設(shè)置開(kāi)機(jī)自啟。[root@qfedu~]#systemctlstartmysqld[root@qfedu~]#systemctlenablemysqld查看系統(tǒng)為root用戶隨機(jī)生成的臨時(shí)密碼。[root@qfedu~]#cat/var/log/mysqld.log|grep"temporarypassword"2020-01-03T07:22:33.997442Z1[Note]Atemporarypasswordisgeneratedforroot@localhost:g8R4#F*4l,WX臨時(shí)密碼為“g8R4#F*4l,WX”。使用root用戶及臨時(shí)密碼,進(jìn)入數(shù)據(jù)庫(kù)。[root@qfedu~]#mysql-uroot-p'g8R4#F*4l,WX'……mysql>看見(jiàn)mysql>提示符,說(shuō)明數(shù)據(jù)庫(kù)登錄成功。更改數(shù)據(jù)庫(kù)的密碼為“QianFeng@123”。mysql>ALTERUSER'root'@'localhost'IDENTIFIEDBY'qianfeng@123';ERROR1819(HY000):Yourpassworddoesnotsatisfythecurrentpolicyrequirements由上述結(jié)果可知,返回了一個(gè)錯(cuò)誤提示,設(shè)置的密碼不符合密碼安全策略。針對(duì)以上問(wèn)題,需要在配置文件中設(shè)置密碼強(qiáng)度。[root@qfedu~]#vim/etc/f#在[mysqld]下添加如下內(nèi)容[mysqld]validate_password=off然后重啟數(shù)據(jù)庫(kù),重新登錄數(shù)據(jù)庫(kù),修改密碼。[root@qfedu~]#systemctlrestartmysqld[root@qfedu~]#mysql-uroot-p'g8R4#F*4l,WX'······此處省略部分代碼······mysql>alteruser'root'@'localhost'identifiedby'qianfeng@123';QueryOK,0rowsaffected(0.11sec)使用root用戶及設(shè)定的新密碼登陸數(shù)據(jù)庫(kù),驗(yàn)證密碼是否更改成功。[root@qfedu~]#mysql-uroot-p'QianFeng@123'······此處省略部分代碼······mysql>由上述結(jié)果可知,密碼更改成功,數(shù)據(jù)庫(kù)初始化完成。4.部署主從復(fù)制集群(1)配置主服務(wù)器在配置主從復(fù)制集群時(shí),需要在主服務(wù)器上開(kāi)啟二進(jìn)制日志并配置唯一的服務(wù)器ID,配置完成后需要重新啟動(dòng)mysqld服務(wù)。編輯主服務(wù)器的配置文件f。[root@master1~]#vi/etc/f[mysqld]#添加如下代碼log-bin=/var/log/mysql/mysql-binserver-id=144創(chuàng)建相關(guān)的日志目錄并賦予權(quán)限。[root@master1~]#mkdir/var/log/mysql[root@master1~]#chownmysql.mysql/var/log/mysql目錄創(chuàng)建完成后,重新啟動(dòng)mysqld服務(wù)。[root@master1~]#systemctlrestartmysqld為了保證在使用帶事務(wù)的InnoDB進(jìn)行復(fù)制設(shè)置時(shí)盡可能提高持久性和一致性,也需要在主服務(wù)器(master1)的f配置文件中加入以下配置項(xiàng)。innodb_flush_log_at_trx_commit=1sync_binlog=1在MySQL中查看skip_networking選項(xiàng)狀態(tài)。mysql>showvariableslike'%skip_networking%';+-----------------+-------+|Variable_name|Value|+-----------------+-------+|skip_networking|OFF|+-----------------+-------+1rowinset(0.00sec)由上述結(jié)果可知,skip_networking選項(xiàng)為關(guān)閉狀態(tài)。(2)創(chuàng)建指定用戶創(chuàng)建一個(gè)專門用于復(fù)制數(shù)據(jù)的用戶,每個(gè)從服務(wù)器需要使用MySQL主服務(wù)器上的用戶名和密碼連接到主服務(wù)器上。例如,在主服務(wù)上創(chuàng)建用戶repl,并允許該用戶可以從任何主機(jī)上連接到Master上進(jìn)行復(fù)制操作。mysql>createuser'repl'@'%';QueryOK,0rowsaffected(0.02sec)mysql>grantreplicationslaveon*.*to'repl'@'%'identifiedby'qianfeng@123';QueryOK,0rowsaffected(0.02sec)用戶和權(quán)限設(shè)置完成后,可以嘗試在從服務(wù)器上使用剛才創(chuàng)建的用戶進(jìn)行測(cè)試連接。[root@slave1~]#mysql-urepl-p'qianfeng@123'-hmaster1……mysql>由上述結(jié)果可知,用戶repl可以通過(guò)從服務(wù)器登陸主服務(wù)器。(3)拷貝數(shù)據(jù)在搭建主從復(fù)制集群時(shí),主服務(wù)上可能會(huì)已經(jīng)存在數(shù)據(jù),為了模擬真實(shí)的生產(chǎn)環(huán)境,在主服務(wù)器上插入測(cè)試數(shù)據(jù)。mysql>createdatabasetest;mysql>createtabletest.t1(idint,namevarchar(50));mysql>insertintotest.t1values(1,"lucky"),(2,"Cookie"),(3,"Belle");在啟動(dòng)復(fù)制之前,需要將主服務(wù)器中現(xiàn)有的數(shù)據(jù)與從服務(wù)器保持同步,在進(jìn)行相關(guān)操作時(shí)需要保持客戶端的正常運(yùn)行,以便鎖定保持不變。將主服務(wù)器中現(xiàn)有的數(shù)據(jù)導(dǎo)出,并將導(dǎo)出的數(shù)據(jù)復(fù)制到每個(gè)從服務(wù)器上。本次實(shí)例將使用mysqldump工具創(chuàng)建要復(fù)制的所有數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)。[root@master1~]#mysqldump-uroot-p'qianfeng@123'--all-databases--master-data=1>dbdump.db查看備份中數(shù)據(jù)記錄的二進(jìn)制日志的位置,以便在從服務(wù)器配置中使用。[root@master1~]#vimdbdump.db……22CHANGEMASTERTOMASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=1255;//省略部分內(nèi)容//使用scp或者rsync工具將備份出來(lái)的數(shù)據(jù)傳輸?shù)綇姆?wù)器上。[root@master1~]#scpdbdump.dbroot@slave1:/root/(4)配置從服務(wù)器數(shù)據(jù)拷貝完成后,在從服務(wù)器的f配置文件中添加ServerID。[root@slave1~]#vi/etc/f[mysqld]server-id=145需要注意,配置修改完成后需要重新啟動(dòng)mysqld的服務(wù)。[root@slave1~]#systemctlrestartmysqld接下來(lái),在從服務(wù)器的數(shù)據(jù)庫(kù)中導(dǎo)入備份數(shù)據(jù)。mysql>source/root/dbdump.db從服務(wù)器上連接主服務(wù)器,注意相關(guān)信息的準(zhǔn)確性。mysql>CHANGEMASTERTO->master_host='master1',->master_user='repl',->master_password='qianfeng@123',->master_log_file='mysql-bin.000001',->master_log_pos=1255;在從服務(wù)器開(kāi)始復(fù)制線程。mysql>startslave;在從服務(wù)器執(zhí)行如下操作可以驗(yàn)證線程是否工作正常。mysql>showslavestatus\G……Slave_IO_Running:YesSlave_SQL_Running:Yes……I/O線程和SQL線程的狀態(tài)都為YES,證明主從復(fù)制線程啟動(dòng)成功。5.測(cè)試數(shù)據(jù)同步(詳見(jiàn)第3章PPT)(1)復(fù)制狀態(tài)驗(yàn)證(2)故障排除(3)加入新的從服務(wù)器(二)數(shù)據(jù)庫(kù)讀寫分離實(shí)戰(zhàn)1.數(shù)據(jù)庫(kù)代理(1)代理服務(wù)器是網(wǎng)絡(luò)信息的中轉(zhuǎn)站,是信息“交流”的使者,常見(jiàn)的數(shù)據(jù)庫(kù)代理架構(gòu)。(2)代理服務(wù)器提供統(tǒng)一的入口供用戶訪問(wèn),當(dāng)用戶訪問(wèn)代理服務(wù)器時(shí),代理服務(wù)器會(huì)將用戶請(qǐng)求平均的分發(fā)到后端的服務(wù)器集群,并且其本身并不會(huì)做任何的數(shù)據(jù)處理。這樣一來(lái),代理服務(wù)器不僅起到負(fù)載均衡的作用,而且同時(shí)還提供了獨(dú)立的端口和IP。當(dāng)后端的服務(wù)器處理完請(qǐng)求后也會(huì)通過(guò)代理服務(wù)器返回給用戶,基本的網(wǎng)絡(luò)拓?fù)淙鐖D。數(shù)據(jù)庫(kù)代理(DBProxy)又被稱為數(shù)據(jù)庫(kù)中間件,當(dāng)面對(duì)大量的應(yīng)用請(qǐng)求時(shí),代理可以通過(guò)對(duì)數(shù)據(jù)進(jìn)行分片以及自身的自動(dòng)路由與聚合機(jī)制實(shí)現(xiàn)對(duì)不同請(qǐng)求的分發(fā),以此來(lái)達(dá)到數(shù)據(jù)庫(kù)的讀寫分離功能。2.Mycat讀寫分離原理Mycat是一款開(kāi)源的數(shù)據(jù)庫(kù)代理軟件,由阿里巴巴在Cobar的基礎(chǔ)上進(jìn)行改良,不僅支持市場(chǎng)上主流的數(shù)據(jù)庫(kù)(MySQL、Oracle、MongoDB等),而且還支持?jǐn)?shù)據(jù)庫(kù)中的事務(wù)操作。通過(guò)搭建Mycat代理,實(shí)現(xiàn)MySQL雙主雙從集群的讀寫分離。讀寫分離集群架構(gòu)如圖。3.實(shí)驗(yàn)環(huán)境讀寫分離集群中,各服務(wù)器的詳細(xì)參數(shù)如表。主機(jī)名稱主機(jī)IP系統(tǒng)Mycat40Centos7Master144Centos7Slave145Centos7Master241Centos7Slave242Centos74.部署流程(詳見(jiàn)第3章PPT)(1)配置Java環(huán)境在Mycat服務(wù)器中使用Wget工具下載相應(yīng)的JDK壓縮包并解壓。[root@mycat~]#lsjdk-8u311-linux-x64.tar.gz[root@mycat~]#tarxfjdk-8u311-linux-x64.tar.gz-C/usr/local/[root@mycat~]#ln-s/usr/localk1.8.0_311//usr/local/java解壓完成后需要在全局配置文件內(nèi)追加設(shè)置Java環(huán)境變量。[root@mycat~]#vim/etc/profileJAVA_HOME=/usr/local/javaPATH=$JAVA_HOME/bin:$PATHexportJAVA_HOMEPATH刷新全局變量,使環(huán)境變量生效。[root@mycat~]#source/etc/profile使用相關(guān)命令驗(yàn)證Java環(huán)境是否安裝成功。[root@mycat~]#env|grepJAVAJAVA_HOME=/usr/local/java[root@mycat~]#java-versionjavaversion"1.8.0_311"Java(TM)SERuntimeEnvironment(build1.8.0_311-b11)JavaHotSpot(TM)64-BitServerVM(build25.311-b11,mixedmode)(2)配置MycatJava環(huán)境搭建完成后,即可部署Mycat服務(wù)。首先,為了讓應(yīng)用之間互不影響,可以為Mycat創(chuàng)建一個(gè)專屬的用戶。#查看是否已經(jīng)存在Mycat用戶[root@mycat~]#cat/etc/group|grepmycat[root@mycat~]#cat/etc/passwd|grepmycat#創(chuàng)建Mycat用戶[root@mycat~]#groupaddmycat[root@mycat~]#useradd-gmycatmycat在Mycat服務(wù)器中使用wget工具進(jìn)行下載,下載完成后將壓縮包解壓至指定路徑即可。[root@mycat~]#wget//20190828135747/Mycat-server--release-20190828135747-linux.tar.gz[root@mycat~]#tarxfMycat-server--release-20190828135747-linux.tar.gz-C/usr/local/[root@mycat~]#ls/usr/local/mycat/bincatletconfliblogsversion.txt由上述結(jié)果可知,解壓在/usr/local/目錄下有一個(gè)mycat文件夾,將該文件夾的所有者設(shè)置為mycat用戶。[root@mycat~]#chown-Rmycat:mycat/usr/local/mycatetc文件下的profile文件是設(shè)置系統(tǒng)級(jí)別的環(huán)境變量和啟動(dòng)程序的,其中的配置會(huì)對(duì)所有用戶生效。此時(shí)只需修改單個(gè)用戶的環(huán)境變量,編輯~/.bashrc文件。[root@mycat~]#vim~/.bashrc#添加如下代碼exportMYCAT_HOME=/usr/local/mycatexportPATH=$PATH:$MYCAT_HOME/bin刷新全局變量,使環(huán)境變量生效。[root@mycat~]#source/etc/profile修改server.xml配置文件。修改schema.xml文件。(3)配置MySQL集群Mycat代理配置完成后,需要在后端的MySQL集群上設(shè)置mycatproxy的訪問(wèn)權(quán)限。例如,在Master1服務(wù)器上設(shè)置用戶權(quán)限。mysql>grantallon*.*to'mycatproxy'@'40'identifiedby'QianFeng@123';需要注意,40為Mycat服務(wù)器的IP地址。(4)啟動(dòng)Mycat在MySQL服務(wù)器將權(quán)限開(kāi)啟完成后,在Mycat服務(wù)器上啟動(dòng)代理服務(wù)。[root@mycat~]#/usr/local/mycat/bin/mycatstartStartingMycat-server...當(dāng)執(zhí)行結(jié)果出現(xiàn)“StartingMycat-server”時(shí),則表示代理服務(wù)正在啟動(dòng)。另外,也可以查看通過(guò)查看相應(yīng)的端口來(lái)檢查服務(wù)器是否正常運(yùn)行。(5)配置mycat后端數(shù)據(jù)庫(kù)當(dāng)Mycat代理服務(wù)器啟動(dòng)起來(lái)后并不能直接使用,因?yàn)镸ycat本身并不提供數(shù)據(jù)存儲(chǔ)功能,所以還需要將Mycat中虛擬的數(shù)據(jù)庫(kù)框架與后端真實(shí)的數(shù)據(jù)庫(kù)進(jìn)行綁定。為了方便讀者理解,這里將在Mycat主機(jī)上安裝MySQL服務(wù),具體如下所示。[root@mycat~]#wget /get/mysql80-community-release-el7-4.noarch.rpm[root@mycat~]#yum-ylocalinstallmysql80-community-release-el7-4.noarch.rpm[root@mycat~]#yum-yinstallyum-utils[root@mycat~]#yum-config-manager--disablemysql80-community[root@mycat~]#yum-config-manager--enablemysql57-community[root@mycat~]#yumrepolistenabled|grepmysqlmysql-connectors-community/x86_64MySQLConnectorsCommunity221mysql-tools-community/x86_64MySQLToolsCommunity135mysql57-community/x86_64MySQL5.7CommunityServer544[root@mycat~]#yum-yinstallmysql-community-server[root@mycat~]#systemctlstartmysqld[root@mycat~]#systemctlenablemysqld[root@mycat~]#cat/var/log/mysqld.log|grep"temporarypassword"2022-01-21T08:54:26.713978Z1[Note]Atemporarypasswordisgeneratedforroot@localhost:&.XrF!?y,50F[root@mycat~]#vim/etc/f#添加以下內(nèi)容validate_password=off[root@mycat~]#mysql-uroot-p'&.XrF!?y,50F'……mysql>ALTERUSER'root'@'localhost'IDENTIFIEDBY'qianfeng@123';QueryOK,0rowsaffected(0.00sec)mysql>\q[root@mycat~]#mysql-h-uroot-pqianfeng@123-P9066……mysql>showdatabases;+----------+|DATABASE|+----------+|TESTDB|+----------+1rowinset(0.00sec)由上述結(jié)果可知,Mycat部署成功后已經(jīng)創(chuàng)建了虛擬數(shù)據(jù)庫(kù)TESTDB,但此時(shí)的數(shù)據(jù)庫(kù)中還不能插入數(shù)據(jù),需要綁定后端的數(shù)據(jù)庫(kù)才可以使用。此時(shí),登錄Master1數(shù)據(jù)庫(kù)并創(chuàng)建與Mycat同名的數(shù)據(jù)庫(kù)。[root@master1~]#mysql-uroot-p'q

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論