3-6 筆記 Mysq的AB復(fù)制 Mysql的讀寫(xiě)分離-linux 學(xué)習(xí)筆記_第1頁(yè)
3-6 筆記 Mysq的AB復(fù)制 Mysql的讀寫(xiě)分離-linux 學(xué)習(xí)筆記_第2頁(yè)
3-6 筆記 Mysq的AB復(fù)制 Mysql的讀寫(xiě)分離-linux 學(xué)習(xí)筆記_第3頁(yè)
3-6 筆記 Mysq的AB復(fù)制 Mysql的讀寫(xiě)分離-linux 學(xué)習(xí)筆記_第4頁(yè)
3-6 筆記 Mysq的AB復(fù)制 Mysql的讀寫(xiě)分離-linux 學(xué)習(xí)筆記_第5頁(yè)
已閱讀5頁(yè),還剩12頁(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)介

3-61上午視頻看到22分鐘,31分鐘后無(wú)用MysqlAB復(fù)制netstat-antup查看哪個(gè)端口對(duì)應(yīng)的服務(wù)需要binglog.txt文件============================================================================簡(jiǎn)介為什么要做這個(gè)事情,是因?yàn)槲覀冇羞@樣的需求,為了做備份時(shí)對(duì)業(yè)務(wù)的影響最小,不管熱備也好冷備也好,都會(huì)對(duì)業(yè)務(wù)有一定的影響,怎么能對(duì)業(yè)務(wù)完全沒(méi)有影響。這是做AB復(fù)制的第一種原因,解決方法是“分到另外一臺(tái)服務(wù)器和主服務(wù)器同步唄”,我課上搶答道。。。吼吼。數(shù)據(jù)同步后,用B做備份就可以了,不會(huì)影響A上的業(yè)務(wù)速度。第二個(gè)原因針對(duì)數(shù)據(jù)庫(kù)是讀的業(yè)務(wù)多,讀的時(shí)候當(dāng)壓力特別大時(shí),要把壓力分?jǐn)傁氯?,緩解一臺(tái)mysql承受太多的查詢請(qǐng)求。完全復(fù)制出一臺(tái)一樣的mysql作為輔助服務(wù)器,來(lái)分流查詢請(qǐng)求,兩臺(tái)服務(wù)器的數(shù)據(jù)完全同步。ABB復(fù)制abc得改一個(gè)參數(shù)b不但是主,用binlog當(dāng)網(wǎng)站讀的壓力很大時(shí),可以用abb,abbbb….,但是要求只允許一個(gè)b從a復(fù)制,其他b從第一個(gè)b復(fù)制.ABC復(fù)制abc是節(jié)省兩個(gè)機(jī)房之間的帶寬,a是一個(gè)機(jī)房,b是一個(gè)機(jī)房其他機(jī)房從b復(fù)制,節(jié)省了ab之間的===========================================================================ab復(fù)制的原理在對(duì)master進(jìn)行數(shù)據(jù)操作時(shí),如果開(kāi)啟了binlog這些操作會(huì)實(shí)時(shí)的記錄到binlog.txt里面。binlog里面記錄了在什么時(shí)間,在什么位置,執(zhí)行了什么sql語(yǔ)句操作。那么這樣想一下,如果binlog如果能傳遞到slave上就可以復(fù)制了先讓master給slave開(kāi)一個(gè)復(fù)制的權(quán)限,讓slave能夠遠(yuǎn)程連接到master(因?yàn)閙ysql默認(rèn)是不允許遠(yuǎn)程連接的)。然后slave就可以下載master的binlog數(shù)據(jù)。下載binlog的任務(wù)是由slave上的I/O線程完成。下載完成后,MysqlB會(huì)把binlog文件的內(nèi)容寫(xiě)到本地的一個(gè)文件Replaylog。然后通過(guò)本地的一個(gè)SQL線程,把Relaylog文件執(zhí)行一遍AB復(fù)制完成,此時(shí)AB兩臺(tái)主機(jī)的數(shù)據(jù)完全同步總之關(guān)鍵原理就是用binlog再次執(zhí)行一次,master上要開(kāi)binlog,slave上開(kāi)不開(kāi)binlog無(wú)所謂。master要不開(kāi)binlog那就沒(méi)得玩兒了,沒(méi)法做AB復(fù)制。特殊情況假設(shè)現(xiàn)在slave服務(wù)停了后,master里又有一個(gè)動(dòng)作,createdatabaseXX,然后再啟動(dòng)slave,信息已經(jīng)不同步了。這時(shí),利用slave里的一個(gè)文件,這里面記錄了binlog文件已經(jīng)下載到哪個(gè)位置了(at40)。比如里記錄到at40,而master記錄到了at60,很明顯不一致,說(shuō)明數(shù)據(jù)更新過(guò),這時(shí)就會(huì)把沒(méi)記錄的部分下載過(guò)binlog來(lái),再執(zhí)行一遍。問(wèn)題IO線程是實(shí)時(shí)監(jiān)控,實(shí)時(shí)下載binlog文件的更新內(nèi)容嘛?==========================================================================實(shí)例演示做一個(gè)AB可以看視頻4.1 指定哪臺(tái)是主服務(wù)器,哪臺(tái)是輔助服務(wù)器master: vim/etc/f [mysqld]server_id=1slave: vim/etc/f [mysqld]server_id=2如果還有slave,server_id以此類推-----------------------------------------4.2master: vim/etc/f [mysqld]server_id=1log-bin=binloglog-bin-index=binlog.index-----------------------------------------------------------4.3slave: vim/etc/f [mysqld] server_id=2#因?yàn)閿?shù)據(jù)要寫(xiě)到本地的relay-log,所以要設(shè)置relay-log的存放路徑。relay-log的索引文件是什么 relay_log=/var/lib/mysql/mysql-relay-bin relay_log_index=/var/lib/mysql/mysql-relay-bin.index----------------------------------------------4.4 master&&slave servicemysqldrestart----------------------------------------------4.5 master: kyo是你隨便指定的用戶名,不用事先創(chuàng)建。mysql>GRANTreplicationslaveON*.*TO'kyo'@'%'identifiedby'123';QueryOK,0rowsaffected(0.05sec)注意!大小寫(xiě)mysql>flushprivileges;QueryOK,0rowsaffected(0.00sec)##################################################slave:刪除所有表,slave上應(yīng)該什么都沒(méi)有,重新初始化后/var/lib/mysql會(huì)重新生成文件 cd/var/lib/mysql rm-fr* servicemysqldrestartmaster:這一步是考慮到,你現(xiàn)在兩邊的數(shù)據(jù)不一樣,這時(shí)slave不知道從binlog的哪個(gè)位置開(kāi)始取數(shù)據(jù),所以要先做個(gè)同步導(dǎo)出所有數(shù)據(jù)庫(kù)-x提出請(qǐng)求鎖定所有數(shù)據(jù)庫(kù)中的所有表,以保證一致性 mysqldump-A-x>/tmp/full.sql—A scp/tmp/full.sqlroot@salveip:/tmp/將數(shù)據(jù)庫(kù)文件復(fù)制給slaveslave: mysql</tmp/full.sql做完同步后,此時(shí)不要再有數(shù)據(jù)的寫(xiě)入,不然slave又不知道該從binlog的哪個(gè)位置讀取數(shù)據(jù)了********************4.6******************************master: mysql>flushtableswithreadlock;將數(shù)據(jù)庫(kù)加上讀鎖,只允許讀操作 mysql>showmasterstatus;查看一下binlog你就可以知道m(xù)aster日志寫(xiě)到哪個(gè)位置了,你在B上就知道從哪兒開(kāi)始往下索要數(shù)據(jù)了+---------------+----------+--------------+------------------+|File|Position|Binlog_Do_DB|Binlog_Ignore_DB|+---------------+----------+--------------+------------------+|binlog.000003|295|||mysql>unlocktables;現(xiàn)在可以解鎖了,已經(jīng)知道寫(xiě)到哪里了--------------------------------------------4.6slave:這一步指定主服務(wù)器的信息,如果某一個(gè)打錯(cuò)了,就可能數(shù)顯IOrunning為NO的狀態(tài)??!創(chuàng)建masterinfo文件,在A上查的binlog位置信息填到下面。mysql>changemastertomaster_host='25',master_port=3306,master_user='kyo',master_password='123',master_log_file='binlog.000003',master_log_pos=295;如果有一天你覺(jué)得B不好用了,要重新配置ab復(fù)制,要先把刪掉然后再進(jìn)行配置,否則不生效。這條命令重啟系統(tǒng)后不用再敲,他已經(jīng)寫(xiě)入文件了。mysql>startslave;開(kāi)啟B--------------------------------------------------------4.7slave: AB復(fù)制,B使用的就是這兩個(gè)線程完成這項(xiàng)工作。 mysql>showslavestatus\G Slave_IO_Running:YesSlave_SQL_Running:Yes注意!生產(chǎn)環(huán)境中,兩臺(tái)mysql的版本盡量要一直,否則會(huì)出一些老師都解決不了的問(wèn)題。注意!IO線程會(huì)一直長(zhǎng)連接,只要master有操作就立刻更新,如果斷開(kāi)的話,60內(nèi)會(huì)嘗試重新連接注意!在slave上不能進(jìn)行增刪改的操作,可以進(jìn)行查。如果你覺(jué)得不安全,你可以把寫(xiě)入主配置文件??赡艹霈F(xiàn)的問(wèn)題!Slave_IO_runningnoIO線程沒(méi)有開(kāi)啟,可能是由于防火墻,服務(wù)沒(méi)開(kāi)啟,端口被占用,網(wǎng)絡(luò)不通等原因-----------------------------------------------步驟總結(jié)寫(xiě)配置文件,規(guī)定主輔分別是誰(shuí)。A開(kāi)啟日志功能,B設(shè)置relay-log存放路徑,relay-log索引存放路徑給B授權(quán)(slave)給A加讀鎖備份、導(dǎo)入數(shù)據(jù)庫(kù)查看A的binlog到哪個(gè)位置了B開(kāi)啟買masterinfo功能B開(kāi)啟slave功能--------------------------------------------查看B的狀態(tài),兩個(gè)線程都開(kāi)了,就說(shuō)明ok,查看數(shù)據(jù)庫(kù)數(shù)據(jù)是否同步完成!老師出的題做ABB,但是不能對(duì)A進(jìn)行任何操作,不能影響在線業(yè)務(wù)。注意,他們倆的主都是A。ABB我做出來(lái)了!其實(shí)主要步驟就是這兩步,也是整個(gè)AB復(fù)制核心的兩步:把B1鎖上。查看B1的狀態(tài)showslavestatus要這個(gè)倆參數(shù)Master_Log_File:binlog.XXXX、Exec_Master_Log_Pos:XXX備份數(shù)據(jù)庫(kù),導(dǎo)入到B2B1:unlocktablesB2:changemaster同樣設(shè)定A為主B2:startslave總結(jié)他其實(shí)就是B1在鎖上的時(shí)候當(dāng)前最新讀到masterbinlog上哪個(gè)位置。其實(shí)復(fù)制只要做到備份已有的和知道binlog哪里讀就可以了。兩者要嚴(yán)絲合縫,否則中間會(huì)漏數(shù)據(jù),所以要在鎖上以后再查看slave狀態(tài)。最后沒(méi)有更新可能是以下問(wèn)題沒(méi)給用戶授權(quán)。沒(méi)重啟服務(wù)。沒(méi)startslaveABCB的主是A,C的主是B可以試著做一下。B不光要開(kāi)binlog,還要保留傳過(guò)來(lái)的數(shù)據(jù)。得改一個(gè)參數(shù)。ABC的必要性就是,A和B如果不是同一個(gè)機(jī)房,C如果再?gòu)腁拿數(shù)據(jù)帶寬壓力就會(huì)增大,如果若干個(gè)C都這么干,帶寬就會(huì)崩潰。ABC主要就是為了節(jié)省帶寬的。ABC現(xiàn)在是比較老的方法,不知道有沒(méi)有新方法3月8日梁哥做了一個(gè)AB我做了一個(gè)B加進(jìn)去,AB先鎖表,導(dǎo)出所有數(shù)據(jù)到B,然后B的server_id應(yīng)該為3(挨個(gè)往后排),然后開(kāi)始做輔助(startslave)。====================================================================下午mysql讀寫(xiě)分離圖1用mysql解決兩個(gè)php文件圖2用ameba分發(fā)器解決總體步驟1升級(jí)java生產(chǎn)環(huán)境下一般都是1.51.6 2不能啟動(dòng),添加三行環(huán)境變量,再啟動(dòng)登陸或重啟后生效修改/root/.bash_profile或source/root/.bash_profile不重新加載配置文件,版本號(hào)可能不會(huì)變正確! java-version 若果改完后還不行,把老師給的文件直接覆蓋3創(chuàng)建復(fù)制粘貼就安裝完了創(chuàng)建一個(gè)目錄/usr/local/amoeba4修改配置文件/usr/local/amoeba.xmlvimamoeba.xml修改三個(gè)地方<propertyname="ipAddress">5</property><propertyname="user">admin</property<propertyname="password">123</property>另外檢查一下端口設(shè)置,是否是mysql的默認(rèn)端口3306<propertyname="port">3306</property>修改配置文件/usr/local/dbserver.xml這個(gè)文件規(guī)定我如何連接后端數(shù)據(jù)庫(kù)<!--mysqluser-->26<propertyname="user">mary</property>這個(gè)名字和上面的文件里的沒(méi)關(guān)系2728<!--mysqlpassword29<propertyname="password">password</property>30-->31<propertyname="password">123</property>44<dbServername="Master"parent="abstractServer">45<factoryConfig>46<!--mysqlip-->47<propertyname="ipAddress">86</property>50<dbServername="Slave1"parent="abstractServer">51<factoryConfig>52<!--mysqlip-->53<propertyname="ipAddress">26</property>54</factoryConfig>55</dbServer>56<dbServername="Slave2"parent="abstractServer

溫馨提示

  • 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)論