AWS RDS MySQL 資料庫建立與連線設定

A comprehensive guide to creating and configuring AWS RDS MySQL database instances, including security group settings, connection methods, and backup strategies

前言

在現代雲端架構中,資料庫是應用程式不可或缺的核心元件。Amazon RDS(Relational Database Service)提供了一個託管式的關聯式資料庫服務,讓開發者能夠專注於應用程式開發,而無需擔心資料庫的維運工作。本文將介紹如何在 AWS 上建立 RDS MySQL 執行個體,並完成相關的連線設定。

RDS 簡介

Amazon RDS 是 AWS 提供的託管式關聯式資料庫服務,支援多種資料庫引擎,包括:

  • MySQL
  • PostgreSQL
  • MariaDB
  • Oracle
  • Microsoft SQL Server
  • Amazon Aurora

RDS 的主要優勢

  1. 自動化管理:RDS 會自動處理資料庫的硬體配置、資料庫設定、修補程式更新等工作
  2. 高可用性:支援 Multi-AZ 部署,提供自動故障轉移功能
  3. 可擴展性:可輕鬆調整運算和儲存資源
  4. 安全性:整合 VPC、安全群組和 IAM,提供多層次的安全防護
  5. 備份與還原:自動備份和手動快照功能,確保資料安全

建立 RDS 執行個體步驟

步驟一:登入 AWS 控制台

  1. 前往 AWS Management Console
  2. 在服務搜尋欄中輸入「RDS」並選擇該服務

步驟二:建立資料庫

  1. 點擊「建立資料庫」按鈕
  2. 選擇資料庫建立方式:
    • 標準建立:完整的設定選項
    • 輕鬆建立:使用建議的最佳實務設定

步驟三:選擇引擎選項

  1. 選擇「MySQL」作為資料庫引擎
  2. 選擇 MySQL 版本(建議使用最新的穩定版本,如 8.0.x)

步驟四:選擇範本

根據您的需求選擇適合的範本:

  • 生產:適用於正式環境,預設啟用 Multi-AZ 部署
  • 開發/測試:適用於開發環境,成本較低
  • 免費方案:適用於學習和測試,12 個月內免費

步驟五:設定執行個體規格

1
2
3
4
5
6
7
設定項目範例:
- DB 執行個體識別碼:my-mysql-database
- 主要使用者名稱:admin
- 主要密碼:[設定強密碼]
- DB 執行個體類別:db.t3.micro(免費方案)
- 儲存類型:通用 SSD (gp2)
- 配置的儲存空間:20 GiB

步驟六:連線設定

  1. VPC:選擇要部署的 VPC
  2. 子網路群組:選擇或建立子網路群組
  3. 公開存取
    • 選擇「是」:可從 VPC 外部連線(需搭配安全群組設定)
    • 選擇「否」:僅限 VPC 內部連線
  4. VPC 安全群組:建立或選擇現有的安全群組

步驟七:其他設定

  1. 資料庫驗證:選擇密碼驗證或 IAM 資料庫驗證
  2. 初始資料庫名稱:設定預設建立的資料庫名稱
  3. 備份保留期間:設定自動備份的保留天數(0-35 天)
  4. 維護時段:設定維護作業的執行時間

安全群組設定

安全群組是 RDS 執行個體的虛擬防火牆,控制進出流量的規則。

建立安全群組

  1. 前往 EC2 控制台 → 安全群組
  2. 點擊「建立安全群組」
  3. 設定基本資訊:
    • 安全群組名稱:rds-mysql-sg
    • 描述:Security group for RDS MySQL
    • VPC:選擇與 RDS 相同的 VPC

設定傳入規則

1
2
3
4
5
6
7
類型:MySQL/Aurora
協定:TCP
連接埠範圍:3306
來源:
  - 特定 IP:x.x.x.x/32
  - EC2 安全群組:sg-xxxxxxxx
  - VPC CIDR:10.0.0.0/16

安全性最佳實務

  1. 最小權限原則:僅開放必要的來源 IP 或安全群組
  2. 避免使用 0.0.0.0/0:不建議對所有 IP 開放
  3. 使用安全群組參照:透過安全群組 ID 來管理存取權限
  4. 定期審查規則:定期檢視並移除不再需要的規則

