匯入任何 MariaDB 或 MySQL 資料庫執行個體來源的資料 - Amazon Relational Database Service

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

匯入任何 MariaDB 或 MySQL 資料庫執行個體來源的資料

建議您在資料載入之前和之後建立目標 Amazon RDS 資料庫執行個體的資料庫快照。Amazon RDS 資料庫快照是您資料庫執行個體的完整備份,可將您的資料庫執行個體還原至已知狀態。啟動資料庫快照作業時,資料庫執行個體的輸入/輸出操作會在資料庫備份時暫停。

若在載入前先建立資料庫快照,一旦有需要,就能將資料庫還原至載入前的狀態。若能在載入後立即拍攝資料庫快照,萬一發生事故,就不必重新載入資料,同時也能植入新的資料庫執行個體。

下列清單顯示要採取的步驟。下文將詳細討論各步驟。

  1. 建立一般檔案,其中需包含要載入的資料。

  2. 停止任何應用程式對目標資料庫執行個體的存取作業。

  3. 建立資料庫快照。

  4. 建議關閉 Amazon RDS 自動備份功能。

  5. 載入資料。

  6. 重新啟用自動備份。

步驟 1:建立一般檔案,其中需包含要載入的資料

使用逗號分隔值 (CSV) 等通用格式存放要載入的資料。每個資料表必須擁有各自的檔案;您不可將不同資料表的資料整併成同一檔案。以對應資料表的相同名稱命名各個檔案。副檔名可隨意指定。例如,如果資料表名稱為 sales,則檔案名稱可能是 sales.csvsales.txt,但不是 sales_01.csv

可以的話,依照預計載入之資料表的主索引鍵排序資料。這樣可以大幅縮短載入時間,並將磁碟儲存空間需求降至最低。

檔案越小,此程序的速度就會越快,效率越高。如有個別檔案未壓縮前的大小大於 1 GiB,請將檔案分割成多個檔案,再分別載入。

在泛 Unix 系統 (包括 Linux) 上,使用 split 命令。舉例來說,下列命令會將 sales.csv 檔案分割成多個小於 1 GiB 的檔案,且只會於分行處分割 (-C 1024m)。新檔案名稱為 sales.part_00sales.part_01,以此類推。

split -C 1024m -d sales.csv sales.part_

其他作業系統也有類似的公用程式可用。

步驟 2:停止任何應用程式對目標資料庫執行個體的存取作業

開始載入大量資料前,請先停止所有應用程式活動,使其暫停存取您預計要載入資料的目標資料庫執行個體。如果有其他工作階段會修改要載入或參考的資料表,我們尤其建議執行這項操作。這麼做可以降低載入期間違反限制條件的風險,並提升載入效能。此外,還可以將資料庫執行個體還原至載入前的時間點,以免遺失非載入作業程序所做的變更。

當然,這可能無法盡如人願,或可能不切實際。如果您無法在載入作業前停止應用程式存取資料庫執行個體,請採取因應措施,確保資料的可用性與完整性。所需的確切步驟會因特定使用案例與現場需求而異。

步驟 3:建立資料庫快照

如果您預計要載入資料的新資料庫執行個體內沒有資料,您可略過此步驟。否則,如能建立資料庫執行個體的資料庫快照,即可在必要時,將資料庫執行個體還原至載入前的時間點。如前所述,啟動資料庫快照作業時,資料庫執行個體的輸入/輸出操作會在資料庫備份時暫停幾分鐘。

下列範例使用命 AWS CLI create-db-snapshot令建立AcmeRDS執行個體的資料庫快照,並為資料庫快照提供識別碼"preload"

對於LinuxmacOS、或Unix:

aws rds create-db-snapshot \ --db-instance-identifier AcmeRDS \ --db-snapshot-identifier preload

在 Windows 中:

aws rds create-db-snapshot ^ --db-instance-identifier AcmeRDS ^ --db-snapshot-identifier preload

您也可以使用從資料庫快照還原的功能,建立試轉用的測試資料庫執行個體,或復原載入期間所做的變更。

請注意,如從資料庫快照還原資料庫,系統會建立新的資料庫執行個體,且如同所有資料庫執行個體一樣,該執行個體會具備獨一無二的識別碼與端點。若要還原資料庫執行個體,且不會變更端點,請先刪除資料庫執行個體,如此才能重新使用端點。

舉例來說,若要建立試轉或其他測試所需的資料庫執行個體,您必須賦予資料庫執行個體專屬識別符。在此例中,識別符是 AcmeRDS-2。範例使用與 AcmeRDS-2 關聯的端點連線至資料庫執行個體。

對於LinuxmacOS、或Unix:

aws rds restore-db-instance-from-db-snapshot \ --db-instance-identifier AcmeRDS-2 \ --db-snapshot-identifier preload

