Amazon RDS - MySQL 資料庫匯入匯出



Amazon RDS MySQL 提供了將資料匯入資料庫和從資料庫匯出資料的簡便方法。成功連線到 MySQL 資料庫後,我們可以使用 CLI 工具執行匯入和匯出命令,將來自其他來源的資料匯入和匯出到 RDS 資料庫。以下是決定將資料匯入 Amazon RDS - MySQL 資料庫的方法時需要考慮的場景。

來自現有 MySQL 資料庫

現有的 MySQL 資料庫可能位於本地或另一個 EC2 例項中。下圖顯示了我們的操作過程。

 on_premise.jpg

建立本地資料庫備份

第一步是使用以下命令建立本地資料庫的備份。

mysqldump -u user -p[user_password] [database_name] > backupfile.sql

將建立一個名為 backupfile.sql 的檔案,其中包含表結構以及要使用的資料。

將備份檔案儲存在 S3 中。

將上面建立的備份檔案上傳到目標 RDS MySQL 資料庫所在的同一區域中預先確定的 Amazon S3 儲存桶。您可以訪問 此連結 瞭解如何上傳。

將資料從 Amazon S3 匯入 RDS-MySQL 資料庫

您可以使用以下 Amazon CLI 命令將資料從 S3 匯入 MySQL 資料庫。

aws rds restore-db-instance-from-s3 \  
--allocated-storage 125 \ 
--db-instance-identifier tddbidentifier \
--db-instance-class db.m4.small \
--engine mysql \
--master-user-name masterawsuser \
--master-user-password masteruserpassword \
--s3-bucket-name tpbucket \
--s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename \
--s3-prefix bucketprefix \
--source-engine mysql \
--source-engine-version 5.6.27

來自另一個 RDS-MySQL 例項

在某些情況下,您可能希望將現有 RDS MYSQL 資料庫中的資料複製到另一個 RDS MYSQL 資料庫。例如,建立災難恢復資料庫或僅用於業務報告的資料庫等。在這種情況下,我們建立只讀副本,它是其源資料庫的副本,然後將該只讀副本提升為新的資料庫例項。當我們想要複製資料時,它們用於防止直接從原始源資料庫進行大量讀取。

建立只讀副本

aws rds create-db-instance-read-replica \
    --db-instance-identifier myreadreplica \
    --source-db-instance-identifier mydbinstance

將只讀副本提升為資料庫例項

現在我們有了副本,可以將其提升為獨立的資料庫例項。這將滿足我們從 RDS-Mysql 資料庫匯入資料的最終需求。使用以下命令完成將只讀副本提升為資料庫例項的操作。

aws rds create-db-instance-read-replica \
    --db-instance-identifier readreplica_name \
    --region target_region_name
    --db-subnet-group-name subnet_name 
    --source-db-instance-identifier arn:aws:rds:region_name:11323467889012:db:mysql_instance1 

來自任何資料庫

為了將資料從任何其他資料庫匯入 Amazon RDS-MySQL,我們必須使用 Amazon 資料遷移服務,也稱為 Amazon DMS。它使用模式轉換工具將現有資料庫轉換為 MYSQL 平臺。下圖說明了整個過程。它也基於上一節中描述的類似複製原理。

 amazon_dms.jpg

從 MySQL 匯出資料

從 Amazon RDS Mysql 資料庫匯出資料是一個直接的過程,它基於我們上面看到的相同複製原理。以下是執行匯出過程的步驟。

  • 啟動 Amazon RDS 外部執行的 MySQL 例項。
  • 將 MySQL 資料庫例項指定為複製源。
  • 使用 mysqldump 將資料庫從 Amazon RDS 例項傳輸到 Amazon RDS 外部的例項。

以下是 mysqldum 命令的程式碼

mysqldump -h RDS instance endpoint \
    -u user \
    -p password \
    --port=3306 \
    --single-transaction \
    --routines \
    --triggers \
    --databases  database database2 \
    --compress  \
    --compact | mysql \
        -h MySQL host \
        -u master user \
        -p password \
        --port 3306 
廣告
© . All rights reserved.