連線方式

取得連線資訊

  1. 在 RDS 控制台選擇您的資料庫執行個體
  2. 在「連線與安全性」標籤中找到:
    • 端點:資料庫的 DNS 名稱
    • 連接埠:預設為 3306

使用 MySQL 用戶端連線

1
mysql -h <endpoint> -P 3306 -u admin -p

範例:

1
mysql -h my-mysql-database.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -P 3306 -u admin -p

使用程式語言連線

Python 範例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import pymysql

connection = pymysql.connect(
    host='my-mysql-database.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com',
    port=3306,
    user='admin',
    password='your_password',
    database='your_database'
)

try:
    with connection.cursor() as cursor:
        cursor.execute("SELECT VERSION()")
        result = cursor.fetchone()
        print(f"MySQL Version: {result[0]}")
finally:
    connection.close()

Node.js 範例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
const mysql = require('mysql2');

const connection = mysql.createConnection({
    host: 'my-mysql-database.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com',
    port: 3306,
    user: 'admin',
    password: 'your_password',
    database: 'your_database'
});

connection.connect((err) => {
    if (err) {
        console.error('連線失敗:', err);
        return;
    }
    console.log('成功連線到 RDS MySQL');
});

透過 SSH 通道連線(Bastion Host)

如果 RDS 未開放公開存取,可透過跳板機(Bastion Host)建立 SSH 通道:

1
2
3
4
5
# 建立 SSH 通道
ssh -i your-key.pem -L 3306:<rds-endpoint>:3306 ec2-user@<bastion-host-ip> -N

# 在另一個終端機連線
mysql -h 127.0.0.1 -P 3306 -u admin -p

備份與快照

自動備份

RDS 提供自動備份功能,會在指定的備份時段內自動建立資料庫的備份。

設定自動備份:

  1. 在 RDS 控制台選擇資料庫執行個體
  2. 點擊「修改」
  3. 在「備份」區段設定:
    • 備份保留期間:1-35 天
    • 備份時段:選擇低流量時段

自動備份特點:

  • 包含交易日誌,支援時間點還原
  • 備份保留期間到期後自動刪除
  • 可還原到保留期間內的任意時間點

手動快照

手動快照(Snapshot)是使用者主動建立的資料庫備份。

建立快照:

  1. 在 RDS 控制台選擇資料庫執行個體
  2. 點擊「動作」→「建立快照」
  3. 輸入快照識別碼並確認

使用 AWS CLI 建立快照:

1
2
3
aws rds create-db-snapshot \
    --db-instance-identifier my-mysql-database \
    --db-snapshot-identifier my-snapshot-20230521

從快照還原

還原步驟:

  1. 在 RDS 控制台選擇「快照」
  2. 選擇要還原的快照
  3. 點擊「動作」→「還原快照」
  4. 設定新執行個體的名稱和規格
  5. 點擊「還原資料庫執行個體」

注意事項:

  • 還原會建立新的資料庫執行個體
  • 需要重新設定安全群組和參數群組
  • 建議在正式還原前先進行測試

跨區域複製快照

為了災難復原,可將快照複製到其他區域:

1
2
3
4
aws rds copy-db-snapshot \
    --source-db-snapshot-identifier arn:aws:rds:ap-northeast-1:123456789012:snapshot:my-snapshot \
    --target-db-snapshot-identifier my-snapshot-copy \
    --region us-west-2

總結

本文介紹了 AWS RDS MySQL 資料庫的建立與設定流程,包括:

  1. RDS 服務的基本概念與優勢
  2. 建立 RDS MySQL 執行個體的詳細步驟
  3. 安全群組的設定與最佳實務
  4. 多種連線方式的說明與範例
  5. 備份與快照的管理策略

透過 RDS 託管服務,我們可以大幅降低資料庫維運的負擔,專注於應用程式的開發。建議在實際部署前,先在開發環境中熟悉各項設定,並根據實際需求調整執行個體規格和備份策略。

參考資源

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy