本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Aurora DSQL 入門
Amazon Aurora DSQL 是針對交易工作負載最佳化的無伺服器分散式關聯式資料庫。在下列各節中,您將了解如何建立單一區域和多區域 Aurora DSQL 叢集、與其連線,以及建立和載入範例結構描述。您將使用 存取叢集 AWS Management Console ,並使用 psql
公用程式與資料庫互動。最後,您將設定並準備好用於測試或生產工作負載的工作 Aurora DSQL 叢集。
主題
先決條件
在開始使用 Aurora DSQL 之前,請確定您符合下列先決條件:
-
您的 IAM 身分必須具有登入 的 AWS Management Console許可。
-
您的 IAM 身分必須符合下列任一條件:
-
存取 以對 中的任何資源執行任何動作 AWS 帳戶
-
IAM 許可
iam:CreateServiceLinkedRole
和存取 IAM 政策動作的能力dsql:*
-
-
如果您在類似 AWS CLI Unix 的環境中使用 ,請確定已安裝 Python 3.8+ 版和 14+
psql
版。若要檢查您的應用程式版本,請執行下列命令。python3 --version psql --version
如果您在 AWS CLI 不同的環境中使用 ,請務必手動設定 Python 3.8+ 版和 14+
psql
版。 -
如果您打算使用 存取 Aurora DSQL AWS CloudShell,Python 3.8+ 版和 14+
psql
版無需額外設定。如需 的詳細資訊 AWS CloudShell,請參閱什麼是 AWS CloudShell?。 -
如果您想要使用 GUI 存取 Aurora DSQL,請使用 DBeaver 或 JetBrains DataGrip。如需詳細資訊,請參閱使用 DBeaver 存取 Aurora DSQL及使用 JetBrains DataGrip 存取 Aurora DSQL。
存取 Aurora DSQL
您可以透過下列技術存取 Aurora DSQL。若要了解如何使用 CLI、APIs和 SDKs,請參閱 存取 Aurora DSQL。
透過 存取 Aurora DSQL AWS Management Console
您可以在 存取 AWS Management Console 適用於 Aurora DSQL 的 https://console.aws.amazon.com/dsql
使用 SQL 用戶端存取 Aurora DSQL
Aurora DSQL 使用 PostgreSQL 通訊協定。在連線至叢集時,提供已簽署的 IAM 身分驗證字符做為密碼,以使用您偏好的互動式用戶端。身分驗證字符是 Aurora DSQL 使用 AWS Signature 第 4 版動態產生的唯一字元字串。
Aurora DSQL 僅使用權杖進行身分驗證。字符在建立之後不會影響連線。如果您嘗試使用過期的字符重新連線,連線請求會遭拒。如需詳細資訊,請參閱在 Amazon Aurora DSQL 中產生身分驗證字符。
主題
使用 psql 存取 Aurora DSQL (PostgreSQL 互動式終端機)
psql
公用程式是 PostgreSQL 的終端型前端。它可讓您以互動方式輸入查詢、將查詢發佈至 PostgreSQL,以及查看查詢結果。若要改善查詢回應時間,請使用 PostgreSQL 第 17 版用戶端。
從 PostgreSQL 下載psql
,請參閱 https://https://www.postgresql.org/docs/current/app-psql.htm
如果您已 AWS CLI 安裝 ,請使用下列範例來連接至您的叢集。您可以使用psql
預先安裝的 AWS CloudShell,也可以psql
直接安裝 。
# Aurora DSQL requires a valid IAM token as the password when connecting. # Aurora DSQL provides tools for this and here we're using Python. export PGPASSWORD=$(aws dsql generate-db-connect-admin-auth-token \ --region
us-east-1
\ --expires-in 3600 \ --hostnameyour_cluster_endpoint
) # Aurora DSQL requires SSL and will reject your connection without it. export PGSSLMODE=require # Connect with psql, which automatically uses the values set in PGPASSWORD and PGSSLMODE. # Quiet mode suppresses unnecessary warnings and chatty responses but still outputs errors. psql --quiet \ --username admin \ --dbname postgres \ --hostyour_cluster_endpoint
使用 DBeaver 存取 Aurora DSQL
DBeaver 是一種以 GUI 為基礎的開放原始碼資料庫工具。您可以使用它來連線至並管理您的資料庫。若要下載 DBeaver,請參閱 DBeaver 社群網站上的下載頁面
在 DBeaver 中設定新的 Aurora DSQL 連線
-
選擇新的資料庫連線。
-
在新資料庫連線視窗中,選擇 PostgreSQL。
-
在連線設定/主要索引標籤中,選擇依:主機連線,然後輸入下列資訊。
-
主機 – 使用您的叢集端點。
資料庫 – 輸入
postgres
身分驗證 – 選擇
Database Native
使用者名稱 – 輸入
admin
密碼 – 產生身分驗證字符。複製產生的字符並將其用作您的密碼。
-
-
忽略任何警告,並將您的身分驗證字符貼到 DBeaver 密碼欄位中。
注意
您必須在用戶端連線中設定 SSL 模式。Aurora DSQL 支援
SSLMODE=require
。Aurora DSQL 在伺服器端強制執行 SSL 通訊,並拒絕非 SSL 連線。 -
您應該連接到叢集,並且可以開始執行 SQL 陳述式。
重要
DBeaver 為 PostgreSQL 資料庫 (例如 Session Manager 和 Lock Manager) 提供的管理功能不適用於資料庫,因為它是唯一的架構。可存取時,這些畫面不會提供有關資料庫運作狀態或狀態的可靠資訊。
DBeaver 的身分驗證憑證過期
建立的工作階段會保持身分驗證最多 1 小時,或直到 DBeaver 中斷連線或逾時為止。若要建立新的連線,請在連線設定的密碼欄位中提供有效的身分驗證字符。嘗試開啟新的工作階段 (例如,列出新的資料表或新的 SQL 主控台) 會強制新的身分驗證嘗試。如果連線設定中設定的身分驗證字符不再有效,則新工作階段會失敗,且 DBeaver 會讓先前開啟的所有工作階段失效。使用 expires-in
選項選擇 IAM 身分驗證字符的持續時間時,請記住這一點。
使用 JetBrains DataGrip 存取 Aurora DSQL
JetBrains DataGrip 是跨平台 IDE,可用於 SQL 和資料庫,包括 PostgreSQL。DataGrip 包含具有智慧型 SQL 編輯器的強大 GUI。若要下載 DataGrip,請前往 JetBrains 網站上的下載頁面
在 JetBrains DataGrip 中設定新的 Aurora DSQL 連線
-
選擇新資料來源,然後選擇 PostgreSQL。
-
在資料來源/一般索引標籤中,輸入下列資訊:
-
主機 – 使用您的叢集端點。
連接埠 – Aurora DSQL 使用 PostgreSQL 預設:
5432
資料庫 – Aurora DSQL 使用 的 PostgreSQL 預設值
postgres
身分驗證 – 選擇
User & Password
。使用者名稱 – 輸入
admin
。密碼 – 產生字符並貼到此欄位。
URL – 請勿修改此欄位。它將根據其他欄位自動填入。
-
-
密碼 – 透過產生身分驗證字符來提供此功能。複製權杖產生器產生的輸出,並將其貼到密碼欄位中。
注意
您必須在用戶端連線中設定 SSL 模式。Aurora DSQL 支援
PGSSLMODE=require
。Aurora DSQL 會在伺服器端強制執行 SSL 通訊,並會拒絕非 SSL 連線。 -
您應該連接到叢集,並且可以開始執行 SQL 陳述式:
重要
DataGrip 為 PostgreSQL 資料庫 (例如工作階段) 提供的某些檢視因其唯一的架構而不適用於資料庫。可存取時,這些畫面不會提供有關連線到資料庫之實際工作階段的可靠資訊。
身分驗證憑證過期
建立的工作階段會保持身分驗證最多 1 小時,或直到發生明確中斷連線或用戶端逾時為止。如果需要建立新的連線,則必須在資料來源屬性的密碼欄位中產生並提供新的身分驗證字符。嘗試開啟新的工作階段 (例如,列出新的資料表或新的 SQL 主控台) 會強制新的身分驗證嘗試。如果連線設定中設定的身分驗證字符不再有效,則該新工作階段將會失敗,且所有先前開啟的工作階段都會失效。
搭配 Aurora DSQL 使用 PostgreSQL 通訊協定
PostgreSQL 使用訊息型通訊協定,在用戶端和伺服器之間進行通訊。透過 TCP/IP 和 Unix 網域通訊端支援通訊協定。下表顯示 Aurora DSQL 如何支援 PostgreSQL 通訊協定
PostgreSQL | Aurora DSQL | 備註 |
---|---|---|
角色 (也稱為使用者或群組) | 資料庫角色 | Aurora DSQL 會為您建立名為 的角色admin 。建立自訂資料庫角色時,您必須使用該admin 角色將它們與 IAM 角色建立關聯,以便在連線至叢集時進行驗證。如需詳細資訊,請參閱設定自訂資料庫角色。 |
主機 (也稱為主機名稱或 hostspec) | 叢集端點 | Aurora DSQL 單一區域叢集提供單一受管端點,並在區域內無法使用時自動重新導向流量。 |
連線埠 | 不適用 – 使用預設值 5432 |
這是 PostgreSQL 預設值。 |
資料庫 (dbname) | 使用 postgres |
當您建立叢集時,Aurora DSQL 會為您建立此資料庫。 |
SSL 模式 | SSL 一律啟用伺服器端 | 在 Aurora DSQL 中,Aurora DSQL 支援 require SSL 模式。沒有 SSL 的連線會遭到 Aurora DSQL 拒絕。 |
密碼 | 身分驗證字符 | Aurora DSQL 需要暫時身分驗證字符,而不是長期密碼。如需詳細資訊,請參閱 在 Amazon Aurora DSQL 中產生身分驗證字符。 |
步驟 1:建立 Aurora DSQL 單一區域叢集
Aurora DSQL 的基本單位是 叢集,這是您存放資料的位置。在此任務中,您會在單一 中建立叢集 AWS 區域。
在 Aurora DSQL 中建立單一區域叢集
-
登入 AWS Management Console ,並在 開啟 Aurora DSQL 主控台https://console.aws.amazon.com/dsql
。 -
選擇建立叢集,然後選擇單一區域。
-
(選用) 在叢集設定中,選取下列任一選項:
-
選取自訂加密設定 (進階) 以選擇或建立 AWS KMS key。
-
選取啟用刪除保護,以防止刪除操作移除您的叢集。根據預設,會選取刪除保護。
-
-
(選用) 在標籤中,選擇或輸入此叢集的標籤。
-
選擇 建立叢集。
步驟 2:連線至您的 Aurora DSQL 叢集
當您根據叢集 ID 和區域建立 Aurora DSQL 叢集時,會自動產生叢集端點。命名格式為
。用戶端使用端點來建立叢集的網路連線。clusterid
.dsql.region
.on.aws
身分驗證是使用 IAM 進行管理,因此您不需要將登入資料存放在資料庫中。身分驗證字符是動態產生的唯一字元字串。字符僅用於身分驗證,建立後不會影響連線。在嘗試連線之前,請確定您的 IAM 身分具有 dsql:DbConnectAdmin
許可,如中所述先決條件。
注意
若要最佳化資料庫連線速度,請使用 PostgreSQL 第 17 版用戶端,並將 PGSSLNEGOTIATION
設定為 Direct:PGSSLNEGOTIATION=direct
。
使用身分驗證字符連線至您的叢集
-
在 Aurora DSQL 主控台中,選擇您要連線的叢集。
-
選擇連線。
-
從端點 (主機) 複製端點。
-
請確定已在身分驗證字符 (密碼) 區段中選擇您以管理員身分連線。
-
複製產生的身分驗證字符。此字符的有效期為 15 分鐘。
-
在作業系統命令列上,使用下列命令啟動
psql
並連線至您的叢集。
將 取代為您先前複製的叢集端點。your_cluster_endpoint
PGSSLMODE=require \ psql --dbname postgres \ --username admin \ --host
your_cluster_endpoint
當系統提示您輸入密碼時,請輸入您先前複製的身分驗證字符。如果您嘗試使用過期的字符重新連線,連線請求會遭拒。如需詳細資訊,請參閱在 Amazon Aurora DSQL 中產生身分驗證字符。
-
按 Enter。您應該會看到 PostgreSQL 提示。
postgres=>
如果您收到存取遭拒錯誤,請確定您的 IAM 身分具有
dsql:DbConnectAdmin
許可。如果您擁有 許可並繼續取得存取拒絕錯誤,請參閱疑難排解 IAM 和如何使用 IAM 政策對存取遭拒或未經授權的操作錯誤進行故障診斷?。
步驟 3:在 Aurora DSQL 中執行範例 SQL 命令
執行 SQL 陳述式來測試您的 Aurora DSQL 叢集。下列範例陳述式需要名為 department-insert-multirow.sql
和 的資料檔案invoice.csv
,您可以從 GitHub 上的 aws-samples/aurora-dsql-samples
在 Aurora DSQL 中執行範例 SQL 命令
-
建立名為 的結構描述
example
。CREATE SCHEMA example;
-
建立使用自動產生的 UUID 做為主索引鍵的發票資料表。
CREATE TABLE example.invoice( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), created timestamp, purchaser int, amount float);
-
建立使用空白資料表的次要索引。
CREATE INDEX ASYNC invoice_created_idx on example.invoice(created);
-
建立部門資料表。
CREATE TABLE example.department(id INT PRIMARY KEY UNIQUE, name text, email text);
-
使用 命令
psql \include
載入您從 GitHub 上的 aws-samples/aurora-dsql-samples儲存庫下載 department-insert-multirow.sql
的名為 的檔案。將my-path
取代為本機複本的路徑。\include
my-path
/department-insert-multirow.sql -
使用 命令
psql \copy
載入您從 GitHub 上的 aws-samples/aurora-dsql-samples儲存庫下載 invoice.csv
的名為 的檔案。將my-path
取代為本機複本的路徑。\copy example.invoice(created, purchaser, amount) from
my-path
/invoice.csv csv -
查詢部門並依其總銷售額排序。
SELECT name, sum(amount) AS sum_amount FROM example.department LEFT JOIN example.invoice ON department.id=invoice.purchaser GROUP BY name HAVING sum(amount) > 0 ORDER BY sum_amount DESC;
下列範例輸出顯示 Department Three 的銷售額最多。
name | sum_amount --------------------------+-------------------- Example Department Three | 54061.67752854594 Example Department Seven | 53869.65965365204 Example Department Eight | 52199.73742066634 Example Department One | 52034.078869900826 Example Department Six | 50886.15556256385 Example Department Two | 50589.98422247931 Example Department Five | 49549.852635496005 Example Department Four | 49266.15578027619 (8 rows)
步驟 4:建立多區域叢集
當您建立多區域叢集時,您可以指定下列區域:
- 遠端區域
-
這是您在其中建立第二個叢集的區域。您在此區域中建立第二個叢集,並將其與初始叢集對等。Aurora DSQL 會將初始叢集上的所有寫入複寫到遠端叢集。您可以在任何叢集上讀取和寫入 。
- 見證區域
-
此區域會接收寫入多區域叢集的所有資料。不過,見證區域不會託管用戶端端點,也不會提供使用者資料存取。加密交易日誌的有限時段會保留在見證區域中。此日誌有助於復原,並在區域無法使用時支援交易仲裁。
下列範例示範如何建立初始叢集、在不同區域中建立第二個叢集,然後對等兩個叢集以建立多區域叢集。它還示範了跨區域寫入複寫以及來自兩個區域端點的一致讀取。
建立多區域叢集
-
登入 AWS Management Console ,並在 開啟 Aurora DSQL 主控台https://console.aws.amazon.com/dsql
。 -
在導覽窗格中,選擇叢集。
-
選擇建立叢集,然後選擇多區域。
-
(選用) 在叢集設定中,為您的初始叢集選取下列任一選項:
-
選取自訂加密設定 (進階) 以選擇或建立 AWS KMS key。
-
選取啟用刪除保護,以防止刪除操作移除您的叢集。根據預設,會選取刪除保護。
-
-
在多區域設定中,為您的初始叢集選擇下列選項:
-
在見證區域中,選擇區域。目前,多區域叢集中的見證區域僅支援美國區域。
-
(選用) 在遠端區域叢集 ARN 中,輸入另一個區域中現有叢集的 ARN。如果沒有叢集可做為多區域叢集中的第二個叢集,請在建立初始叢集後完成設定。
-
-
(選用) 選擇初始叢集的標籤。
-
選擇建立叢集以建立您的初始叢集。如果您在上一個步驟中未輸入 ARN,主控台會顯示叢集設定待定通知。
-
在叢集設定等待通知中,選擇完成多區域叢集設定。此動作會啟動在另一個區域中建立第二個叢集。
-
為您的第二個叢集選擇下列其中一個選項:
-
新增遠端區域叢集 ARN – 如果叢集存在,且您希望它成為多區域叢集中的第二個叢集,請選擇此選項。
-
在另一個區域中建立叢集 – 選擇此選項以建立第二個叢集。在遠端區域中,選擇第二個叢集的區域。
-
-
選擇
your-second-region
建立叢集,其中your-second-region
是第二個叢集的位置。主控台會在您的第二個區域中開啟。 -
(選用) 選擇第二個叢集的叢集設定。例如,您可以選擇 AWS KMS key。
-
選擇建立叢集以建立第二個叢集。
-
在
initial-cluster-region
中選擇對等,其中initial-cluster-region
是託管您建立的第一個叢集的區域。 -
出現提示時,選擇確認。此步驟會完成多區域叢集的建立。
連線至您的第二個叢集
-
開啟 Aurora DSQL 主控台,並選擇第二個叢集的區域。
-
選擇 Clusters (叢集)。
-
選取多區域叢集中第二個叢集的資料列。
-
在動作中,選擇在 CloudShell 中開啟。
-
選擇以管理員身分連線。
-
選擇啟動 CloudShell。
-
選擇執行。
-
依照中的步驟建立範例結構描述步驟 3:在 Aurora DSQL 中執行範例 SQL 命令。
交易範例
CREATE SCHEMA example; CREATE TABLE example.invoice(id UUID PRIMARY KEY DEFAULT gen_random_uuid(), created timestamp, purchaser int, amount float); CREATE INDEX ASYNC invoice_created_idx on example.invoice(created); CREATE TABLE example.department(id INT PRIMARY KEY UNIQUE, name text, email text);
-
使用
psql
copy
和include
命令載入範例資料。如需詳細資訊,請參閱步驟 3:在 Aurora DSQL 中執行範例 SQL 命令。\copy example.invoice(created, purchaser, amount) from samples/invoice.csv csv \include samples/department-insert-multirow.sql
從託管初始叢集的 區域查詢第二個叢集中的資料
-
在 Aurora DSQL 主控台中,選擇初始叢集的區域。
-
選擇 Clusters (叢集)。
-
選取多區域叢集中第二個叢集的資料列。
-
在動作中,選擇在 CloudShell 中開啟。
-
選擇 Connect as admin。
-
選擇啟動 CloudShell。
-
選擇執行。
-
查詢您插入第二個叢集的資料。
SELECT name, sum(amount) AS sum_amount FROM example.department LEFT JOIN example.invoice ON department.id=invoice.purchaser GROUP BY name HAVING sum(amount) > 0 ORDER BY sum_amount DESC;