MySQL數(shù)據(jù)庫如何實現(xiàn)雙機熱備的配置成功方案_第1頁
MySQL數(shù)據(jù)庫如何實現(xiàn)雙機熱備的配置成功方案_第2頁
MySQL數(shù)據(jù)庫如何實現(xiàn)雙機熱備的配置成功方案_第3頁
MySQL數(shù)據(jù)庫如何實現(xiàn)雙機熱備的配置成功方案_第4頁
MySQL數(shù)據(jù)庫如何實現(xiàn)雙機熱備的配置成功方案_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、搞定mysql雙機備份為了數(shù)據(jù)的安全,客戶有兩臺機器作為互相備份,當(dāng)一臺機器出現(xiàn)故障時,自動切換到另外一臺服務(wù)器。大部分的軟件我們是通過lifekeeper來實現(xiàn)的,但是mysql的雙機備份在lifekeeper里沒有實現(xiàn),看來,只有我手動來實現(xiàn)mysql的雙機備份了哦。先說說環(huán)境quote:操作系統(tǒng):windows 2003 servermysql版本:v4.1互備數(shù)據(jù)庫:bbsserver1:server2:其實,mysql的雙機備份有一個很簡單的第三方軟件可以實現(xiàn),那就是sqlyog (/),他有一個功能叫sja(s

2、qlyog job agent ,/sqlyog/sja.html),可以輕松實現(xiàn),但是卻有一個不足,那就是mysql表里必須有一個primary key,如果沒有,則此表不能用sja來實現(xiàn)。我查看了一下,我們需要互備的數(shù)據(jù)中就有兩三個表沒有primary key,看來要放棄這個方法了。第二種方法就是用mysql自身的replication機制來實現(xiàn)了。據(jù)說mysql 3.23以上的版本都有此功能。下面來說說具體的步驟。1)先在每臺服務(wù)器上各安裝好mysql,保證正常運行,在mysql的安裝目錄里各建立一個目錄logs,如f:mysql4.1logs,供

3、后面步驟使用。2)將要互備的初始化數(shù)據(jù)在每臺服務(wù)器上各導(dǎo)入一份,且保持兩臺服務(wù)器要互備的初始化數(shù)據(jù)一致。這個步驟很重要。3)在每個server上各增加一個備份用戶,且賦予一定的權(quán)限。3.1)在server1上quote:grant replication slave,reload,super on *.* to backup identified by 123456;之后立即在server2上用如下命令來測試backup用戶是否能連接上server1quote:f:mysql4.1binmysql.exe -h -ubackup -p123456如果能連接上,表

4、明互備帳戶增加ok!3.2)重復(fù)上述動作,在server2上quote:grant replication slave,reload,super on *.* to backup identified by 123456;之后立即在server1上用如下命令來測試backup用戶是否能連接上server2quote:f:mysql4.1binmysql.exe -h -ubackup -p123456如果能連接上,表明互備帳戶增加ok!4)修改mysql配置文件,增加互備參數(shù)配置。4.1)停掉server1的mysql,修改my.ini,在mysqld區(qū)域內(nèi)增加

5、如下信息:quote:#mysql的雙機備份,by longware,2006-05-26server-id=1log-bin=f:/mysql4.1/logs/syncmaster-host=master-user=backupmaster-password=123456master-port=3306master-connect-retry=60replicate-do-db=bbs#保存并關(guān)閉my.ini文件,重啟mysql服務(wù),觀察logs目錄下面有沒有類似sync.000001、sync.index的文件生成,觀察data目錄里有沒有*.info、*-relay-bi

6、n.000001、*-relay-bin.index的文件生成,如果兩個目錄都有,說明互備參數(shù)配置正確。4.2)停掉server2的mysql,修改my.ini,在mysqld區(qū)域內(nèi)增加如下信息:quote:#mysql的雙機備份,by longware,2006-05-26server-id=2log-bin=f:/mysql4.1/logs/syncmaster-host=master-user=backupmaster-password=123456master-port=3306master-connect-retry=60replicate-do-db=bbs#保存并

7、關(guān)閉my.ini文件,重啟mysql服務(wù),觀察logs目錄下面有沒有類似sync.000001、sync.index的文件生成,觀察data目錄里有沒有*.info、*-relay-bin.000001、*-relay-bin.index的文件生成,如果兩個目錄都有,說明互備參數(shù)配置正確。4.3)如果沒有看到上步中說的文件,說明配置文件沒有起作用,請檢查mysql配置文件的位置,很可能在c:windows下面,也可能在c:documents and settingsadministratorwindows下面,還可能在f:mysql4.1下面,具體要看您的mysql服務(wù)的啟動參數(shù),您可以去wi

