Amazon Aurora:是什麼、如何運作以及如何入門

使用Amazon Aurora 一段時間後,在不同公司中,我第一手見識到它作為一個完全管理的關聯式數據庫引擎的優異表現,提供高性能、可擴展性和可靠性。

作為一個支持MySQL和PostgreSQL的雲原生解決方案,Aurora是對於需要高可用性和自動擴展的企業而言的絕佳選擇。由於AWS自動管理備份、故障切換和複製,使用Aurora可以提高數據庫效率,同時降低維護成本。

在本教程中,我將指導您如何設置Aurora實例,有效管理它,優化性能,確保安全性和成本效益。

什麼是AWS Aurora?

Amazon Aurora是一種基於雲的關聯式數據庫,通過動態調整存儲和計算資源,優於傳統的MySQL和PostgreSQL。

據AWS表示,Aurora能夠提供標準MySQL的高達五倍的吞吐量,以及標準PostgreSQL的三倍性能 – 這是由於其分佈式和高可用性架構。達到五倍MySQL的吞吐量,標準PostgreSQL的三倍性能 – 這是由於其分佈式和高可用性架構。

Aurora具有自動備份、用於水平擴展的讀取副本以及故障轉移機制等功能,確保最小的停機時間。

Aurora的存儲層設計具有容錯和自我修復功能。

此外,數據會自動在多個可用區(AZs)之間複製,以確保持久性。

下面的圖像提供了Amazon Aurora架構和關鍵功能的高級概述。

Aurora集群中集群卷、寫入型DB實例和讀取型DB實例之間的關係。來源:AWS文檔

數據庫引擎持續監控查詢並優化執行計劃,從而實現顯著的效率改進。

Aurora 的一個主要優勢是其與現有的 MySQLPostgreSQL 數據庫的兼容性,這使企業能夠輕鬆遷移,而不需要大幅修改其應用程序。

Aurora 的成本結構也非常有吸引力。它根據實際使用的計算和存儲資源收費。這種成本模型消除了過度配置基礎設施的需要,從而節省了費用。

> 如果您對 AWS 存儲選項有更廣泛的理解感興趣,請查看這個AWS 存儲教程

設置 AWS Aurora

建立AWS Aurora涉及創建數據庫集群、配置安全設置和確保適當的網絡訪問。讓我們在本部分進行這些操作!

> 如果您是AWS的新手,請考慮在深入研究Aurora之前通過參加介紹AWS課程來回顧基礎主題。

創建Aurora數據庫集群

設置Aurora數據庫集群需要進行一些關鍵步驟,包括選擇適當的數據庫引擎、配置安全設置和定義實例規格。

  • 要開始,請登錄AWS管理控制台並導航到RDS(關聯式數據庫服務)儀表板。
    • 您可以通過在 AWS 管理控制台的搜索面板中搜索“ Aurora”來完成此操作-如下圖所示。

  • 一旦進入後,點擊“創建數據庫”-如下圖所示。

  • “Amazon Aurora”作為數據庫引擎的選項。
    • 請記住,Aurora 支援 MySQL 和 PostgreSQL 兩種資料庫,因此選擇最符合您應用需求的版本至關重要。

下方圖片顯示目前可用的引擎選項。這些在未來可能會有所變化,但前兩個選項——Aurora (MySQL 兼容) 和 Aurora (PostgreSQL 兼容)——是 Aurora 引擎。

  • 在選擇引擎後,您必須指定實例類型和存儲配置。
    • Aurora 提供了靈活性,可以自動將存儲擴展至 128TB,確保增長的工作負載能夠高效處理,而無需手動干預。
  • 下一步是定义复制设置。您可以选择单实例部署,或启用读取副本以更有效地分发数据库流量。
    • 使用读取副本还可以增强可用性和容错能力,确保在故障发生时具有更高的耐用性。

下面的图片突出显示了“可用性和耐久性”部分,您可以在此处配置这些设置。

  • 网络配置阶段至关重要,涉及设置虚拟私有云(VPC)、选择安全组,并定义访问控制。
    • 安全组充当防火墙,调节入站和出站数据库流量。为增强安全性,建议仅允许来自信任的IP地址和应用程序的访问。

下面的图像突出了“连通性”部分,您可以在此设置和自定义这些配置。

  • 在设置过程中还必须配置数据库凭据 – 您需要分配一个主用户名和密码用于验证连接。
  • Aurora 允許啟用自動備份和點對點回復選項。這確保數據庫快照會被一致地創建以防止數據丟失。

