Mysql服務器同步(replication)設置_第1頁
Mysql服務器同步(replication)設置_第2頁
Mysql服務器同步(replication)設置_第3頁
Mysql服務器同步(replication)設置_第4頁
Mysql服務器同步(replication)設置_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、mysql 服務器同步( replication)設置mysql 支持單向、異步復制,復制過程中一個服務器充當主服務器,而一個或多個其它服務器充當從服務器。主服務器將更新寫入二進制日志文件,并維護文件的一個索引以跟蹤日志循環(huán)。這些日志可以記錄發(fā)送到從服務器的更新。當一個從服務器連接主服務器時,它通知主服務器從服務器在日志中讀取的最后一次成功更新的位置。從服務器接收從那時起發(fā)生的任何更新,然后封鎖并等待主服務器通知新的更新。環(huán)境介紹:本測試系統(tǒng)平臺為window7. 各個機器的mysql 版本均為5.1.38,其他版本沒有測試。一般只要是5.1.x 版本,且每臺機器版本一致的情況下都適用。一、

2、主從備份顧名思義,就是一臺機器作為主服務器,另外一臺或多臺作為從服務器。配置過程如下:1.在主服務器找到mysql安裝目錄下(如:c:program filesmysqlmysql server 5.1) my.ini文件,在文件末尾添加如下代碼:server-id=1 log-bin=c:mysqlback binlog-do-db=test log-bin=c:mysqlback #這里的mysqlback 是日志文件名,是路徑,在正常運行時,會在c 盤下產(chǎn)生mysqlback.000001、mysqlback.000002 等日志文件。如果直接設置為log-bin=mysqlback,則

3、會在 mysql 的 data 目錄下產(chǎn)生這些mysqlback.000001、mysqlback.000002 等日志文件。# binlog-do-db=test1 #test 為需要同步的數(shù)據(jù)庫名。如果需要同步多個數(shù)據(jù)庫,多次使用這條語句即可2.從服務器找到my.ini 文件,在文件末尾添加如下代碼:server-id=2 master-host=04 master-user=user1 master-password=user1 master-port=3306 master-connect-retry=60 master-host=04 #主

4、復制服務器的主機名或ip地址。如果沒有給出該選項,從服務器線程不啟動。master-port=3306 #如果 mysql 服務使用的默認端口3306,就可以省略此項master-connect-retry=60 #在主服務器宕機或連接丟失的情況下,從服務器線程重新嘗試連接主服務器之前睡眠的秒數(shù)。如果未設置,默認值為60。replicate-do-db=test #告訴從服務器限制默認數(shù)據(jù)庫(由 use所選擇 )為 test的語句的復制。 要指定多個數(shù)據(jù)庫,應多次使用該選項,每個數(shù)據(jù)庫使用一次。slave-skip-errors=all #忽略錯誤繼續(xù)同步3.在主服務器上為從服務器打開權限:g

5、rant replication slave on *.* to user1 1 identified by user1;4.重啟主從服務器的mysql 服務5.使主從服務器的數(shù)據(jù)庫保持一致根據(jù)數(shù)據(jù)庫使用的引擎不同有些區(qū)別:myisam(本次測試采用的引擎):1) 在鎖定主服務器數(shù)據(jù)庫的情況下,可以直接將data 下面的數(shù)據(jù)庫文件復制到從服務器data 下面,并重啟從服務器(如果是直接添加新的數(shù)據(jù)庫不需要重啟)2) 在從服務器的mysql 命令行內(nèi)輸入如下命令:load data from master 需要說明的是:你需要授予該賬戶其它權限:授予賬戶super 和 re

6、load全局權限。為所有想要裝載的表授予select 權限。任何該賬戶不能select 的主服務器上的表被load data from master 忽略掉。innodb:1) myisam 的第二種辦法可以2) 獲得全局讀鎖定,然后開始innodb 表的文件系統(tǒng)快照。創(chuàng)建快照最簡單的途徑是使用歸檔程序?qū)χ鞣掌魃系臄?shù)據(jù)目錄中的數(shù)據(jù)庫進行二進制備份。(這部分沒有具體測試,就不說了,摘自mysql 參考手冊第6 章 mysql 中的負責6.4 如何設置復制)6.查看結果主服務器:一般情況下第一次使用命令show master status 查看主服務器狀態(tài)file 是 mysqlback.000

7、001,position 是 106. 從服務器:說明:在第一次設置完成master,slave 之后,如果要修改slave 的 my.ini 里 master 的設置必須先刪除data 下面的 文件,重啟服務才能生效。否則服務器會以中的信息為準?;蛘吡硗庖粋€辦法就是直接在mysql 命令行中使用chang master to 命令。二、主主同步主主同步是指ab 同時互為master 和 slave,其操作就是在主從同步的基礎上在反過來再設置一次,將從服務器作為主服務器,主服務器作為從服務器。添加代碼如下:a(04 )serv

