準備 NDB Cluster 以進行複寫包含以下步驟:
檢查所有 MySQL 伺服器的版本相容性 (請參閱第 25.7.2 節,「NDB Cluster 複寫的一般要求」)。
使用以下兩個 SQL 語句,在來源叢集上建立具有適當權限的複寫帳戶:
mysqlS> CREATE USER 'replica_user'@'replica_host' -> IDENTIFIED BY 'replica_password'; mysqlS> GRANT REPLICATION SLAVE ON *.* -> TO 'replica_user'@'replica_host';
在先前的語句中,
replica_user
是複寫帳戶的使用者名稱,replica_host
是複本的主機名稱或 IP 位址,而replica_password
是指派給此帳戶的密碼。例如,若要建立名為
myreplica
的複寫使用者帳戶,並從名為replica-host
的主機登入,並使用密碼53cr37
,請使用以下CREATE USER
和GRANT
語句:mysqlS> CREATE USER 'myreplica'@'replica-host' -> IDENTIFIED BY '53cr37'; mysqlS> GRANT REPLICATION SLAVE ON *.* -> TO 'myreplica'@'replica-host';
基於安全考量,最好為複寫帳戶使用一個獨一無二且不作其他用途的使用者帳戶。
設定複本以使用來源。使用 mysql 用戶端,可以使用
CHANGE REPLICATION SOURCE TO
語句完成此操作。mysqlR> CHANGE REPLICATION SOURCE TO -> SOURCE_HOST='source_host', -> SOURCE_PORT=source_port, -> SOURCE_USER='replica_user', -> SOURCE_PASSWORD='replica_password';
在先前的語句中,
source_host
是複寫來源的主機名稱或 IP 位址,source_port
是複本連線到來源時要使用的連接埠,replica_user
是在來源上為複本設定的使用者名稱,而replica_password
是在上一個步驟中為該使用者帳戶設定的密碼。例如,若要告訴複本使用主機名稱為
rep-source
的 MySQL 伺服器,並使用在上一個步驟中建立的複寫帳戶,請使用以下語句:mysqlR> CHANGE REPLICATION SOURCE TO -> SOURCE_HOST='rep-source', -> SOURCE_PORT=3306, -> SOURCE_USER='myreplica', -> SOURCE_PASSWORD='53cr37';
如需可以使用此語句的選項的完整清單,請參閱第 15.4.2.2 節,「CHANGE REPLICATION SOURCE TO 語句」。
若要提供複寫備份功能,您還需要在啟動複寫程序之前,將
--ndb-connectstring
選項新增至複本的my.cnf
檔案。詳細資訊請參閱第 25.7.9 節,「使用 NDB Cluster 複寫進行 NDB Cluster 備份」。如需可以在複本的
my.cnf
中設定的其他選項,請參閱第 19.1.6 節,「複寫和二進位記錄選項與變數」。如果來源叢集已在使用中,您可以建立來源的備份,並將其載入複本,以減少複本與來源同步所需的時間。如果複本也正在執行 NDB Cluster,可以使用第 25.7.9 節,「使用 NDB Cluster 複寫進行 NDB Cluster 備份」中描述的備份與還原程序完成此操作。
ndb-connectstring=management_host[:port]
如果您在複本上 不 使用 NDB Cluster,可以使用來源上的此命令建立備份:
shellS> mysqldump --source-data=1
然後將產生的資料傾印複製到複本,將其匯入複本。在此之後,您可以使用 mysql 用戶端將資料從傾印檔案匯入複本資料庫,如下所示,其中
dump_file
是使用來源上的 mysqldump 產生的檔案名稱,而db_name
是要複寫的資料庫名稱:shellR> mysql -u root -p db_name < dump_file
如需 mysqldump 使用選項的完整清單,請參閱第 6.5.4 節,「mysqldump — 資料庫備份程式」。
注意如果您以這種方式將資料複製到複本,請確保在載入所有資料之前,停止複本嘗試連線到來源以開始複寫。您可以透過以
--skip-replica-start
啟動複本來執行此操作。資料載入完成後,請依照接下來兩節中概述的其他步驟。請確保每個作為複寫來源的 MySQL 伺服器都已指派唯一的伺服器 ID,並使用以列為基礎的格式啟用二進位記錄。(請參閱第 19.2.1 節,「複寫格式」。)此外,我們強烈建議啟用
replica_allow_batching
系統變數 (預設值)。使用
--ndb-replica-batch-size
設定複本上用於寫入的批次大小,而不是--ndb-batch-size
,並使用--ndb-replica-blob-write-batch-bytes
而不是--ndb-blob-write-batch-bytes
來判斷複寫應用程式用於寫入 blob 資料的批次大小。所有這些選項都可以在來源伺服器的my.cnf
檔案中設定,或在啟動來源 mysqld 程序時在命令列上設定。詳細資訊請參閱第 25.7.6 節,「啟動 NDB Cluster 複寫 (單一複寫通道)」。