在審查所有配置後,您可以繼續創建 Aurora 叢集。下面的圖像顯示了“創建數據庫” 按鈕,您可以點擊以啟動創建過程。

根據所選的實例大小和網絡設置,配置過程可能需要幾分鐘。

> 如果您是AWS服務的新手,回顧AWS雲端技術和服務課程可以幫助您了解與Aurora設置相關的關鍵AWS概念。配置網絡和安全

安全性對於管理Aurora數據庫至關重要,AWS提供多種工具來實施強大的訪問控制。

保護Aurora實例的第一步是配置VPC安全組。這些安全組確定哪些IP地址和服務可以與數據庫互動。

    • 您應該限制對特定應用程序伺服器和管理員的訪問,以防止未經授權的連接。
  • AWS身份和訪問管理(IAM)也可用於定義對數據庫操作的細粒度權限。
    • 整合IAM角色使您能夠根據特定用戶角色和責任來定制數據庫訪問權限。
    • 例如,應用程序開發人員可能只被授予讀取訪問權限,而管理員將完全控制數據庫修改。
  • 應啟用加密以保護敏感數據。AWS Aurora 支持使用 AWS 密鑰管理服務 (KMS) 的靜態和傳輸加密。
    • 對靜態數據進行加密確保即使存儲媒體被破壞,也需使用正確的解密密鑰才能訪問數據。
    • 同樣地,啟用傳輸數據的安全套接字層 (SSL) 加密可防止未經授權的截取數據庫通訊。

> 要深入瞭解如何保護 AWS 環境,可以看看 AWS Security and Cost Management 課程。如果您想更多地了解 IAM 的運作方式以及如何有效實施,可以參考這份 AWS Identity and Access Management (IAM) 指南。

連接到 AWS Aurora

與 AWS Aurora 進行連接對於與資料庫互動至關重要。您可以通過客戶端工具或應用程式來執行此操作。讓我們在這一部分中看看如何進行!

連接到 Aurora MySQL

一旦 Aurora 資料庫運行起來,您需要建立一個連線以開始與資料庫互動。

對於 Aurora MySQL,常見的資料庫客戶端如 MySQL Workbench 和 HeidiSQL 可以用來連接。或者,您可以使用命令列介面。

連線需要指定資料庫端點,在 AWS 管理控制台中可以找到。

使用 MySQL CLI,可以使用以下命令建立連線:

mysql -h your-cluster-endpoint -u admin -p

輸入主密碼後,您應該能夠執行 SQL 查詢,建立表格和管理資料。

連接到 Aurora PostgreSQL

對於 Aurora PostgreSQL,您可以使用工具如 pgAdmin 或 PostgreSQL 命令列介面(psql)進行連接。

在 psql 中的連接命令遵循這個格式:

psql -h your-cluster-endpoint -U admin -d yourdatabasename

就像 MySQL 一樣,必須輸入正確的憑證才能訪問資料庫。

一旦您獲得訪問權限,您應該能夠執行 SQL 查詢,建立表格和管理資料。

配置應用程式連接

需要與Aurora互動的應用程式必須配置適當的資料庫連線字串。通常,這些連線字串包含使用者名稱、密碼、埠號和端點。建議使用連線池來優化效能並降低為每個請求建立新連線的開銷。

流行的庫,如Python的SQLAlchemy或Java的JDBC,提供了在應用程式環境中管理連線的有效方式。

管理AWS Aurora

有效管理AWS Aurora包括確保資料保護、監控效能以及根據需要調整資源。在本節中,我們將檢視這些做法。

備份和快照

AWS Aurora提供持續捕獲和儲存資料庫變更的自動備份功能,儲存在Amazon S3中。這些備份根據使用者定義的設定保留,允許在保留期間內的任何時刻進行還原。

除了自動備份之外,您還可以創建超出保留視窗的手動快照。手動快照尤其適用於長期存檔或在執行重大資料庫更新之前。

當我在一個具關鍵應用程式的專案上工作時,我們每兩小時安排自動備份。然而,在對應用程式進行任何更改或更新之前,我們會手動創建一個備份,以確保在需要時可以回滾。這展示了如何有效地結合使用自動和手動備份。

下面的圖像顯示了如何使用AWS備份來進行Amazon Aurora的災難恢復。

Amazon Aurora的備份和恢復選項。來源:AWS博客

使用CloudWatch監控Aurora

性能監控對於維護健康的數據庫至關重要。

AWS CloudWatch提供即時指標,跟踪CPU利用率、內存使用情況、磁盤I/O和網絡流量。

