使用外部來源執行個體設定 GTID型複寫 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用外部來源執行個體設定 GTID型複寫

您可以根據全域交易識別符 (GTIDs),從 10.0.24 版或更新版本的外部 MariaDB 執行個體,設定複寫至 RDS for MariaDB 資料庫執行個體。當您在 Amazon 上設定外部來源執行個體和複本時,請遵循下列準則RDS:

  • 監控 RDS for MariaDB 資料庫執行個體 (您的複本) 的容錯移轉事件。若發生容錯移轉,資料庫執行個體 (您的複本) 可能會以不同的網路地址,在新主機上重新建立。如需如何監控容錯移轉事件的資訊,請參閱使用 Amazon RDS 事件通知

  • 確定已將二進位日誌 (binlogs) 套用至複本前,都要將二進位日誌保留在來源執行個體上。如此一來,發生故障時,您就可以還原來源執行個體。

  • 在 Amazon 上開啟 MariaDB 資料庫執行個體上的自動備份RDS。如果您需要重新同步來源執行個體與複本,開啟自動備份功能可確保您能夠將複本還原至特定時間點。如需備份和 Point-In-Time還原的資訊,請參閱 備份、還原和匯出資料

注意

在 MariaDB 資料庫執行個體上開始複寫所需的許可受到限制,不適用於您的 Amazon RDS主要使用者。因此,您必須使用 Amazon RDSmysql.rds_set_external_master_gtid mysql.rds_start_replication命令來設定即時資料庫與 RDS for MariaDB 資料庫之間的複寫。

若要在 Amazon 上的外部來源執行個體和 MariaDB 資料庫執行個體之間開始複寫RDS,請使用下列程序。

啟動複寫
  1. 將來源 MariaDB 執行個體設成唯讀:

    mysql> FLUSH TABLES WITH READ LOCK; mysql> SET GLOBAL read_only = ON;
  2. 取得外部 MariaDB 執行個體GTID的目前 。在作法上可使用 mysql 或您選擇的查詢編輯器來執行 SELECT @@gtid_current_pos;

    的格式GTID為 <domain-id>-<server-id>-<sequence-id>。典型GTID看起來像 0-1234510749-1728。如需 GTIDs及其元件組件的詳細資訊,請參閱 MariaDB 文件中的全域交易 ID

  3. 使用 mysqldump 從外部 MariaDB 執行個體將資料庫複製到 MariaDB 資料庫執行個體。如果是非常大型的資料庫,您可能需要使用 將資料匯入 Amazon RDS for MySQL 資料庫,減少停機時間 中的程序。

    用於 Linux, macOS、 或 Unix:

    mysqldump \ --databases database_name \ --single-transaction \ --compress \ --order-by-primary \ -u local_user \ -plocal_password | mysql \ --host=hostname \ --port=3306 \ -u RDS_user_name \ -pRDS_password

    用於 Windows:

    mysqldump ^ --databases database_name ^ --single-transaction ^ --compress ^ --order-by-primary \ -u local_user \ -plocal_password | mysql ^ --host=hostname ^ --port=3306 ^ -u RDS_user_name ^ -pRDS_password
    注意

    請注意 -p 選項與輸入的密碼之間不能有空格。

    指定此處所顯示提示以外的密碼,作為安全最佳實務。

    --host 命令中,使用 --user (-u)--port-pmysql 選項來指定主機名稱、使用者名稱、連接埠和密碼,以連接至 MariaDB 資料庫執行個體。主機名稱是 MariaDB 資料庫執行個體端點DNS的名稱,例如 myinstance.123456789012.us-east-1.rds.amazonaws.com。您可以在 Amazon RDS管理主控台的執行個體詳細資訊中找到端點值。

  4. 將來源 MariaDB 執行個體重新設為可寫入。

    mysql> SET GLOBAL read_only = OFF; mysql> UNLOCK TABLES;
  5. 在 Amazon RDS管理主控台中,將託管外部 MariaDB 資料庫之伺服器的 IP 地址新增至 MariaDB 資料庫執行個體VPC的安全群組。如需修改VPC安全群組的詳細資訊,請參閱《Amazon Virtual Private Cloud 使用者指南》中的 的安全群組VPC

    IP 地址會在滿足下列條件時變更:

    • 您使用公有 IP 地址供外部來源執行個體和資料庫執行個體通訊。

    • 外部來源執行個體停止後又重新啟動。

    如果符合這些條件,請先驗證 IP 地址再新增它。

    您可能還需要設定本機網路,以允許從 MariaDB 資料庫執行個體的 IP 地址建立的連線,使之能夠與外部 MariaDB 執行個體進行通訊。若要尋找 MariaDB 資料庫執行個體的 IP 地址,請使用 host 命令。

    host db_instance_endpoint

    主機名稱是 MariaDB 資料庫執行個體端點DNS的名稱。

  6. 使用您選擇的用戶端,連接至外部 MariaDB 執行個體,並建立用於複寫的 MariaDB 使用者。此帳戶只供複寫作業使用,務必限制其存取您的網域,以提升安全性。以下是範例。

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';
    注意

    指定此處所顯示提示以外的密碼,作為安全最佳實務。

  7. 若為外部 MariaDB 執行個體,請將 REPLICATION CLIENTREPLICATION SLAVE 權限授予複寫使用者。舉例來說,若要將所有資料庫的 REPLICATION CLIENTREPLICATION SLAVE 權限授予您網域中的「repl_user」使用者,請發出下列命令。

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
  8. 將 MariaDB 資料庫執行個體變成複本。以主要使用者身分連接至 MariaDB 資料庫執行個體,然後使用 mysql.rds_set_external_master_gtid 命令,將外部 MariaDB 資料庫識別為複寫來源執行個體。使用您在步驟 2 中確定GTID的 。以下是範例。

    CALL mysql.rds_set_external_master_gtid ('mymasterserver.mydomain.com', 3306, 'repl_user', 'password', 'GTID', 1);
    注意

    指定此處所顯示提示以外的密碼,作為安全最佳實務。

  9. 在 MariaDB 資料庫執行個體上,發出 mysql.rds_start_replication 命令來開始複寫。

    CALL mysql.rds_start_replication;