使用 Amazon Aurora 為 MySQL 資料庫擴展讀取 - Amazon Aurora

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

使用 Amazon Aurora 為 MySQL 資料庫擴展讀取

您可以使用 Amazon Aurora 搭配 MySQL 資料庫執行個體來利用 Amazon Aurora 的讀取擴展功能,並為 MySQL 資料庫執行個體擴展讀取工作負載。若要使用 Aurora 來讀取擴展 MySQL 資料庫執行個體,請建立 Amazon Aurora MySQL 資料庫叢集,並讓它成為您 MySQL DB 執行個體的讀取複本。這可套用至 RDS for MySQL 資料庫執行個體,或在 Amazon RDS 外部執行的 MySQL 資料庫。

如需建立 Amazon Aurora 資料庫叢集的詳細資訊,請參閱建立 Amazon Aurora 資料庫叢集

設定 MySQL 資料庫執行個體與 Amazon Aurora 資料庫叢集之間的複寫時,務必遵循這些準則:

  • 參考 Amazon Aurora MySQL 資料庫叢集時,請使用 Amazon Aurora 資料庫叢集端點地址。如果發生容錯移轉,則提升至 Aurora MySQL 資料庫叢集主要執行個體的 Aurora 複本,將繼續使用資料庫叢集端點地址。

  • 直到您已驗證二進位日誌已套用至 Aurora 複本前,都要將二進位日誌保存在寫入器執行個體上。如此一來,發生故障時,您就可以還原寫入器執行個體。

重要

使用自我管理的複寫時,您需負責監控和解決可能發生的任何複寫問題。如需詳細資訊,請參閱診斷和解決僅供讀取複本之間的延遲

注意

在 Aurora MySQL 資料庫叢集上啟動複寫功能所需的許可受到限制,並無法供 Amazon RDS 主要使用者使用。因此,您必須使用 mysql.rds_set_external_master (Aurora MySQL 第 2 版)mysql.rds_set_external_source (Aurora MySQL 第 3 版)mysql.rds_start_replication 程序,設定 Aurora MySQL 資料庫叢集與 MySQL 資料庫執行個體之間的複寫。

啟動外部來源執行個體與 Aurora MySQL 資料庫叢集之間的複寫

  1. 將來源 MySQL 資料庫執行個體設成唯讀:

    mysql> FLUSH TABLES WITH READ LOCK; mysql> SET GLOBAL read_only = ON;
  2. 在來源 MySQL 資料庫執行個體上執行 SHOW MASTER STATUS 命令,以確定二進位記錄檔的位置。您會獲得類似下列範例的輸出結果:

    File Position ------------------------------------ mysql-bin-changelog.000031 107 ------------------------------------
  3. 使用 mysqldump,從外部 MySQL 資料庫執行個體將資料庫複製到 Amazon Aurora MySQL 資料庫叢集。若為非常大型的資料庫,您可能想要使用《Amazon Relational Database Service 使用者指南》將資料匯入至 Amazon RDS for MySQL 資料庫,並減少停機時間中的程序。

    對於 Linux、macOS 或 Unix:

    mysqldump \ --databases <database_name> \ --single-transaction \ --compress \ --order-by-primary \ -u local_user \ -p local_password | mysql \ --host aurora_cluster_endpoint_address \ --port 3306 \ -u RDS_user_name \ -p RDS_password

    在 Windows 中:

    mysqldump ^ --databases <database_name> ^ --single-transaction ^ --compress ^ --order-by-primary ^ -u local_user ^ -p local_password | mysql ^ --host aurora_cluster_endpoint_address ^ --port 3306 ^ -u RDS_user_name ^ -p RDS_password
    注意

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

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

  4. 將來源 MySQL 資料庫執行個體重新設為可寫入:

    mysql> SET GLOBAL read_only = OFF; mysql> UNLOCK TABLES;

    如需如何製作備份以搭配複寫作業使用的詳細資訊,請參閱 MySQL 文件中的 Backing up a source or replica by making it read only

  5. 在 Amazon RDS 管理主控台,將託管來源 MySQL 資料庫之伺服器的 IP 地址,新增至 Amazon Aurora 資料庫叢集的 VPC 安全群組。如需有關修改 VPC 安全群組的詳細資訊,請參閱《Amazon Virtual Private Cloud 使用者指南》中的 VPC 安全群組

    您可能還需要設定本機網路,以允許來自 Amazon Aurora 資料庫叢集之 IP 地址的連線,這樣就能與來源 MySQL 執行個體通訊。若要找出 Amazon Aurora 資料庫叢集的 IP 地址,請使用 host 命令。

    host aurora_endpoint_address

    主機名稱是來自 Amazon Aurora 資料庫叢集端點的 DNS 名稱。

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

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

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com' IDENTIFIED BY 'password';
  8. 設定複寫之前,手動取得要成為讀取複本之 Aurora MySQL 資料庫叢集的快照。如果您需要對資料庫叢集重新建立複寫做為讀取複本,您可以從這個快照還原 Aurora MySQL 資料庫叢集,而不需從 MySQL 資料庫執行個體匯入資料至新的 Aurora MySQL 資料庫叢集。

  9. 將 Amazon Aurora 資料庫叢集變成複本。以主要使用者身分連接至 Amazon Aurora 資料庫叢集,然後使用 mysql.rds_set_external_master (Aurora MySQL 第 2 版)mysql.rds_set_external_source (Aurora MySQL 第 3 版)mysql.rds_start_replication 程序,將來源 MySQL 資料庫辨識為複寫來源。

    使用您在步驟 2 中所確定的 binlog 檔案名稱與位置。下列是 範例。

    For Aurora MySQL version 2: CALL mysql.rds_set_external_master ('mymasterserver.example.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 0); For Aurora MySQL version 3: CALL mysql.rds_set_external_source ('mymasterserver.example.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 0);
  10. 在 Amazon Aurora 資料庫叢集上,呼叫 mysql.rds_start_replication 程序以開始複寫。

    CALL mysql.rds_start_replication;

建立來源 MySQL 資料庫執行個體與 Amazon Aurora 資料庫叢集之間的複寫之後,您可以將 Aurora 複本新增至 Amazon Aurora 資料庫叢集。您接著可以連接至 Aurora 複本來讀取擴展您的資料。如需建立 Aurora 複本的詳細資訊,請參閱將 Aurora 複本新增至資料庫叢集