設置CloudWatch警報可幫助管理員在性能閾值超過時收到通知,從而實現積極的數據庫管理。

此外,AWS Performance Insights提供詳細的查詢分析,以識別和優化運行緩慢的查詢。

下面的圖像演示了AWS Performance Insights如何提供有關數據庫性能的洞察。

AWS Performance Insights儀表板顯示數據庫性能指標。來源:AWS文檔

擴展Aurora

Aurora設計為根據需要自動調整存儲容量以擴展。但是,根據工作負載,計算資源如CPU和內存可能需要手動調整。

Aurora提供了通過添加讀取副本來擴展讀取容量的選項,這些副本分發讀取流量並提高性能。

在高可用性至關重要時,可以配置具有多個副本的Aurora集群,跨不同可用區以確保故障切換冗餘性。

在AWS Aurora中進行性能優化

在Amazon Aurora中優化性能可確保有效的查詢執行和可擴展性。讓我們在本節中總結一些最佳實踐。

索引和查詢優化

在Amazon Aurora中優化查詢性能對於維護高性能數據庫至關重要。

  • 索引是減少查詢執行時間並增強數據庫效率的最有效方式之一。
    • 在經常查詢的列上創建索引可以幫助快速定位數據,減少對完整表掃描的需求。
    • 您應該有策略地使用主要索引和次要索引來配合查詢模式和工作負載需求。
    • 除了上述之外,您還可以為涉及多個列的查詢使用組合索引來進一步提高查找時間。
  • 查詢優化在數據庫性能中也扮演著重要角色。編寫高效的SQL查詢可確保Aurora更快地處理請求並且消耗的資源更少。
    • 使用EXPLAIN或EXPLAIN ANALYZE在SQL查詢中有助於識別瓶頸,並提供執行計劃的洞察。技術,如避免使用SELECT *(檢索不必要的數據),對數據庫架構進行規範化以減少冗余,以及利用分區策略,可以帶來性能收益。
    • Aurora的查詢計劃優化器不斷完善執行計劃,根據數據庫工作負載模式進行調整,從而提高整體效率。

使用Aurora讀寫分離

為處理高流量負載,Amazon Aurora支持讀寫分離,有助於將讀密集型查詢分發到多個實例中。

讀取副本通過分開處理讀取請求減輕了主數據庫實例的負擔,從而提高了響應速度並降低了延遲。

要設置Aurora讀取副本,您需要選擇一個現有的Aurora集群並通過最小配置啟用複製。Aurora會自動在主實例和其副本之間同步數據,確保數據一致性,無需手動干預。

Aurora的複製機制非常高效,可以實現幾乎實時的數據同步,複製延遲少於一秒。

執行頻繁讀取操作的應用程序,如報告儀表板或分析服務,可以通過將讀取密集型查詢指向這些實例從而從讀取副本中受益。

在主要实例发生故障时,可以将只读副本提升为新的主要实例,最大程度减少停机时间,确保高可用性和业务连续性。

下面的图片显示跨区域Aurora副本如何帮助灾难恢复和高可用性。

用于灾难恢复和高可用性的跨区域Aurora只读副本。来源:AWS文档

用于Aurora的缓存策略

缓存是一种强大的技术,通过减少对Aurora的直接查询负载来提高数据库性能。缓存层可以显著加快对频繁访问查询的数据检索速度。

Amazon ElastiCache支持Redis和Memcached,通常与Aurora一起使用,用于存储查询结果并防止冗余数据库查询。

将缓存集成到应用架构中可以帮助提高响应时间,同时保留数据库计算资源。

缓存策略,如写入缓存(即数据同时写入缓存和Aurora)和惰性加载(即仅在请求时缓存数据),有助于根据使用模式优化性能。

为缓存数据配置适当的存活时间(TTL)可确保缓存保持新鲜,并防止检索过时数据。

AWS Aurora中的安全性和合规性

保護您的Aurora數據庫對於保護敏感數據和確保合規性至關重要。讓我們在本節中回顧最佳實踐。

數據加密

數據安全是數據庫管理的基礎,AWS Aurora提供強大的加密機制來保護敏感數據。

  • Aurora使用AWS Key Management Service(KMS)對 靜態數據進行加密,這確保存儲的信息即使底層存儲被入侵,也能保持安全。
    • 在建立資料庫時啟用加密可確保所有自動備份、快照和副本都繼承相同的加密設置。
  • 對於傳輸中的資料,Aurora支援SSL/TLS加密,可保護資料庫連線並防止未經授權的存取或攔截資料傳輸。
    • 連接到Aurora的應用程式應配置為使用SSL憑證以維護安全通訊。

