將資料匯入 Amazon RDS for MySQL 資料庫,減少停機時間 - Amazon Relational Database Service

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

將資料匯入 Amazon RDS for MySQL 資料庫,減少停機時間

在某些情況下,您可能需要將資料從支援即時應用程式的外部 MariaDB 或 MySQL 資料庫匯入 RDS for MariaDB 資料庫執行個體、RDS for MySQL 資料庫執行個體或 RDS for MySQL 多可用區域資料庫叢集。使用下列程序,將對應用程式可用性的影響降至最低。如果您使用的是超大型資料庫,也可使用這個程序。使用此程序,您可以透過減少透過網路傳遞的資料量來降低匯入成本 AWS。

此程序中,您需將資料庫資料的複本傳輸至 Amazon EC2 執行個體,並將資料匯入至新的 Amazon RDS 資料庫。接著,將應用程式重新導向 Amazon RDS 資料庫前,請使用複寫功能將 Amazon RDS 資料庫更新至與即時外部執行個體相同的最新狀態。如果外部執行個體是 MariaDB 10.0.24 或更新版本,且目標執行個體是 RDS for MariaDB,請根據全域交易識別符 (GTIDs) 設定 MariaDB 複寫。若為其他情況,請根據二進位日誌座標設定複寫。建議 GTID 型複寫 (如果您的外部資料庫可以支援它),因為 GTID 型複寫是更可信賴的方法。如需詳細資訊,請參閱 MariaDB 文件中的 Global transaction ID 一節。

注意

如果您想要將資料匯入 RDS for MySQL 資料庫執行個體,且您的案例支援該執行個體,建議您使用備份檔案和 Amazon S3 將資料移入和移出 Amazon RDS。如需詳細資訊,請參閱將備份還原至 Amazon RDS for MySQL 資料庫執行個體

下圖顯示將外部 MySQL 資料庫匯入 Amazon RDS 上的 MySQL 資料庫。

工作流程,顯示將外部 MySQL 資料庫匯入 Amazon RDS 上的 MySQL 資料庫。

任務 1:建立現有資料庫的副本

要將大量資料遷移至 RDS for MariaDB 或 RDS for MySQL 資料庫,並將停機時間降至最低,第一步是建立來源資料的複本。

下圖顯示建立 MySQL 資料庫的備份。

顯示建立 MySQL 資料庫備份的工作流程。

您可使用 mysqldump 公用程式,以 SQL 或分隔符號文字等任一格式建立資料庫備份。在 MariaDB 10.5 中,用戶端稱為 mariadb-dump。從 MariaDB 11.0.1 開始,您必須使用 mariadb-dump而非 mysqldump。建議您在非生產環境中分別測試各種格式,以了解哪種方法能將 mysqldump 命令的執行時間減至最少。

我們也建議您使用分隔文字格式進行載入,藉此權衡mysqldump效能與優點。使用分隔符號文字格式的備份會為每個傾印的資料表分別建立索引標籤分隔文字檔案。您可以使用 LOAD DATA LOCAL INFILE 命令平行載入這些檔案,縮短匯入資料庫所需的時間。如需詳細資訊,請參閱載入 MariaDB 的資料載入 MySQL 的資料。 MariaDB MySQL

開始備份作業前,請確認在要複製到 Amazon RDS 的 MariaDB 或 MySQL 資料庫上設定複寫選項。複寫選項包括開啟二進位日誌及設定獨一無二的伺服器 ID。設定這些選項後,伺服器會開始記錄資料庫交易,並調整至就緒狀態,以擔任後續程序的來源複寫執行個體。

請確認您了解下列建議和注意事項:

  • --single-transaction 使用 mysqldump 選項,因為它會傾印資料庫的一致狀態。若要確保有效的傾印檔案,請勿在執行 mysqldump 時執行資料定義語言 (DDL) 陳述式。您可以為這些作業排定維護時段。

  • 從傾印檔案中排除下列結構描述:

    • sys

    • performance_schema

    • information_schema

    根據預設, mysqldumpmariadb-dump公用程式會排除這些結構描述。

  • 如需遷移使用者與權限,建議您使用可產生資料控制語言 (DCL) 以重建使用者與權限的工具,例如 pt-show-grants 公用程式。

