使用雲端 XtraBackup、亞馬遜 EFS 和 Amazon S3 將現場部署 MySQL 資料庫遷移到 Aurora MySQL - AWS Prescriptive Guidance

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

使用雲端 XtraBackup、亞馬遜 EFS 和 Amazon S3 將現場部署 MySQL 資料庫遷移到 Aurora MySQL

由羅漢·賈伯達尼(AWS)和烏達亞西姆(AWS)創建

來源:現場部署

目標:Aurora MySQL

R 類型 平台重建

:环境 生產

Technologies 資料庫; 移轉

工作負載:開放原始碼

AWS 服務 Amazon S3; Amazon Aurora; 亞馬遜 EFS

Summary

此模式說明如何使用百科納 XtraBackup,有效率地將大型的現場部署 MySQL 資料庫遷移到 Amazon Aurora MySQL。佩爾科納 XtraBackup 是一個開源的,非阻塞的備份實用程序為基於 MySQL 的服務器。該模式顯示如何使用 Amazon Elastic File System(亞馬遜 EFS)減少將備份上傳到亞馬遜 Simple Storage Service (Amazon S3) 的時間,並將備份恢復到 Amazon Aurora MySQL。此模式也提供有關如何進行增量 Percona 備份,以減少要套用至目標 Aurora MySQL 資料庫的二進位記錄數目的詳細資料。 

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶

  • 具有建立 IAM 角色和政策許可的 AWS Identity and Access Management (IAM) 使用者。

  • 現場部署 MySQL 資料庫和 AWS 上的虛擬私有雲端 (VPC) 之間的網路連線。

限制

  • 來源伺服器必須是 Linux 系統,可以安裝網路檔案系統 (NFS) 用戶端 (NFS 公用程式 /NFS 公用程式)。

  • 用來上傳備份檔案的 S3 儲存貯體僅支援伺服器端加密 (SSE-S3/SSE-KMS)。

  • Amazon S3 將備份檔案的大小限制為 5 TB。如果您的備份檔案超過 5 TB,您可以將它分割為多個較小的檔案。

  • 上傳至 S3 儲存貯體的來源檔案數量不能超過一百萬個檔案。

  • 此病毒碼僅支援 Percona XtraBackup 完整備份和增量備份。它不支援使用的局部備份--tables--tables-exclude--tables-file--databases--databases-exclude, 或--databases-file

  • Aurora 不會從來源 MySQL 資料庫還原使用者帳戶、函數、預存程序或時區資訊。

產品版本

  • 來源資料庫必須是 MySQL 5.5 版、5.6 版或 5.7 版。

  • 使用 MySQL 5.7 版,您必須使用 Percona XtraBackup 2.4 版。

  • 如果是 MySQL 5.6 和 5.6,則必須使用 Percona XtraBackup 2.3 或 2.4。

Architecture

來源堆疊

  • Linux 作業系統

  • MySQL 伺服器

  • 柏可納 XtraBackup

目標堆疊

  • Amazon Aurora

  • Amazon S3

  • Amazon EFS

目標架構

Tools

  • 柏可納 XtraBackup— 一種開放原始碼公用程式,可執行 MySQL 資料庫的串流、壓縮和增量備份,而不會中斷或封鎖您的資料庫。

  • Amazon Aurora— 受完全受管的關聯式資料庫引擎,可讓設定、操作及擴展 MySQL 部署變得簡單且經濟實惠。Aurora MySQL 是一個插入式替代品。

  • Amazon S3— 提供延展性、資料可用性、安全性和效能的物件儲存服務。您可以使用 Amazon S3 來存放和保護各種使用案例的任意數量資料,例如網站、行動應用程式、備份和還原、封存、企業應用程式、IoT 裝置和巨量資料分析。

  • Amazon EFS— 可擴展、全受管、彈性 NFS 檔案系統,可與 AWS 雲端服務和現場部署資源搭配使用。Amazon EFS 可依需求擴展至 PB (PB),而不會中斷應用程式,並會隨著您新增和移除檔案自動擴展和縮減。

Epics

任務描述所有技能
建立安全群組以與 Amazon EFS 掛載目標產生關聯。

在 VPC 中建立安全群組,該群組已透過 AWS Transit Gateway 與現場部署資料庫的 VPN 附件設定。如需有關這個和其他故事中所述的命令和步驟的詳細資訊,請參閱本模式結尾的 < 相關資源 > 一節中的連結。

AWS 開發人員/資料庫管理員
編輯安全群組規則。

使用類型 NFS、連接埠 2049 和內部部署資料庫伺服器的 IP 範圍來新增輸入規則。根據預設,輸出規則允許所有流量離開。如果不是這種情況,請新增輸出規則以開啟 NFS 連接埠的連線。新增兩個輸入規則:連接埠 2049 (來源:此相同安全性群組的安全性群組識別碼) 和連接埠 22 (來源:您將連線到 EC2 執行個體的 IP 範圍)。

