將本機 MySQL 資料庫遷移到 AWS RDS

DDD
發布: 2024-09-12 20:16:59
原創
990 人瀏覽過

在這篇文章中,我將分享使用 MySQL 將本機 MySQL 資料庫中的資料移轉到 AWS RDS 上新建立的執行個體的詳細步驟。

背景

我在 2023 年參與了一個全端項目,手動處理資料庫和後端到 AWS 的生產部署。今年早些時候,我關閉了所有基礎設施,因為我每月在資料庫上累積了太多成本(不感謝我的過度配置)。

現在,快進到這個月,我仍然有大量 AWS 積分(作為社區建構者的福利)將於今年年底到期。我試著恢復我的項目,卻發現它並不像我想像的那麼容易。

首先,我沒有正確建立可用於復原生產資料的快照,並且不斷出現存取錯誤。我還想起了整個部署過程是多麼令人痛苦的手動操作,以及我如何沒有記錄我所採取的任何步驟(我也不記得它們)。

這是一個教訓,所以這次,我記錄了整個過程。正如我從未完成的 Udemy 課程中的一句話:

「在繼續自動化之前,您必須知道如何手動執行任務」。

因此,我將首先分享我手動執行遷移的步驟,在接下來的文章中,我將編寫腳本來使用 Terraform 提供基礎設施,並在成功後將本地資料轉儲到遠端資料庫中發射。

這也是我自己分配的正在進行的專案的一部分,旨在透過建置管道來自動化整個專案的部署來了解有關 CI/CD 的更多資訊。

A) 手動步驟

1. 在 Amazon RDS 上建立新的資料庫實例

這次的配置更加用心和實用。儘管這是一個“生產部署”,但我仍然選擇了可能是最便宜的運行成本,因為它不是實際的即時產品(這也影響了我選擇不添加的一些安全選項)。

我總結了我在「建立資料庫」精靈中選擇的選項,如下:

AWS Region: eu-west-2
Database creation method: Standard Create
Engine type/edition/version: MySQL/MySQL Community/MySQL 8.0.35
Use case template: Free Tier
Credential settings: define these as you'd prefer
DB instance class: db.t3.micro
Storage: gp2, 20GB, auto-scaling enabled up to 100GB
Connectivity: 
    - define these for your specific use-case; I chose not to use an EC2
    - Public access: Yes, because I wanted to connect to the database locally via MySQL Workbench
Database authentication: Password auth
Additional configuration:
    - I created one database from here; but you can also leave it blank and create one when you get access via Workbench
Others: 
    - use default options or modify for your use-case
Deletion protection:
    - enabled (to dissuade myself from deleting easily like the last time)
登入後複製

預計每月費用:

Migrate Your Local MySQL Database to AWS RDS

2.本地連線RDS實例

實例啟動成功後,使用mysql客戶端連線實例。這假設您已安裝並執行 MySQL 伺服器。

MySQL 入門
MySQL 客戶端

您還需要實例端點以及您在憑證設定中定義的使用者名稱和密碼來執行此命令:

mysql -h sample_endpoint.rds.amazonaws.com -u username_sample -p

登入後複製

注意:您的執行個體將使用所選 VPC 安全群組的正確入站和出站規則建立。

但是,如果您在連線時遇到錯誤,請確認您的 IP 位址包含在入站規則的允許來源中。當我在特定位置使用其 IP 位址建立實例時,我遇到了類似的問題,當我嘗試使用另一個位置的不同 IP 位址連接時,連接逾時。

[選用] 建立資料庫
如果您在建立實例時跳過了附加設定步驟,您可以在此步驟建立一個:

CREATE DATABASE sample_db;

登入後複製

3. 從本地資料庫匯入數據

為此,您首先需要使用 mysqldump 指令將本機資料庫中的架構和資料匯出到 .sql 轉儲檔:

mysqldump -u root -p local_db_name > sample_dump.sql

登入後複製

注意:如果您在嘗試匯出時遇到錯誤,請查看我在 Stack Overflow 上的問題以及可以解決一些可能問題的答案。

然後,使用 mysql 指令將轉儲檔案匯入到您的 RDS 實例中:

mysql -h sample_endpoint.rds.amazonaws.com -u username_sample -p 
sample_db < sample_dump.sql
登入後複製

4. [選用]透過MySQL Workbench連接到您的RDS實例

確認您能夠毫無問題地連接到實例,並檢查資料庫內的架構和資料以確認它們也已正確匯入。

無法連線?

  • 確保您已正確配置公共存取設置,或
  • 使用 EC2 執行個體安全地連線到資料庫並透過執行個體執行 sql 指令。確保EC2實例也在RDS實例所在的VPC內。

接下來是:

  • 使用本文中所需的資料庫憑證(以及必要的基礎設施存取)部署到 App Runner,
  • 使用 Terraform 編寫腳本,並且
  • 建立 CI/CD 管道來更新未來的後端和前端更新。

以上是將本機 MySQL 資料庫遷移到 AWS RDS的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!