8、ndows的“開始控制面板管理工具服務(wù)”中,雙擊mysql的服務(wù)名稱,查看”可執(zhí)行文件的路徑“項的值,如果是quote:f:/mysql4.1/bin/mysqld-nt.exe則my.ini可能就在c:windows下面,如果是quote:f:mysql4.1binmysqld-nt -defaults-file=f:mysql4.1my.ini mysql則my.ini就在f:mysql4.1下面。我的一個朋友就因為沒有搞清楚my.ini的位置,折騰了大半天也每搞定。5)分別停掉兩臺機器的mysql服務(wù),再次確保兩臺機器的要互備的初始化數(shù)據(jù)一致,刪除logs下面的文件,刪除data下面的非

9、目錄文件,確保網(wǎng)絡(luò)暢通,再分別啟動server1和server2的mysql服務(wù),mysql雙機互備成功了。6)互備測試,在server1里的bbs數(shù)據(jù)庫里建一張表,插幾條數(shù)據(jù),再登陸到server2里,看看數(shù)據(jù)是否存在,存在表明ok。7)注意:兩臺機器的mysql互備的初始化數(shù)據(jù)要相同。如果要單向備份,將其中的一臺服務(wù)器的my.ini的互備配置注釋掉重啟即可。8)官方參考資料:/doc/refman/5.1/en/ndbcluster.html/doc/refman/ . er-replication.html日志抓

10、取和數(shù)據(jù)載入(replicationslave, replicationclient )mysql手冊版本 5.0.20-mysql同步(二)發(fā)布于:2006-8-15 17:10:51 已被閱讀: 247 6.4 設(shè)置同步 以下描述了如何快速設(shè)置mysql同步服務(wù)器。假設(shè)你打算同步全部的數(shù)據(jù)庫,并且之前沒有設(shè)置過。需要關(guān)閉master服務(wù)器以完成全部的步驟。 本章描述的過程可以用于一個slave的情況,也可以用于多個slave的情況。 這只是一個最直接設(shè)置slave的辦法,并不是只有一個。例如,已經(jīng)有了master的數(shù)據(jù)快照(snapshot),master已經(jīng)設(shè)置了服務(wù)器編號id(serv

11、er_id)并且啟用了二進制日志,這就無需關(guān)閉master或者阻止在master上更新數(shù)據(jù)了。詳情請看6.9 replication faq。 想要完全掌握mysql同步設(shè)置,最好把本章全部讀完,并且測試在14.6.1 sql statements for controlling master servers和14.6.2 sql statements for controlling slave servers中提到的全部語句。而且要熟悉各種同步設(shè)置選項,詳情請看6.8 replication startup options。 注意,這個過程以及后面一些同步sql語句需要有 super 權(quán)限。

12、mysql 4.0.2以前,則是 process 權(quán)限。 請確認(rèn)master和slave上都安裝了較近的mysql版本,且這些版本之間要能兼容,在6.5 replication compatibility between mysql versions中列出來了。請確認(rèn)在最新版本中還有存在問題,否則不要報告該bug。 在master上新加一個帳戶,slave才能用它來連接。這個帳戶必須授予 replication slave 權(quán)限。如果這個帳戶只用于同步(推薦這么做),那就沒必要授予其他權(quán)限了。設(shè)定你的域是 ,想要授權(quán)一個帳戶 repl 使用密碼 slavepass,允許

13、它可以在域里的任何主機連接到master上。用 grant 語句來創(chuàng)建帳戶: mysql grant replication slave on *.* - to repl%. identified by slavepass; 在mysql 4.0.2以前,用 file 權(quán)限來代替 replication slave: mysql grant file on *.* - to repl%. identified by slavepass; 如果打算在slave上執(zhí)行 load table from master 或 load data from m

14、aster 語句,那么必須給該帳戶授予附加權(quán)限: 授予全局 super 和 reload 權(quán)限。 授予對想要加載的所有表上的 select 權(quán)限。在master上任何沒有 select 權(quán)限的表都會被 load data from master 略過。 如果只用到 myisam 表,執(zhí)行 flush tables with read lock 語句刷新所有表并且阻止其他寫入: mysql flush tables with read lock; 不要退出執(zhí)行 flush tables 語句的客戶端,以保持讀鎖有效(如果退出了,讀鎖就釋放了)。然后從master上取得數(shù)據(jù)快照。比較簡單的辦法就是

15、把數(shù)據(jù)目錄打包壓縮。例如,unix上的 tar, powerarchiver, winrar, winzip,或windows上的類似程序。想要用 tar 來創(chuàng)建一個壓縮包,包括所有的數(shù)據(jù)庫,只需執(zhí)行以下命令(把目錄改成你的真實路徑): shell tar -cvf /tmp/mysql-snapshot.tar . 如果只想打包一個數(shù)據(jù)庫 this_db,只需執(zhí)行命令: shell tar -cvf /tmp/mysql-snapshot.tar ./this_db 然后把這個文件拷貝到slave的 /tmp 目錄下。在slave上,執(zhí)行以下命令解開壓縮包(把目錄改成你的真實路徑): she

