天天看點

17.1.1.9 Introducing Additional Slaves to an Existing Replication Environment

17.1.1.9 Introducing Additional Slaves to an Existing Replication Environment 介紹在現有的複制環境中引入額外的

slaves

為存在的複制配置 增加另一個slave,

你可以做在不需要停止master的情況下,代替的是,

設定一個新的slave通過現有的slave的拷貝,除了你配置新的slave 使用不同的server-id值。

複制一個已經存在的slave:

關閉已經存在的slave:

shell> mysqladmin shutdown

從現有的slave 拷貝資料目錄到新的slave,你可以做這個通過建立一個壓縮包使用Winzip或者執行一個

直接的copy 使用cp 或者rsync 。確定你拷貝了log files和relay log files:

一個常見的問題是當增加一個新的複制slaves 是新的slave遇到一系列的警告和錯誤如下:

071118 16:44:10 [Warning] Neither –relay-log nor –relay-log-index were used; so

replication may break when this MySQL server acts as a slave and has his hostname

changed!! Please use ‘–relay-log=new_slave_hostname-relay-bin’ to avoid this problem.

071118 16:44:10 [ERROR] Failed to open the relay log ‘./old_slave_hostname-relay-bin.003525’

(relay_log_pos 22940879)

071118 16:44:10 [ERROR] Could not find target log during relay log initialization

071118 16:44:10 [ERROR] Failed to initialize the master info structure

這是由于,如果–relay-log 選項沒有被指定, relay log files包含host name 作為它們的名字。

(這也是真實的 relay log index 檔案 如果–relay-log-index 選項沒有被使用)

為了避免這個問題,使用相同的值 對于–relay-log 在新的slave和存在的slave相同的值。

(如果這個選項沒有在存在的slave上設定,使用existing_slave_hostname-relay-bin.)

如果這是不可行的, 複制存在的slave的relay log index 檔案到新的slave,設定–relay-log-index 選項

在新的slave上來比對 存在的slave上的名字。(如果這個選項沒有被設定在存在的slave上, 使用existing_slave_hostname-

relay-bin.index.)

作為一種選擇,如果你已經嘗試啟動新的slave,遇到錯誤想先前描述的—執行下面的步驟:

如果你還沒這麼做,執行STOP SLAVE 在新的slave上。

如果你已經再次啟動了存在的slave,執行STOP SLAVE 在存在的slave上

複制存在的slave的relay log index file 到新的slave的relay log index file ,確定覆寫任何檔案中的任何内容

繼續在本節中的其餘步驟

複制master info 和relay log info 資訊庫(see Section 17.2.2, “Replication Relay and Status Logs”)

從已經存在的slave到新的slave.

這些持有目前master的binary log 和slave的relay log 坐标。

啟動存在的slave:

在新的slave上,編輯配置和給一個新的slave 一個唯一的server-id

啟動新的slave