AWS 開發人員/資料庫管理員
建立檔案系統。

在掛接目標中,使用您在先前內文中建立的 VPC 和安全群組。根據內部部署資料庫的 I/O 需求,選擇輸送量模式和效能。選擇性地啟用靜態加密。

AWS 開發人員/資料庫管理員
任務描述所有技能
建立要與 EC2 執行個體建立關聯的 IAM 執行個體描述檔角色。

建立 IAM 角色,該角色具有將物件上傳至 Amazon S3 中的物件和存取物件的權限。選擇 S3 儲存貯體,其中備份將儲存為策略資源。

AWS DevOps
建立 EC2 執行個體。

啟動 Linux 型 EC2 執行個體,並附加您在上一個步驟中建立的 IAM 執行個體設定檔角色,以及您先前建立的安全群組。

AWS DevOps
安裝 NFS 用戶端。

在內部部署資料庫伺服器和 EC2 執行個體上安裝 NFS 用戶端。如需安裝指示,請參閱 < 其他資訊 > 一節。

DevOps
掛載 Amazon EFS 檔案系統。

將 Amazon EFS 檔案系統掛載在現場部署和 EC2 執行個體。在每部伺服器上,建立儲存備份的目錄,然後使用掛載目標端點掛載檔案系統。如需範例,請參閱 < 其他資訊 > 一節。

DevOps
任務描述所有技能
安裝 Percona XtraBackup

在內部部署資料庫伺服器上安裝 Percona XtraBackup 2.3 或 2.4 (視您的 MySQL 資料庫版本而定)。如需安裝連結,請參閱 < 相關資源 > 一節。

資料庫管理員
計算來源資料庫中的結構描述和資料表。

收集並記下來源 MySQL 資料庫中的結構描述和物件的數目。遷移後,您將使用這些計數來驗證 Aurora MySQL 資料庫。

資料庫管理員
(選擇性) 記下來源資料庫中最新的二進位記錄順序。

如果您要在來源資料庫和 Aurora MySQL 之間建立二進位記錄複製,請執行此步驟。必須啟用記錄 bin,而且 server_id 必須是唯一的。請記下來源資料庫中目前的二進位記錄序列,就在啟動備份之前。如果您打算只使用完整備份,請在完整備份之前執行此步驟。如果您打算在完整備份後進行增量備份,請在將在 Aurora MySQL 資料庫執行個體上還原的最終增量備份之前執行此步驟。

資料庫管理員
啟動來源 MySQL 資料庫的完整備份。

使用 Percona XtraBackup 做 MySQL 來源資料庫的完整備份。例如,完整和增量備份的命令,請參閱 < 其他資訊 > 一節。

資料庫管理員
(選用) 使用 Percona XtraBackup 進行增量備份。

增量備份可用於減少將來源資料庫與 Aurora MySQL 同步所需套用的二進位記錄數量。大型和交易繁重的資料庫可能會在備份期間產生大量的二進位記錄檔。透過進行增量備份並將其儲存在共用的 Amazon EFS 檔案系統上,您可以大幅減少備份和上傳資料庫的時間。如需詳細資訊,請參閱 < 其他資訊 > 一節。繼續進行增量備份,直到您準備好開始移轉至 Aurora 程序為止。

資料庫管理員
準備備份。

在這個步驟中,交易記錄檔會套用至備份期間已在飛行中的交易備份。繼續將交易記錄檔 (— 僅限套用記錄檔) 套用至每個增量備份,以合併備份 (上次備份除外)。如需範例,請參閱 < 其他資訊 > 一節。完成此步驟後,完整的合併備份將會在 ~/ <efs_mount_name>/完整備份中。

資料庫管理員
壓縮並分割最終的合併備份。

準備最終、合併的備份之後,請使用 tar、zip 和 split 命令來建立較小的備份壓縮檔案。如需範例,請參閱 < 其他資訊 > 一節。

資料庫管理員
任務描述所有技能
將備份上傳到 Amazon S3。

儲存備份檔案的 Amazon EFS 檔案系統會同時掛載在現場部署資料庫和 EC2 執行個體上,因此 EC2 執行個體可以立即使用備份檔案。通過使用安全殼層(SSH)Connect 到 EC2 實例,並將壓縮的備份文件上傳到新的或現有的 S3 存儲桶; 例如:aws s3 同步〜 <efs_mount_name>/全備份 s3://<bucket_name> /全備份。如需其他詳細資料,請參閱 < 相關資源 > 一節中的連結。

AWS DevOps
為 Aurora 建立服務角色以存取 Amazon S3。

建立具有信任「rds.amazonaws.com」的 IAM 角色,以及可讓 Aurora 存取儲存備份檔案的 S3 儲存貯體的政策。必要的權限是 [ListBucket]、[GetObject] 和 [物件版本]。

AWS DevOps
建立 Aurora 的網路組態。