16、ll tar -xvf /tmp/mysql-snapshot.tar 可能不需要同步 mysql 數(shù)據(jù)庫,因為在slave上的權(quán)限表和master不一樣。這時,解開壓縮包的時候要排除它。同時在壓縮包中也不要包含任何日志文件,或者 或 文件。當(dāng)在master上的 flush tables with read lock 語句還生效時,在master上讀取當(dāng)前二進制文件的文件名及偏移位置: mysql show master status; +-+-+-+-+ | file | position | binlog_do_db | binlog_

17、ignore_db | +-+-+-+-+ | mysql-bin.003 | 73 | test | manual,mysql | +-+-+-+-+file 字段顯示了二進制日志文件名,position 字段顯示了日志偏移位置。在這個例子中,日志文件是 mysql-bin.003,偏移位置是 73。記下這些值,在后面設(shè)置slave的時候就需要用到它們了。它們表示了slave要從master的哪個偏移位置開始處理更新操作。取得快照和記錄下日志名及偏移位置后,就可以讓master釋放讀鎖了: mysql unlock tables; 如果用到 innodb 表,那么最好使用 innodb ho

18、t backup 工具。它無需在master上請求任何鎖就能做到快照的一致性,并且在后面中在slave上要用到的快照中已經(jīng)記錄了日志文件名以及偏移位置。innodb hot backup 是費免費(商業(yè)的)的附加工具,它沒有包含在mysql發(fā)布包中。訪問 innodb hot backup 的主頁 /manual.php 查看更多詳細(xì)信息。除去 innodb hot backup 的另一個最快的辦法就是關(guān)閉master服務(wù)器,拷貝 innodb 數(shù)據(jù)文件,日志文件,以及表結(jié)構(gòu)定義文件(.frm 文件)。想要記錄當(dāng)前日志文件及偏移位置,需要在master關(guān)

19、閉前執(zhí)行如下可語句: mysql flush tables with read lock; mysql show master status; 盡快記下 show master status 顯示結(jié)果中的日志文件及偏移位置。然后,在不解鎖的情況下關(guān)閉master,確保master上的快照和記錄的結(jié)果一致: shell mysqladmin -u root shutdown 還有一個方法可以同時用于 myisam 和 innodb 表,這就是在master上作sql轉(zhuǎn)儲而無需如上所述備份二進制日志。在master上運行 mysqldump -master-data 命令,然后把結(jié)果文件轉(zhuǎn)儲到sl

20、ave上。不過,這比拷貝二進制日志慢點。如果master在以前沒有啟用 -log-bin 選項,那么執(zhí)行 show master status 語句的結(jié)果中的文件名及偏移位置值為空了,那么后面在slave上指定的參數(shù)值就是空字符串() 和 4了。 確認(rèn)master上的 f 文件 mysqld 區(qū)間有 log-bin 選項。這個區(qū)間還必須有 server-id=master_id 選項,的值必須是 1 到 232-1 之間的正整數(shù)。例如: mysqld log-bin server-id=1 如果這些配置選項不存在,那么就加上并且重啟master。 關(guān)閉要做slave的服務(wù)器,在 my

21、.cnf 文件中增加如下選項: mysqld server-id=slave_id slave_id 的值和 master_id 類似,是 1 到 232-1 之間的正整數(shù)。另外,這個id必須不能和master的id一樣。例如: mysqld server-id=2 如果有多個slave,那么每個slave都必須要有一個唯一的 server-id,它的值不能和master以及其其他slave的值一樣。可以把 server-id 想象成為ip地址:這些id標(biāo)識了整個同步組合中的每個服務(wù)器。如果沒有指定 server-id 的值,如果也沒定義 master-host,那么它的值就為1,否則為2。注

22、意,如果沒有設(shè)定 server-id,那么master就會拒絕所有的slave連接,同時slave也會拒絕連接到master上。因此,省略配置 server-id 只對備份二進制日志有利。 如果已經(jīng)備份了master上的數(shù)據(jù)(直接打包壓縮的方式),那么在slave啟動之前把它們拷貝過去。要確保文件的權(quán)限屬主等設(shè)置沒問題。mysql運行的用戶必須對這些文件有讀寫權(quán)限,就跟在master上一樣。如果是用 mysqldump 備份的,那么可以直接啟動salve(直接跳到下一步)。 啟動slave,如果它之前已經(jīng)運行同步了,那么在啟動slave的時候使用 -skip-slave-start 選項使之不

23、會立刻去連接master。最好也使用 -log-warnings 選項(從 mysql 4.0.19 和 4.1.2 開始就是默認(rèn)啟用了)來啟動slave,以知道發(fā)生問題時的更詳細(xì)的信息(例如,網(wǎng)絡(luò)或者連接問題)。從開始mysql 4.0.21 和 4.1.3,異常中止的連接不再記錄到錯誤日志中,除非 -log-warnings 選項的值大于1。 如果在master上用 mysqldump 備份數(shù)據(jù)的話,把文件導(dǎo)入slave中: shell mysql -u root -p change master to - master_host=master_host_name, - master_user=replication_user_name, - master_password=replication_password, - master_log_file=recorded_log_file_name, - m

溫馨提示

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

評論

0/150

提交評論