設定複寫選項

  1. 編輯 my.cnf 檔案。此檔案通常位於 下方/etc

    sudo vi /etc/my.cnf

    log_binserver_id 選項新增至 [mysqld] 部分。log_bin 選項會提供二進位記錄檔的檔案名稱識別符。server_id 選項會為來源與複本關係提供伺服器唯一識別碼。

    下列範例顯示 my.cnf 檔案的更新[mysqld]區段:

    [mysqld] log-bin=mysql-bin server-id=1

    如需詳細資訊,請參閱 MySQL 文件中的設定複寫來源組態

  2. 對於使用多可用區域資料庫叢集的複寫,請將 ENFORCE_GTID_CONSISTENCYGTID_MODE 參數設定為 ON

    mysql> SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;
    mysql> SET @@GLOBAL.GTID_MODE = ON;

    使用資料庫執行個體進行複製時,不需要這些設定。

  3. 重新啟動 mysql 服務。

    sudo service mysqld restart

建立現有資料庫的備份複本

  1. 使用 mysqldump公用程式或 mariadb-dump公用程式建立資料的備份,指定 SQL 或分隔文字格式。

    對於 MySQL 8.0.25 和更低版本,指定 --master-data=2來建立備份檔案,可用於在伺服器之間開始複寫。對於 MySQL 8.0.26 和更新版本,指定 --source-data=2來建立備份檔案,可用於在伺服器之間開始複寫。如需詳細資訊,請參閱 MySQL 文件中的 mysqldump — 資料庫備份計劃

    若要改善效能並確保資料完整性,請使用 的 --order-by-primary--single-transaction選項mysqldump

    若要避免在備份中包含 MySQL 系統資料庫,請勿搭配 使用 --all-databases選項mysqldump。如需詳細資訊,請參閱 MySQL 文件中的使用 mysqldump 建立資料快照

    如有必要chmod,請使用 來確保建立備份檔案的目錄可寫入。

    重要

    在 Windows 上,以管理員身分執行命令視窗。

    • 若要產生 SQL 輸出,請使用下列命令:

      對於 Linux、 macOS或 Unix:

      sudo mysqldump \ --databases database_name \ --master-data=2 \ --single-transaction \ --order-by-primary \ -r backup.sql \ -u local_user \ -ppassword
      注意

      作為安全最佳實務,請指定範例中顯示的提示以外的登入資料。

      在 Windows 中:

      mysqldump ^ --databases database_name ^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -r backup.sql ^ -u local_user ^ -ppassword
      注意

      作為安全最佳實務,請指定範例中顯示的提示以外的登入資料。

    • 若要產生分隔文字輸出,請使用下列命令:

      對於 Linux、 macOS或 Unix:

      sudo mysqldump \ --tab=target_directory \ --fields-terminated-by ',' \ --fields-enclosed-by '"' \ --lines-terminated-by 0x0d0a \ database_name \ --master-data=2 \ --single-transaction \ --order-by-primary \ -ppassword

      在 Windows 中:

      mysqldump ^ --tab=target_directory ^ --fields-terminated-by "," ^ --fields-enclosed-by """ ^ --lines-terminated-by 0x0d0a ^ database_name ^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -ppassword
      注意

      作為安全最佳實務,請指定範例中顯示的提示以外的登入資料。

      必須在 Amazon RDS 資料庫中手動建立預存程序、觸發程序、函數或事件。如果您正在複製的資料庫中存有上述物件,則請在執行 mysqldump 時排除這些物件。若要這麼做,請在mysqldump命令中包含下列引數:

      • --routines=0

      • --triggers=0

      • --events=0

      對於 MySQL 8.0.22 和更低版本和 MariaDB 版本,當您執行mysqldump並指定分隔文字格式時,會傳回CHANGE MASTER TO註解。此註解會包含主控端日誌檔案的名稱與位置。對於 MySQL 8.0.23 和更新版本,當您mysqldump使用分隔文字格式執行 時,會傳回CHANGE REPLICATION SOURCE TO註解。此註解包含來源日誌檔案名稱和位置。如果外部執行個體不是 MariaDB 10.0.24 和更新版本,或 MySQL 8.0.23 和更新版本,請記下 MASTER_LOG_FILE和 的值MASTER_LOG_POS。設定複寫時您需要這些值。

      MariaDB 版本和 MySQL 8.0.22 及更低版本會傳回下列輸出:

      -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;

      MySQL 8.0.23 和更新版本會傳回下列輸出:

      -- Position to start replication or point-in-time recovery from -- -- CHANGE SOURCE TO SOURCE_LOG_FILE='mysql-bin-changelog.000031', SOURCE_LOG_POS=107;

      對於 MySQL 8.0.22 和更低版本,如果您使用的是 SQL 格式,您可以在備份檔案中的CHANGE MASTER TO註解中取得主日誌檔案名稱和位置。對於 MySQL 8.0.23 和更新版本,如果您使用 SQL 格式,您可以在備份檔案中的CHANGE REPLICATION SOURCE TO註解中取得來源日誌檔案名稱和位置。如果外部執行個體是 MariaDB 10.0.24 或更新版本,您可在下一步驟中取得 GTID。

  2. 如果您使用的外部執行個體是 MariaDB 10.0.24 版或更新版本,請使用 GTID 型複寫。在外部 MariaDB 執行個體SHOW MASTER STATUS上執行以取得二進位日誌檔案名稱和位置,然後在外部 MariaDB 執行個體BINLOG_GTID_POS上執行,將其轉換為 GTID。

    SELECT BINLOG_GTID_POS('binary_log_file_name', binary_log_file_position);

    請注意傳回的 GTID。您需要 GTID 才能設定複寫。

  3. 壓縮複製的資料,以減少複製資料到 Amazon RDS 資料庫所需的網路資源量。請記下備份檔案的大小。決定要建立多大的 Amazon EC2 執行個體時,您需要此資訊。完成後,請使用 GZIP 或您慣用的壓縮公用程式壓縮備份檔。

    • 若要壓縮 SQL 輸出,請使用下列命令:

      gzip backup.sql
    • 若要壓縮分隔文字輸出,請使用下列命令:

      tar -zcvf backup.tar.gz target_directory

任務 2:建立 Amazon EC2 執行個體並複製壓縮的資料庫

比起直接在資料庫執行個體間複製未壓縮的資料,將壓縮的資料庫備份檔複製到 Amazon EC2 執行個體,需要的網路資源較少。資料放進 Amazon EC2 後,即可將資料直接複製到 MariaDB 或 MySQL 資料庫。若要節省網路資源的成本,Amazon EC2 執行個體必須與 AWS 區域 Amazon RDS 資料庫執行個體位於相同的 中。在 AWS 區域 與 Amazon RDS 資料庫相同的 中擁有 Amazon EC2 執行個體,也會降低匯入期間的網路延遲。

下圖顯示將資料庫備份複製到 Amazon EC2 執行個體。

顯示將資料庫備份複製到 Amazon EC2 執行個體的工作流程。

建立 Amazon EC2 執行個體並複製資料

  1. 在您 AWS 區域 計劃建立 Amazon RDS 資料庫的 中,建立虛擬私有雲端 (VPC)、VPC 安全群組和 VPC 子網路。確認 VPC 安全群組的傳入規則會允許您應用程式連線至 AWS所需的 IP 地址。您可以指定 IP 地址的範圍,例如203.0.113.0/24, 或其他 VPC 安全群組。您可以使用 Amazon VPC 主控台來建立和管理 VPCs、子網路和安全群組。如需詳細資訊,請參閱《Amazon Virtual Private Cloud 使用者指南》中的 Amazon VPC 入門Amazon Virtual Private Cloud

  2. 開啟 Amazon EC2 主控台,然後選擇 AWS 區域 以同時包含您的 Amazon EC2 執行個體和 Amazon RDS 資料庫。使用您在步驟 1 中建立的 VPC、子網路和安全群組,啟動 Amazon EC2 執行個體。確認您選取的執行個體類型具有足夠的儲存空間,足以供未壓縮的資料庫備份檔使用。如需 Amazon EC2 執行個體的詳細資訊,請參閱《Amazon Elastic Compute Cloud 使用者指南》中的 Amazon EC2 入門

  3. 若要從 Amazon EC2 執行個體連線至 Amazon RDS 資料庫,請編輯您的 VPC 安全群組。新增會指定您 EC2 執行個體私有 IP 地址的傳入規則。您可在 EC2 主控台視窗中,從 Instance (執行個體) 窗格的 Details (詳細資訊) 分頁標籤找到私有 IP 地址。若要編輯 VPC 安全群組並新增傳入規則,請選取 EC2 主控台導覽窗格中的 Security Groups (安全群組),接著選擇您的安全群組,然後新增 MySQL 或 Aurora 的傳入規則,指定 EC2 執行個體的私有 IP 地址。若要了解如何將傳入規則新增至 VPC 安全群組,請參閱《Amazon Virtual Private Cloud 使用者指南》中的安全群組規則

  4. 將壓縮的資料庫備份檔從本機系統複製到 Amazon EC2 執行個體。如有必要chmod,請使用 來確保您擁有 Amazon EC2 執行個體目標目錄的寫入許可。您可使用 scp 命令或 Secure Shell (SSH) 用戶端來複製檔案。下列命令是範例scp命令:

    scp -r -i key pair.pem backup.sql.gz ec2-user@EC2 DNS:/target_directory/backup.sql.gz
    重要

    複製敏感資料時,請務必使用安全的網路傳輸通訊協定。

  5. 使用下列命令連線至您的 Amazon EC2 執行個體,並安裝最新更新與 MySQL 客戶端工具:

    sudo yum update -y sudo yum install mysql -y

    如需詳細資訊,請參閱《Amazon Elastic Compute Cloud 使用者指南》中的連線至 Linux 執行個體的執行個體。

    重要

    此範例會在 Amazon Linux 發行版的 Amazon Machine Image (AMI) 上安裝 MySQL 用戶端。此範例不會將 MySQL 用戶端安裝在不同的發行版本上,例如 Ubuntu 或 Red Hat Enterprise Linux。如需有關安裝 MySQL 的資訊,請參閱 MySQL 文件中的安裝 MySQL。

  6. 連線到 Amazon EC2 執行個體後,將您的資料庫備份檔解壓縮。下列命令是範例。

    • 若要將 SQL 輸出解壓縮,請使用下列命令:

      gzip backup.sql.gz -d
    • 若要將分隔符號文字輸出解壓縮,請使用下列命令:

      tar xzvf backup.tar.gz

任務 3:建立 MySQL 或 MariaDB 資料庫,並從 Amazon EC2 執行個體匯入資料

透過在與 Amazon EC2 執行個體 AWS 區域 相同的 中建立 RDS for MariaDB 資料庫執行個體、RDS for MySQL 資料庫執行個體或 RDS for MySQL 多可用區域資料庫叢集,您可以比網際網路更快地從 Amazon EC2 匯入資料庫備份檔案。

下圖顯示將備份從 Amazon EC2 執行個體匯入 MySQL 資料庫。

顯示將備份從 EC2 執行個體匯入 MySQL 資料庫的工作流程。

建立 MariaDB 或 MySQL 資料庫並匯入資料

  1. 判斷需要何種資料庫執行個體類別及多大的儲存空間,才能支援這個 Amazon RDS 資料庫預計的工作負載。在此流程的過程中,決定資料載入程序需要多少空間與處理容量才夠。此外,決定處理生產工作負載所需的條件。您可根據來源 MariaDB 或 MySQL 資料庫的大小與資源加以估計。如需詳細資訊,請參閱資料庫執行個體類別

  2. 在包含 Amazon EC2 執行個體 AWS 區域 的 中建立資料庫執行個體或多可用區域資料庫叢集。

    若要建立 RDS for MySQL 多可用區域資料庫叢集,請遵循 中的指示為 Amazon 建立多可用區域資料庫叢集 RDS

    若要建立 RDS for MariaDB 或 RDS for MySQL 資料庫執行個體,請遵循 中的指示建立 Amazon RDS 資料庫執行個體,並使用下列準則:

    • 指定與您的來源資料庫執行個體相容的資料庫引擎版本。

      • 若您的來源執行個體為 MySQL 5.5.x 版,則 Amazon RDS 資料庫執行個體必須為 MySQL。

      • 若您的來源執行個體為 MySQL 5.6.x 或 5.7.x 版,則 Amazon RDS 資料庫執行個體必須為 MySQL 或 MariaDB。

      • 如果您的來源執行個體為 MySQL 8.0.x 版本,則 Amazon RDS 資料庫執行個體必須為 MySQL 8.0.x 版本。

      • 如果您的來源執行個體是 MySQL 8.4.x,Amazon RDS 資料庫執行個體必須是 MySQL 8.4.x。

      • 若您的來源執行個體為 MariaDB 5.5 或更新版本,則 Amazon RDS 資料庫執行個體必須為 MariaDB。

    • 指定與 Amazon EC2 執行個體相同的虛擬私有雲端 (VPC) 和 VPC 安全群組。這種作法可確保您的 Amazon EC2 執行個體與 Amazon RDS 執行個體能在網路上看見彼此。確保您的資料庫執行個體可以公開存取。若要使用來源資料庫設定複寫,如下節所述,您的資料庫執行個體必須可公開存取。

    • 匯入資料庫備份前,請勿設定多個可用區域、備份保留期或僅供讀取複本。匯入完成後,您可以設定生產執行個體的多可用區域和備份保留。

  3. 檢視 Amazon RDS 資料庫的預設組態選項。如果資料庫的預設參數群組沒有您想要的組態選項,請尋找其他提供您所需選項的參數群組,或者建立新的參數群組。如需建立參數群組的詳細資訊,請參閱 Amazon RDS 的參數群組

  4. 以主要使用者身分連線至新的 Amazon RDS 資料庫。建立所需的使用者,以支援需要存取資料庫執行個體的管理員、應用程式和服務。Amazon RDS 資料庫的主機名稱是沒有連接埠號碼的此資料庫執行個體的端點值,例如 mysampledb.123456789012.us-west-2.rds.amazonaws.com。您可以在 Amazon RDS 主控台的資料庫詳細資訊中找到端點值。

  5. 連線到您的 Amazon EC2 執行個體。如需詳細資訊,請參閱《Amazon Elastic Compute Cloud 使用者指南》中的連線至 Linux 執行個體的執行個體。

  6. 使用 mysql 命令,以遠端主機的形式從 Amazon EC2 執行個體連線至 Amazon RDS 資料庫。下列命令為範例:

    mysql -h host_name -P 3306 -u db_master_user -p

    host_name 是 Amazon RDS 資料庫端點。

  7. 出現mysql提示時,請執行 source命令並傳遞資料庫傾印檔案的名稱。此命令會將資料載入 Amazon RDS 資料庫執行個體。

    • 針對 SQL 格式,請使用下列命令:

      mysql> source backup.sql;
    • 對於分隔文字格式,如果資料庫不是您在設定 Amazon RDS 資料庫時建立的預設資料庫,請先建立資料庫。

      mysql> create database database_name; mysql> use database_name;

      接著建立資料表。

      mysql> source table1.sql mysql> source table2.sql etc...

      然後匯入資料。

      mysql> LOAD DATA LOCAL INFILE 'table1.txt' INTO TABLE table1 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a'; mysql> LOAD DATA LOCAL INFILE 'table2.txt' INTO TABLE table2 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a'; etc...

      若要提升效能,您可透過多個連線平行執行這些操作,如此您的所有資料表就會建立並隨後載入。

      注意

      如果您在最初傾印資料表mysqldump時搭配 使用任何資料格式選項,請務必搭配 使用相同的選項LOAD DATA LOCAL INFILE,以確保正確解譯資料檔案內容。

  8. 針對匯入資料庫中的一或兩個資料表執行簡單的SELECT查詢,以確認匯入成功。

如果您不再需要此程序中使用的 Amazon EC2 執行個體,請終止 EC2 執行個體以減少 AWS 資源用量。若要終止 EC2 執行個體,請參閱《Amazon Elastic Compute Cloud 使用者指南》中的終止執行個體

任務 4:將資料從外部資料庫複寫至新的 Amazon RDS 資料庫

在複製資料並傳輸至 MariaDB 或 MySQL 資料庫期間,您的來源資料庫可能就會完成更新。因此,您可以使用複寫功能,讓複製的資料庫保持在與來源資料庫相同的最新狀態。

工作流程,顯示將資料從外部 MySQL 資料庫複寫至 Amazon RDS 上的資料庫。

在 Amazon RDS 資料庫上啟動複寫所需的許可受到限制,且不適用於您的 Amazon RDS 主要使用者。因此,請針對您的主要引擎版本使用適當的 Amazon RDS 預存程序:

啟動複寫

在任務 1 中,當您設定複寫選項時,您會開啟二進位記錄,並為來源資料庫設定唯一的伺服器 ID。現在,您可將 Amazon RDS 資料庫設為複本,並將即時資料庫設為來源複寫執行個體。

  1. 在 Amazon RDS 主控台中,將託管來源資料庫之伺服器的 IP 地址新增至 Amazon RDS 資料庫的 VPC 安全群組。如需設定 VPC 安全群組的詳細資訊,請參閱《Amazon Virtual Private Cloud 使用者指南》中的設定安全群組規則

    您可能還需要設定您的本機網路,以允許來自 Amazon RDS 資料庫 IP 地址的連線,使其可以與您的來源執行個體通訊。若要尋找 Amazon RDS 資料庫的 IP 地址,請使用 host命令:

    host host_name

    host_name 是來自 Amazon RDS 資料庫端點的 DNS 名稱,例如 myinstance.123456789012.us-east-1.rds.amazonaws.com。您可以在 Amazon RDS 主控台的資料庫執行個體詳細資訊中找到端點值。

  2. 使用您選擇的用戶端,連線至來源執行個體,然後建立複寫作業所需的使用者。此帳戶只供複寫作業使用,務必限制其存取您的網域,以提升安全性。下列命令為範例:

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

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

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

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
  4. 如果您使用 SQL 格式建立備份檔案,且外部執行個體不是 MariaDB 10.0.24 或更新版本,請執行下列命令查看該檔案的內容:

    cat backup.sql

    該檔案包括 CHANGE MASTER TO 註解,內含主控端日誌檔案的名稱與位置。若您使用 --master-data 命令的 mysqldump 選項,備份檔內就會包含這個註解。請注意 MASTER_LOG_FILEMASTER_LOG_POS 的值。

    -- -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;

    如果您使用分隔文字格式來建立備份檔案,且外部執行個體不是 MariaDB 10.0.24 或更新版本,您應該已經有來自任務 1 下建立現有資料庫程序備份副本的步驟 1 的二進位日誌座標。

    如果外部執行個體是 MariaDB 10.0.24 或更高版本,您應該已經擁有 GTID,從 的步驟 2 開始複寫。若要在任務 1 下建立現有資料庫程序的備份副本。

  5. 使 Amazon RDS 資料庫成為複本。如果外部執行個體不是 MariaDB 10.0.24 或更新版本,請以主要使用者身分連線至 Amazon RDS 資料庫,並使用適當的 Amazon RDS 預存程序,將來源資料庫識別為來源複寫執行個體:

    如果您有 SQL 格式備份檔案,請使用您在步驟 4 中決定的主日誌檔案名稱和主日誌位置。如果您使用分隔文字格式,請使用您在建立備份檔案時決定的名稱和位置。以下是範例:

    MySQL 8.4 和更新版本

    CALL mysql.rds_set_external_source ('myserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 1);

    MariaDB 和 MySQL 8.0 及更低版本

    CALL mysql.rds_set_external_master ('myserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 1);
    注意

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

    如果外部執行個體並非 MariaDB 10.0.24 或更高版本,請以主要使用者身分連線至 Amazon RDS 資料庫,接著使用 mysql.rds_set_external_master_gtid 命令找到來源資料庫,將其視為來源複寫執行個體。使用您在任務 1 下建立現有資料庫程序備份副本的步驟 2 中決定的 GTID。下列命令為範例:

    CALL mysql.rds_set_external_master_gtid ('source_server_ip_address', 3306, 'ReplicationUser', 'password', 'GTID', 1);

    source_server_ip_address 是來源複寫執行個體的 IP 地址。目前不支援 EC2 私有 DNS 地址。

    注意

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

  6. 在 Amazon RDS 資料庫上,若要開始複寫,請執行下列mysql.rds_start_replication命令:

    CALL mysql.rds_start_replication;
  7. 在 Amazon RDS 資料庫上,若要判斷複本何時是來源複寫執行個體的最新狀態,請執行 SHOW REPLICA STATUS 命令。SHOW REPLICA STATUS 命令的結果包括 Seconds_Behind_Master 欄位。當 Seconds_Behind_Master 欄位傳回 0 時,複本會與來源複寫執行個體保持最新狀態。

    注意

    MySQL 以前的版本使用 SHOW SLAVE STATUS 而不是 SHOW REPLICA STATUS。如果您使用的 MySQL 是 8.0.23 之前的版本,請使用 SHOW SLAVE STATUS

    對於 MariaDB 10.5、10.6 或 10.11 資料庫執行個體,請執行mysql.rds_replica_status預存程序,而非 MySQL 命令。

  8. Amazon RDS 資料庫處於最新狀態後,請開啟自動備份,以便在需要時還原該資料庫。您可以使用 Amazon RDS 主控台開啟或修改 Amazon RDS 資料庫的自動備份。如需詳細資訊,請參閱備份簡介

任務 5:將即時應用程式重新導向至 Amazon RDS 執行個體

MariaDB 或 MySQL 資料庫與來源複寫執行個體保持最新狀態後,您現在可以更新即時應用程式以使用 Amazon RDS 執行個體。

顯示停止複寫並將即時應用程式導向 Amazon RDS 上資料庫的工作流程。

將您的即時應用程式重新導向至 MariaDB 或 MySQL 資料庫並停止複寫

  1. 若要新增 Amazon RDS 資料庫的 VPC 安全群組,請新增託管應用程式之伺服器的 IP 地址。如需修改 VPC 安全群組的詳細資訊,請參閱《Amazon Virtual Private Cloud 使用者指南》中的設定安全群組規則

  2. 驗證 SHOW REPLICA STATUS 命令結果中的 Seconds_Behind_Master 欄位是否為 0,這表示複本與來源複寫執行個體是最新的。

    SHOW REPLICA STATUS;
    注意

    MySQL 以前的版本使用 SHOW SLAVE STATUS 而不是 SHOW REPLICA STATUS。如果您使用的 MySQL 是 8.0.23 之前的版本,請使用 SHOW SLAVE STATUS

    若為 MariaDB 10.5、10.6 或 10.11 資料庫執行個體,請執行 mysql.rds_replica_status 程序,而非 MySQL 命令。

  3. 交易完成時關閉所有與此來源的連線。

  4. 更新您的應用程式,以使用 Amazon RDS 資料庫。這裡所謂的更新,通常包括變更連線設定,以識別 Amazon RDS 資料庫的主機名稱和連接埠、要與其連線的使用者帳戶和密碼,以及要使用的資料庫。

  5. 連線到資料庫執行個體。

    對至多可用區域資料庫叢集,請連線至寫入器資料庫執行個體。

  6. 使用下列mysql.rds_stop_replication命令停止 Amazon RDS 執行個體的複寫:

    CALL mysql.rds_stop_replication;
  7. 在 Amazon RDS 資料庫上執行適當的 Amazon RDS 預存程序,以重設複寫組態,因此不再將此執行個體識別為複本。

    MySQL 8.4 和更新版本

    CALL mysql.rds_reset_external_source;

    MariaDB 和 MySQL 8.0 及更低版本

    CALL mysql.rds_reset_external_master;
  8. 開啟其他 Amazon RDS 功能,例如異地同步備份支援和僅供讀取複本。如需詳細資訊,請參閱設定和管理 Amazon 的多可用區部署 RDS使用資料庫執行個體僅供讀取複本