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),請進行舉報或認領(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)限。 請確認master和slave上都安裝了較近的mysql版本,且這些版本之間要能兼容,在6.5 replication compatibility between mysql versions中列出來了。請確認在最新版本中還有存在問題,否則不要報告該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 查看更多詳細信息。除去 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了。 確認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標識了整個同步組合中的每個服務(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 開始就是默認啟用了)來啟動slave,以知道發(fā)生問題時的更詳細的信息(例如,網(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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論