建立具有至少兩個可用區域的叢集資料庫子網路群組,以及允許輸出連線至來源資料庫的子網路路由表組態。建立允許內部部署資料庫的輸出連線的安全性群組,並允許系統管理員連線至 Aurora DB 叢集。如需詳細資訊,請參閱 < 相關資源 > 一節中的連結。

AWS 開發人員/資料庫管理員
將備份還原至 Aurora MySQL 資料庫叢集。

從上傳至 Amazon S3 的備份還原資料。指定來源資料庫的 MySQL 版本,提供您上傳備份檔案的 S3 儲存貯體名稱和資料夾路徑前置詞 (例如,「其他資訊」一節中的範例為「完整備份」),並提供您為授權 Aurora 存取 Amazon S3 而建立的 IAM 角色。

AWS 開發人員/資料庫管理員
驗證 Aurora MySQL 資料庫。

根據您從來源資料庫取得的計數,驗證還原的 Aurora DB 叢集中的綱要和物件計數。

資料庫管理員
設定 Binlog 複寫。

在進行上次還原至 Aurora DB 叢集的備份之前,請先使用您先前記下的二進位記錄順序。在來源資料庫上建立複寫使用者,並遵循 < 其他資訊 > 一節中的指示來提供適當的權限、在 Aurora 上啟用複寫,以及確認複寫是否同步。

AWS 開發人員/資料庫管理員

建立 Amazon EFS 檔案系統

掛載檔案系統

製作 MySQL 來源資料庫備份

恢復備份到 Amazon Aurora

其他參考

教學和影片

其他資訊

安裝 NFS 用戶端

  • 如果您使用的是 Red Hat 或類似的 Linux 作業系統,請使用以下指令: 

$ sudo yum -y install nfs-utils
  • 如果您使用的是 Ubuntu 或類似的 Linux 作業系統,請使用以下命令: 

$ sudo apt-get -y install nfs-common

如需詳細資訊,請參閲 。演練在亞馬遜 EFS 文檔中。

掛載 Amazon EFS 檔案系統

使用命令:

mkdir ~/<efs_mount_name> $ sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport mount-target-IP:/ ~/<efs_mount_name>

如需詳細資訊,請參閲 。演練掛載 EFS 檔案系統在亞馬遜 EFS 文檔中。

製作 MySQL 來源資料庫備份

完整備份

使用類似下面的命令,它需要備份,壓縮它,並將其分割成每個 1 GB 的較小塊:

xtrabackup --backup --user=dbuser --password=<password> --binlog-info=AUTO --stream=tar --target-dir=~/<efs_mount_name>/fullbackup | gzip - | split -d --bytes=1024MB - ~/<efs_mount_name>/fullbackup/backup.tar.gz &

如果您打算在完整備份之後進行後續的增量備份,請勿壓縮並分割備份。而是使用類似於以下的命令:

xtrabackup --backup --user=dbuser --password=<password> --target-dir=~/<efs_mount_name>/fullbackup/

增量備份

使用 —增量基本參數的完整備份路徑;例如:

xtrabackup --backup --user=dbuser --password=<password> --target-dir=~/<efs_mount_name>/incremental/backupdate --incremental-basedir=~/<efs_mount_name>/fullbackup

wherebasedir是完整備份和檢查點檔案的路徑。

如需製作備份的詳細資訊,請參閱從外部 MySQL 資料庫將資料遷移至 Amazon Aurora MySQL 資料庫叢集在 Aurora 文檔中。

正在正在準備

若要準備完整備份:

xtrabackup --prepare --apply-log-only --target-dir=~/<efs_mount_name>/fullbackup

如何準備增量備份:

xtrabackup --prepare --apply-log-only --target-dir=~/<efs_mount_name>/fullbackup --incremental-dir=~/<efs_mount_name>/incremental/06062020

準備最終備份:

xtrabackup --prepare --target-dir=~/<efs_mount_name>/fullbackup --incremental-dir=~/<efs_mount_name>/incremental/06072020

如需詳細資訊,請參閱「」增量備份在博科納 XTra備份文件中。

壓縮和分割合併的備份

要在〜/<efs_mount_name>/完整備份壓縮合併的備份:

tar -zcvf <backupfilename.tar.gz> ~/<efs_mount_name>/fullbackup

若要分割備份:

split -d -b1024M --verbose  <backupfilename.tar.gz> <backupfilename.tar.gz>

設定 Binlog 複寫

在來源資料庫上建立複製使用者並提供適當的權限:

CREATE USER 'repl_user'@'' IDENTIFIED BY ''; GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'';

若要透過連線至 Aurora DB 叢集來啟用 Aurora 複寫:

CALL mysql.rds_set_external_master ('sourcedbinstanceIP', sourcedbport, 'repl_user', '', 'binlog_file_name', binlog_file_position, 0); CALL mysql.rds_start_replication;

若要確認複寫處於同步狀態:

SHOW Slave Status \G;

所以此在主人後面欄位會顯示 Aurora 與內部部署資料庫之後的距離。