這些加密措施可幫助您符合安全最佳實踐和法規要求。

下面的圖片展示了AWS KMS如何與Amazon Aurora集成,以加密您的數據庫。

AWS金鑰管理服務(KMS)用於加密Amazon Aurora中的數據,以符合安全合規要求。來源:AWS博客

IAM集成用於訪問控制

在Aurora中,訪問控制是通過AWS IAM管理的,這允許管理員根據用戶角色定義細粒度權限。

  • IAM策略可用於限制對數據庫實例的訪問,防止未經授權的用戶執行關鍵操作,如數據修改或管理任務。
  • IAM 認證提供了一種比傳統基於密碼的身份驗證更安全的替代方案。它允許應用程序使用臨時安全憑證進行連接。這消除了存儲和管理數據庫密碼的需求,降低了憑證曝露的風險。

您應該實施最小特權訪問原則,從而最大程度地減少安全風險並嚴格控制數據庫訪問。

下面的圖像顯示了如何配置 IAM 認證以保護 Amazon Aurora PostgreSQL 數據庫訪問。

IAM 認證與 Amazon Aurora PostgreSQL 集成。來源:AWS Blogs

使用 Aurora 日誌進行審計

監控和審計資料庫活動對於安全合規性和故障排除至關重要。

Aurora 提供幾種日誌機制,包括錯誤日誌、慢查詢日誌和一般日誌,這些都有助於管理員跟踪資料庫活動並識別潛在問題。這些日誌可以通過 AWS 管理控制台啟用,並存儲在 Amazon CloudWatch 中以便集中分析。

  • 錯誤日誌 捕獲資料庫引擎的錯誤和警告。
  • 慢查詢 日誌有助於識別可能影響性能的低效查詢。

分析這些日誌可以幫助管理員優化查詢執行,檢測未經授權的訪問嘗試,並確保數據庫的穩定性。

在 AWS Aurora 中的成本管理和優化

要有效地管理和優化 Amazon Aurora 的成本,您必須了解其定價結構。讓我們來複習一下!

了解 Aurora 的定價

Amazon Aurora 的定價模型基於多個因素,包括實例運行時間、存儲消耗、I/O 請求和數據傳輸。

與需要預先基礎設施規劃的傳統數據庫不同,Aurora 的按使用量付費模型允許企業僅支付其消耗的資源。

計算實例的計費是基於實例類別和正常運行時間,而存儲是動態調整的,消除了手動調整的需求。

下面的圖片提供了Amazon Aurora不同定價組件的明細。但請記住,定價可能會變動,因此最好查看以獲取最新信息。最新信息。最新信息。

額外費用包括超出分配的免費範圍的備份存儲、讀寫I/O請求,以及跨區域複製的數據傳輸費用。

瞭解這些定價組件可以幫助您預測支出,並就數據庫使用做出明智的決策。

通過Aurora優化成本

為了有效管理成本,組織可以實施多種優化策略。

選擇適當的實例大小將確保數據庫資源與工作量需求保持一致,而不會過度配置。

  • 如果您的工作量是可預測的,請使用預留實例,因為與按需定價相比,它們可以提供顯著的成本節省。
  • 儲存優化技術,例如監控未使用或利用不足的資源,有助於降低成本。
  • Aurora的自動擴展功能會動態調整儲存空間,避免不必要的儲存費用。
  • 此外,實施讀取副本可以減輕主要實例的查詢負荷,可能減少對更高層級實例的需求。
  • 利用Aurora Serverless,因為這是另一種應用程序具有可變工作量的成本效益選項。 Aurora Serverless根據需求自動擴展計算資源,確保企業只為實際使用而不是維護持續運行的實例而付費。

> 如果您想深入了解成本管理,請參考 AWS 安全和成本管理 課程。

結論

在多家公司使用 Amazon Aurora 一段時間後,我可以自信地說它是一個強大且可擴展的數據庫解決方案,使管理更加輕鬆,而不會影響性能—在完成本教程後,您很可能會同意這一點。

如果您正在尋找一個支持 MySQL 和 PostgreSQL 的雲原生關係數據庫,同時減少運營開銷,那麼值得考慮 Aurora。在我的一些項目中,它已經帶來了革命性的變化,如果您正在使用 AWS 數據庫,我強烈建議您瞭解其能力。

如果您是AWS数据库的新手,通過像AWS Cloud Practitioner (CLF-C02)這樣的課程學習基本概念會很有益!

Source:
https://www.datacamp.com/tutorial/amazon-aurora