將本機 MySQL 資料庫遷移到 AWS RDS
在這篇文章中,我將分享使用 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)
預計每月費用:
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中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

UseMySQLEnterpriseAuditPluginifonEnterpriseEditionbyenablingitinconfigurationwithserver-audit=FORCE_PLUS_PERMANENTandcustomizeeventsviaserver_audit_events;2.Forfreealternatives,usePerconaServerorMariaDBwiththeiropen-sourceauditpluginslikeaudit_log;3.

MySQL用於金融系統需優化四個關鍵點:1.金融數據必須使用DECIMAL類型確保精度,時間字段使用DATETIME避免時區問題;2.索引設計要合理,避免頻繁更新字段建索引,組合索引按查詢順序排列並定期清理無用索引;3.使用事務確保一致性,控制事務粒度,避免長事務和非核心操作嵌入其中,並根據業務選擇合適隔離級別;4.對歷史數據按時間分區、歸檔冷數據並使用壓縮表,提升查詢效率並優化存儲。

TosecureMySQLeffectively,useobject-levelprivilegestolimituseraccessbasedontheirspecificneeds.Beginbyunderstandingthatobject-levelprivilegesapplytodatabases,tables,orcolumns,offeringfinercontrolthanglobalprivileges.Next,applytheprincipleofleastprivile

TooptimizeMySQLforreal-timedatafeeds,firstchoosetheInnoDBstorageenginefortransactionsandrow-levellocking,useMEMORYorROCKSDBfortemporarydata,andpartitiontime-seriesdatabytime.Second,indexstrategicallybyonlyapplyingindexestoWHERE,JOIN,orORDERBYcolumns,

處理大表時,MySQL性能和可維護性面臨挑戰,需從結構設計、索引優化、分錶策略等方面入手。 1.合理設計主鍵和索引:推薦使用自增整數作為主鍵以減少頁分裂;使用覆蓋索引提升查詢效率;定期分析慢查詢日誌並刪除無效索引。 2.分區表的合理使用:按時間範圍等策略分區,提升查詢和維護效率,但需注意分區裁剪問題。 3.考慮讀寫分離和分庫分錶:讀寫分離緩解主庫壓力,分庫分錶適用於數據量極大場景,建議使用中間件並評估事務和跨庫查詢問題。前期規劃和持續優化是關鍵。

MySQL支持CHECK約束以強制域完整性,自8.0.16版本起生效;1.創建表時添加約束:使用CREATETABLE定義CHECK條件,如年齡≥18、薪資>0、部門限定值;2.修改表添加約束:用ALTERTABLEADDCONSTRAINT限製字段值,如姓名非空;3.使用複雜條件:支持多列邏輯和表達式,如結束日期≥開始日期且完成狀態需有結束日期;4.刪除約束:通過ALTERTABLEDROPCONSTRAINT指定名稱刪除;5.注意事項:需MySQL8.0.16 、InnoDB或MyISAM引

Useamany-to-manyrelationshipwithajunctiontabletolinkitemsandtagsviathreetables:items,tags,anditem_tags.2.Whenaddingtags,checkforexistingtagsinthetagstable,insertifnecessary,thencreatemappingsinitem_tagsusingtransactionsforconsistency.3.Queryitemsbyta

是否值得將MySQL遷到雲上取決於具體使用場景。如果你的業務需要快速上線、彈性擴展和簡化運維,且能接受按需付費模式,那麼遷雲是值得的;但若你的數據庫長期穩定、對延遲敏感或受合規限制,則可能不划算。控製成本的關鍵包括選擇合適廠商與套餐、合理配置資源、利用預留實例、管理備份日誌及優化查詢性能。
