理解mysql——復(fù)制(replication)

理解mysql——復(fù)制(replication)

ID:9082334

大?。?86.12 KB

頁數(shù):11頁

時間:2018-04-16

理解mysql——復(fù)制(replication)_第1頁
理解mysql——復(fù)制(replication)_第2頁
理解mysql——復(fù)制(replication)_第3頁
理解mysql——復(fù)制(replication)_第4頁
理解mysql——復(fù)制(replication)_第5頁
資源描述:

《理解mysql——復(fù)制(replication)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。

1、理解MySQL——復(fù)制(Replication)1、復(fù)制概述1.1、復(fù)制解決的問題數(shù)據(jù)復(fù)制技術(shù)有以下一些特點:(1)???數(shù)據(jù)分布(2)???負載平衡(loadbalancing)(3)???備份(4)???高可用性(highavailability)和容錯1.2、復(fù)制如何工作從高層來看,復(fù)制分成三步:(1)???master將改變記錄到二進制日志(binarylog)中(這些記錄叫做二進制日志事件,binarylogevents);(2)???slave將master的binarylogevents拷貝到它的中

2、繼日志(relaylog);(3)???slave重做中繼日志中的事件,將改變反映它自己的數(shù)據(jù)。下圖描述了這一過程:?該過程的第一部分就是master記錄二進制日志。在每個事務(wù)更新數(shù)據(jù)完成之前,master在二日志記錄這些改變。MySQL將事務(wù)串行的寫入二進制日志,即使事務(wù)中的語句都是交叉執(zhí)行的。在事件寫入二進制日志完成后,master通知存儲引擎提交事務(wù)。下一步就是slave將master的binarylog拷貝到它自己的中繼日志。首先,slave開始一個工作線程——I/O線程。I/O線程在master上打開一

3、個普通的連接,然后開始binlogdumpprocess。Binlogdumpprocess從master的二進制日志中讀取事件,如果已經(jīng)跟上master,它會睡眠并等待master產(chǎn)生新的事件。I/O線程將這些事件寫入中繼日志。SQLslavethread處理該過程的最后一步。SQL線程從中繼日志讀取事件,更新slave的數(shù)據(jù),使其與master中的數(shù)據(jù)一致。只要該線程與I/O線程保持一致,中繼日志通常會位于OS的緩存中,所以中繼日志的開銷很小。此外,在master中也有一個工作線程:和其它MySQL的連接一樣

4、,slave在master中打開一個連接也會使得master開始一個線程。復(fù)制過程有一個很重要的限制——復(fù)制在slave上是串行化的,也就是說master上的并行更新操作不能在slave上并行操作。?2、體驗MySQL復(fù)制MySQL開始復(fù)制是很簡單的過程,不過,根據(jù)特定的應(yīng)用場景,都會在基本的步驟上有一些變化。最簡單的場景就是一個新安裝的master和slave,從高層來看,整個過程如下:(1)在每個服務(wù)器上創(chuàng)建一個復(fù)制帳號;(2)配置master和slave;(3)Slave連接master開始復(fù)制。2.1、創(chuàng)

5、建復(fù)制帳號每個slave使用標準的MySQL用戶名和密碼連接master。進行復(fù)制操作的用戶會授予REPLICATIONSLAVE權(quán)限。用戶名的密碼都會存儲在文本文件master.info中。假如,你想創(chuàng)建repl用戶,如下:mysql>GRANTREPLICATIONSLAVE,REPLICATIONCLIENTON*.*->TOrepl@'192.168.0.%'IDENTIFIEDBY'p4ssword';2.2、配置master接下來對master進行配置,包括打開二進制日志,指定唯一的servrID。例

6、如,在配置文件加入如下值:[mysqld]log-bin=mysql-binserver-id=10重啟master,運行SHOWMASTERSTATUS,輸出如下:??2.3、配置slaveSlave的配置與master類似,你同樣需要重啟slave的MySQL。如下:log_bin??????????=mysql-binserver_id????????=2relay_log????????=mysql-relay-binlog_slave_updates=1read_only????????=1server

7、_id是必須的,而且唯一。slave沒有必要開啟二進制日志,但是在一些情況下,必須設(shè)置,例如,如果slave為其它slave的master,必須設(shè)置bin_log。在這里,我們開啟了二進制日志,而且顯示的命名(默認名稱為hostname,但是,如果hostname改變則會出現(xiàn)問題)。relay_log配置中繼日志,log_slave_updates表示slave將復(fù)制事件寫進自己的二進制日志(后面會看到它的用處)。有些人開啟了slave的二進制日志,卻沒有設(shè)置log_slave_updates,然后查看slave

8、的數(shù)據(jù)是否改變,這是一種錯誤的配置。所以,盡量使用read_only,它防止改變數(shù)據(jù)(除了特殊的線程)。但是,read_only并是很實用,特別是那些需要在slave上創(chuàng)建表的應(yīng)用。?2.4、啟動slave接下來就是讓slave連接master,并開始重做master二進制日志中的事件。你不應(yīng)該用配置文件進行該操作,而應(yīng)該使用CHANGEMASTERTO語句,該語句可以完

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。