文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  使用 GTID 設定複寫

19.1.3.4 使用 GTID 設定複寫

本節說明如何在 MySQL 8.4 中設定和啟動基於 GTID 的複寫的程序。這是一個冷啟動程序,假設您是第一次啟動來源伺服器,或是可以停止它;有關從執行中的來源伺服器使用 GTID 佈建複本的資訊,請參閱第 19.1.3.5 節「使用 GTID 進行故障轉移和擴展」。有關在線上伺服器上變更 GTID 模式的資訊,請參閱第 19.1.4 節「在線上伺服器上變更 GTID 模式」

這個啟動程序中最簡單的 GTID 複寫拓撲(包含一個來源和一個複本)的關鍵步驟如下

  1. 如果複寫已在執行,請透過將兩個伺服器都設為唯讀來同步它們。

  2. 停止兩個伺服器。

  3. 重新啟動兩個伺服器,並啟用 GTID 和設定正確的選項。

    稍後在本節的範例中將討論要如上所述啟動伺服器所需的 mysqld 選項。

  4. 指示複本使用來源作為複寫資料來源,並使用自動定位。稍後在本節的範例中將說明完成此步驟所需的 SQL 陳述式。

  5. 進行新的備份。包含沒有 GTID 的交易的二進位日誌無法在啟用 GTID 的伺服器上使用,因此在此點之前進行的備份無法與您的新組態搭配使用。

  6. 啟動複本,然後停用兩個伺服器上的唯讀模式,以便它們可以接受更新。

在以下範例中,兩個伺服器已使用 MySQL 的基於二進位日誌位置的複製協定作為來源和複本執行。如果您是從新的伺服器開始,請參閱第 19.1.2.3 節「建立用於複製的使用者」,以取得關於新增特定使用者用於複製連線的資訊;以及第 19.1.2.1 節「設定複製來源組態」,以取得關於設定 server_id 變數的資訊。以下範例展示如何在伺服器的選項檔案中儲存 mysqld 啟動選項,請參閱第 6.2.2.2 節「使用選項檔案」以取得更多資訊。或者,您也可以在執行 mysqld 時使用啟動選項。

以下大多數步驟都需要使用 MySQL root 帳戶或另一個具有 SUPER 權限的 MySQL 使用者帳戶。mysqladmin shutdown 需要 SUPER 權限或 SHUTDOWN 權限。

步驟 1:同步伺服器。此步驟僅在使用已在執行複製但未使用 GTID 的伺服器時才需要。對於新的伺服器,請直接跳至步驟 3。透過在每個伺服器上發出以下指令,將 read_only 系統變數設定為 ON,使伺服器進入唯讀模式。

mysql> SET @@GLOBAL.read_only = ON;

等待所有正在進行的交易提交或回滾。然後,讓複本趕上來源。請務必確保複本在繼續之前已處理所有更新

如果您將二進位日誌用於複製以外的任何用途,例如執行時間點備份和還原,請等待直到您不再需要包含不帶 GTID 的交易的舊二進位日誌。理想情況下,請等待伺服器清除所有二進位日誌,並等待任何現有備份過期。

重要

務必了解,包含不帶 GTID 的交易的日誌不能用於啟用 GTID 的伺服器上。在繼續之前,您必須確定拓撲中的任何地方都不存在不帶 GTID 的交易。

步驟 2:停止兩個伺服器。使用 mysqladmin 停止每個伺服器,如下所示,其中 username 是具有足夠權限關閉伺服器的 MySQL 使用者名稱。

$> mysqladmin -uusername -p shutdown

然後在提示符下輸入此使用者的密碼。

步驟 3:啟動兩個啟用 GTID 的伺服器。要啟用基於 GTID 的複製,必須啟動每個伺服器並啟用 GTID 模式,方法是將 gtid_mode 變數設定為 ON,並啟用 enforce_gtid_consistency 變數,以確保僅記錄對基於 GTID 的複製安全的語句。例如:

gtid_mode=ON
enforce-gtid-consistency=ON

使用 --skip-replica-start 啟動每個複本。有關 GTID 相關選項和變數的更多資訊,請參閱第 19.1.6.5 節「全域交易 ID 系統變數」

使用 mysql.gtid_executed 表格時,並非強制要求啟用二進位日誌才能使用 GTID。來源伺服器必須始終啟用二進位日誌才能進行複製。但是,複本伺服器可以使用 GTID,而無需二進位日誌。如果您需要在複本伺服器上停用二進位日誌,您可以透過為複本指定 --skip-log-bin--log-replica-updates=OFF 選項來執行此操作。

步驟 4:設定複本以使用基於 GTID 的自動定位。告訴複本使用具有基於 GTID 的交易的來源作為複製資料來源,並使用基於 GTID 的自動定位而不是基於檔案的定位。在複本上發出 CHANGE REPLICATION SOURCE TO,在語句中包含 SOURCE_AUTO_POSITION 選項,以告知複本來源的交易由 GTID 識別。

您可能還需要為來源的主機名稱和連接埠號碼,以及複本可用於連線到來源的複製使用者帳戶的使用者名稱和密碼提供適當的值;如果這些值已在步驟 1 之前設定,且無需進行其他變更,則可以安全地從此處所示的語句中省略相應的選項。

mysql> CHANGE REPLICATION SOURCE TO
     >     SOURCE_HOST = host,
     >     SOURCE_PORT = port,
     >     SOURCE_USER = user,
     >     SOURCE_PASSWORD = password,
     >     SOURCE_AUTO_POSITION = 1;

步驟 5:建立新的備份。在您啟用 GTID 之前建立的現有備份,在您啟用 GTID 後,將無法再用於這些伺服器。此時請建立新的備份,以免您沒有可用的備份。

例如,您可以在執行備份的伺服器上執行 FLUSH LOGS。然後明確建立備份,或等待您可能已設定的任何定期備份例程的下一次迭代。

步驟 6:啟動複本並停用唯讀模式。像這樣啟動複本:

mysql> START REPLICA;

僅當您在步驟 1 中將伺服器設定為唯讀時,才需要執行以下步驟。若要允許伺服器再次開始接受更新,請發出以下語句:

mysql> SET @@GLOBAL.read_only = OFF;

基於 GTID 的複製現在應已在執行,並且您可以像以前一樣開始(或恢復)來源上的活動。 第 19.1.3.5 節「使用 GTID 進行容錯移轉和擴充」討論了在使用 GTID 時建立新複本的方法。