8、er-id=1 log-bin=mysqlback binlog-do-db=test master-host=1 master-user=user1 master-password=user1 master-port=3306 master-connect-retry=60 replicate-do-db=test slave-skip-errors=all b(1)server-id=2 log-bin=mysqlback binlog-do-db=test master-host=04 master-user=user2

9、master-password=user2 master-port=3306 master-connect-retry=60 replicate-do-db=test slave-skip-errors=all 注:如果有第三臺mysql 服務器 c 同步 ab其中任意一臺服務器(設為a) ,只要在ab的配置中加上log-slave-updates,一旦 a 服務器宕機, b 會接管 a 作為 c 的 master 的角色。但是在接下來要講的環(huán)形同步中,一旦其中一臺服務器d 宕機,該服務器d 的 master 并不會接管 d 的 slave。為什么?還沒查清楚,要是有哪位大蝦知道指點下哈。三、

10、三個或多個服務器同步三臺服務器a(04 ) 、b( 1) 、c(17 ) ,可以設置為一個環(huán)形 a-b-c-a 。 即三個服務器都同時作為master 和 slave, a 為 b的 master, b為 c的 master,c再為 a 的 master。三個服務器的配置分別為:a(04 ) :server-id=1 log-bin=c:mysqlback binlog-do-db=test master-host=17 master-user=user1 master-passwor

11、d=user1 master-port=3306 master-connect-retry=60 replicate-do-db=test log-slave-updates slave-skip-errors=all sync_binlog=1 b(1) :server-id=1 log-bin=c:mysqlback binlog-do-db=test master-host=04 master-user=user2 master-password=user2 master-port=3306 master-connect-retry=60 re

12、plicate-do-db=test log-slave-updates slave-skip-errors=all sync_binlog=1 c(17 ) :server-id=1 log-bin=c:mysqlback binlog-do-db=test master-host=1 master-user=user3 master-password=user3 master-port=5306 master-connect-retry=60 replicate-do-db=test log-slave-updates slave-skip-er

13、rors=all sync_binlog=1 其中 user1, user2,user3 等需要在不同的服務器上為不同的服務器打開相應的權限:a:mysql grant replication slave on *.* to user1 192.168.1. 117identified by user1 ;b:mysql grant replication slave on *.* to user2 192.168.1. 104identified by user2 ;c:mysql grant replication slave on *.* to user3 192.168.1. 11id

14、entified by user3;log-slave-updates #通常情況,從服務器從主服務器接收到的更新不記入它的二進制日志。該選項告訴從服務器將其sql 線程執(zhí)行的更新記入到從服務器自己的二進制日志。為了使該選項生效,還必須用 -logs-bin 選項啟動從服務器以啟用二進制日志。#在這里此項必須設置,要不然從上一臺服務器更新過來的信息不能傳遞到下一臺服務器。sync_binlog=1 #如果為正, 當每個 sync_binlogth 寫入該二進制日志后,mysql服務器將它的二進制日志同步到硬盤上 (fdatasync()。請注意如果在autocommit 模式,每執(zhí)行一個語句向

15、二進制日志寫入一次,否則每個事務寫入一次。默認值是0,不與硬盤同步。值為1 是最安全的選擇,因為崩潰時,你最多丟掉二進制日志中的一個語句/事務;但是,這是最慢的選擇(除非硬盤有電池備份緩存,從而使同步工作較快)。多個服務器的同步就只是在環(huán)中多添加幾個節(jié)點。在環(huán)形的同步中,有一個很大的缺陷,就是如果其中一臺服務器e宕機, 那么其他的服務器就只能單項同步了。 我查了很久沒有找到如何配置能是其他的服務器自動接管宕機的服務器的 master 功能。知道的大蝦還請指點哈。但是我找到了手動同步所有服務器的辦法。1) 如果能盡快的將宕機的服務器e再啟動起來,不需要做任何操作,一切都會正常的運行起來。2) 如

16、果不能做到1) ,那么就在e的 slave 服務器上面進行如下操作:打開 mysql 命令行amysql slave stop;#關閉同步操作bmysql change master to mysql master_host=host-name, mysql master_user=user4, mysql master_password=user4, mysql master_log_file=mysqlback.000027, mysql master_log_pos=2531;# 修改 master 信息#其中 host-name 為 e的 master 。mysqlback.000027、2531 為 e宕機時其data 下面 文件中保存的當前更新到的日志文件以及讀取到日志文件中的位置。cslave start;#打開同步操作其原理是: e的 master 一直處于運行中,其日志

溫馨提示

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

評論

0/150

提交評論