在 Windows 中:

aws rds restore-db-instance-from-db-snapshot ^ --db-instance-identifier AcmeRDS-2 ^ --db-snapshot-identifier preload

若要重新使用現有端點,請先刪除資料庫執行個體,然後指定相同的識別符給還原的資料庫。

對於LinuxmacOS、或Unix:

aws rds delete-db-instance \ --db-instance-identifier AcmeRDS \ --final-db-snapshot-identifier AcmeRDS-Final aws rds restore-db-instance-from-db-snapshot \ --db-instance-identifier AcmeRDS \ --db-snapshot-identifier preload

在 Windows 中:

aws rds delete-db-instance ^ --db-instance-identifier AcmeRDS ^ --final-db-snapshot-identifier AcmeRDS-Final aws rds restore-db-instance-from-db-snapshot ^ --db-instance-identifier AcmeRDS ^ --db-snapshot-identifier preload

前述範例是在刪除資料庫執行個體前擷取資料庫的最終資料庫快照。此為選用操作,但建議您採用。

步驟 4:建議關閉 Amazon RDS 自動備份功能

警告

如果您需要執行 point-in-time復原,請勿關閉自動備份。

關閉自動備份會清除所有現有的備份,因此在關閉自動備份後無法進行 point-in-time復原。停用自動備份功能可產生最佳化效能,但並非資料載入作業的必要功能。關閉自動備份功能不會影響手動資料庫快照。所有現有手動資料庫快照仍可用於復原作業。

關閉自動備份功能可將載入時間減少約 25%,並可降低載入期間所需的儲存空間。如果您預計載入資料的新資料庫執行個體不含任何資料,則要加快載入速度,並避免備份產生額外的儲存空間需求,關閉備份功能是最簡單的方式。不過,在某些情況下,您可能會計劃載入已包含資料的資料庫執行個體。如果是這樣,請權衡關閉備份與失去執行能力的影響所帶來的好處 point-in-time-recovery。

預設情況下,資料庫執行個體會開啟自動備份功能 (保留期為 1 天)。若要關閉自動備份,請將備份保留期設為零。載入後,您可以將備份保留期設為非零的值,以重新開啟自動備份功能。若要開啟或關閉備份功能,Amazon RDS 會關閉資料庫執行個體,然後重新啟動,以便開啟或關閉 MariaDB 或 MySQL 記錄功能。

使用指 AWS CLI modify-db-instance令將備份保留設定為零,並立即套用變更。將保留期設為 0 需要重新啟動資料庫執行個體,請靜待重新啟動作業完成,再繼續操作。

對於LinuxmacOS、或Unix:

aws rds modify-db-instance \ --db-instance-identifier AcmeRDS \ --apply-immediately \ --backup-retention-period 0

在 Windows 中:

aws rds modify-db-instance ^ --db-instance-identifier AcmeRDS ^ --apply-immediately ^ --backup-retention-period 0

您可以使用 AWS CLI describe-db-instances指令檢查資料庫執行個體的狀態。以下範例顯示 AcmeRDS 資料庫執行個體的資料庫執行個體狀態。

aws rds describe-db-instances --db-instance-identifier AcmeRDS --query "*[].{DBInstanceStatus:DBInstanceStatus}"

當資料庫執行個體狀態為 available 時,您即可繼續操作。

步驟 5:載入資料

使用 MySQL LOAD DATA LOCAL INFILE 陳述式將資料列從平面檔案讀取到資料庫資料表中。

下列範例說明如何將資料從名為的檔案載sales.txt入資料庫Sales中名為的資料表。

mysql> LOAD DATA LOCAL INFILE 'sales.txt' INTO TABLE Sales FIELDS TERMINATED BY ' ' ENCLOSED BY '' ESCAPED BY '\\'; Query OK, 1 row affected (0.01 sec) Records: 1 Deleted: 0 Skipped: 0 Warnings: 0

如需有關LOAD DATA陳述式的詳細資訊,請參閱 MySQL 文件

步驟 6:重新開啟 Amazon RDS 自動備份功能

載入完成後,您可以將備份保留期設回載入前的值,以重新開啟 Amazon RDS 自動備份功能。如前所述,Amazon RDS 會重新啟動資料庫執行個體,所以短暫停機是正常現象。

下列範例會使用命 AWS CLI modify-db-instance令來開啟AcmeRDS資料庫執行個體的自動備份,並將保留期限設定為一天。

對於LinuxmacOS、或Unix:

aws rds modify-db-instance \ --db-instance-identifier AcmeRDS \ --backup-retention-period 1 \ --apply-immediately

在 Windows 中:

aws rds modify-db-instance ^ --db-instance-identifier AcmeRDS ^ --backup-retention-period 1 ^ --apply-immediately