準備 NDB 叢集進行複寫包含以下步驟
檢查所有 MySQL 伺服器的版本相容性(請參閱第 25.7.2 節,「NDB 叢集複寫的通用需求」)。
使用以下兩個 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 叢集複寫的 NDB 叢集備份」。如需可在
my.cnf
中為複寫副本設定的其他選項,請參閱第 19.1.6 節,「複寫和二進位日誌選項與變數」。如果來源叢集已在使用中,您可以建立來源的備份,並將其載入到複寫副本上,以減少複寫副本與來源同步所需的時間。如果複寫副本也正在執行 NDB 叢集,則可以使用第 25.7.9 節,「使用 NDB 叢集複寫的 NDB 叢集備份」中描述的備份和還原程序來完成此操作。
ndb-connectstring=management_host[:port]
如果您在複寫副本上未使用 NDB 叢集,您可以在來源上使用此命令建立備份
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 叢集複寫(單一複寫通道)」。