藉由新增更多背景工作節點,在您的 Azure Arc 啟用的于 postgresql 超大規模伺服器群組中相應放大和縮小

本檔說明如何相應放大和縮減已啟用 Azure Arc 的于 postgresql 超大規模伺服器群組。 它會引導您完成案例。 如果您不想要執行此案例,而且只想要瞭解如何向外延展,請跳至段落 scale Outscale in

當您將 Postgres 實例新增 (Postgres 超大規模背景工作節點) 至 Azure Arc 啟用的 PosrgreSQL 超大規模時,會相應放大。

當您從 Azure Arc 啟用的 PosrgreSQL 超大規模中移除 Postgres 實例 (Postgres 超大規模背景工作) 節點時,就會相應縮小。

注意

作為預覽功能,本文所述的技術受限於 Microsoft Azure 預覽版增補使用規定

您可以在 版本資訊中取得最新的更新。

針對目前的更新,只有 Azure 入口網站才支援在直接連接模式中部署 Arc 資料控制器。

開始使用

如果您已經熟悉 Azure Arc 啟用的于 postgresql 超大規模或適用於 PostgreSQL 的 Azure 資料庫超大規模 (Citus) 的調整模型,您可以略過此段落。 如果不是,建議您在適用於 PostgreSQL 的 Azure 資料庫超大規模 (Citus) 的 [檔] 頁面中,開始閱讀有關此調整模型的資訊。 適用於 PostgreSQL 的 Azure 資料庫超大規模 (Citus) 是在 Azure 中以服務形式裝載的相同技術 (平臺即服務,也稱為 PAAS) ,而不是在啟用 Azure Arc 的資料服務中提供:

* 在上述檔中,略過登 入 Azure 入口網站 的區段,& 建立適用於 PostgreSQL 的 Azure 資料庫超大規模 (Citus)。 在 Azure Arc 部署中執行其餘步驟。 這些區段僅適用于適用於 PostgreSQL 的 Azure 資料庫超大規模 (Citus) 提供作為 Azure 雲端中的 PaaS 服務,但檔的其他部分可直接適用于已啟用 Azure Arc 的于 postgresql 超大規模。

狀況

此案例是指在 建立已啟用 Azure Arc 的于 postgresql 超大規模伺服器群組 檔中建立為範例的于 postgresql 超大規模伺服器群組。

載入測試資料

此案例使用可從Citus 資料網站取得的公開可用 GitHub 資料範例 (Citus 資料是 Microsoft) 的一部分。

連線已啟用 Azure Arc 的于 postgresql 超大規模伺服器群組

列出連接資訊

先取得連接資訊,連線到已啟用 Azure Arc 的于 postgresql 超大規模伺服器群組:此命令的一般格式為

azdata arc postgres endpoint list -n <server name>

例如:\

azdata arc postgres endpoint list -n postgres01

範例輸出︰

[
  {
    "Description": "PostgreSQL Instance",
    "Endpoint": "postgresql://postgres:<replace with password>@12.345.123.456:1234"
  },
  {
    "Description": "Log Search Dashboard",
    "Endpoint": "https://12.345.123.456:12345/kibana/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:\"postgres01\"'))"
  },
  {
    "Description": "Metrics Dashboard",
    "Endpoint": "https://12.345.123.456:12345/grafana/d/postgres-metrics?var-Namespace=arc3&var-Name=postgres01"
  }
]
使用您選擇的用戶端工具來連線。

執行下列查詢,以確認您目前有兩個 (或多個超大規模背景工作節點) ,分別對應至 Kubernetes pod:

SELECT * FROM pg_dist_node;
 nodeid | groupid |                       nodename                        | nodeport | noderack | hasmetadata | isactive | noderole | nodecluster | metadatasynced | shouldhaveshards
--------+---------+-------------------------------------------------------+----------+----------+-------------+----------+----------+-------------+----------------+------------------
      1 |       1 | pg1-1.pg1-svc.default.svc.cluster.local |     5432 | default  | f           | t        | primary  | default     | f              | t
      2 |       2 | pg1-2.pg1-svc.default.svc.cluster.local |     5432 | default  | f           | t        | primary  | default     | f              | t
(2 rows)

建立範例架構

藉由執行下列查詢來建立兩個數據表:

CREATE TABLE github_events
(
    event_id bigint,
    event_type text,
    event_public boolean,
    repo_id bigint,
    payload jsonb,
    repo jsonb,
    user_id bigint,
    org jsonb,
    created_at timestamp
);

CREATE TABLE github_users
(
    user_id bigint,
    url text,
    login text,
    avatar_url text,
    gravatar_id text,
    display_login text
);

JSONB 是于 postgresql 中二進位格式的 JSON 資料類型。 它會在單一資料行中儲存彈性的架構,並使用於 postgresql。 架構中將會有 GIN 索引,用來編制索引中的每個索引鍵和值。 使用 GIN 索引,可讓您快速且輕鬆地以該承載上的各種條件進行查詢。 我們會在載入資料之前,先建立幾個索引:

CREATE INDEX event_type_index ON github_events (event_type);
CREATE INDEX payload_index ON github_events USING GIN (payload jsonb_path_ops);

若要分區標準資料表,請針對每個資料表執行查詢。 指定我們想要分區的資料表,以及我們要分區的索引鍵。 我們將在 user_id 上分區 events 和 users 資料表:

SELECT create_distributed_table('github_events', 'user_id');
SELECT create_distributed_table('github_users', 'user_id');

載入範例資料

使用複製來載入資料 .。。從程式:

COPY github_users FROM PROGRAM 'curl "https://examples.citusdata.com/users.csv"' WITH ( FORMAT CSV );
COPY github_events FROM PROGRAM 'curl "https://examples.citusdata.com/events.csv"' WITH ( FORMAT CSV );

查詢資料

現在使用兩個節點來測量簡單查詢所需的時間:

SELECT COUNT(*) FROM github_events;

記下查詢執行時間。

擴增

相應放大命令的一般格式為:

azdata arc postgres server edit -n <server group name> -w <target number of worker nodes>

在此範例中,我們會執行下列命令,以將背景工作節點數目從2增加為4:

azdata arc postgres server edit -n postgres01 -w 4

新增節點之後,您會看到伺服器群組的擱置狀態。 例如:

azdata arc postgres server list
Name        State          Workers
----------  -------------  ---------
postgres01  Pending 4/5    4

節點可供使用之後,超大規模分區 Rebalancer 會自動執行,並將資料轉散發至新的節點。 相應放大作業是一種線上作業。 當新增節點,並在節點之間重新分配資料時,資料仍可供查詢使用。

確認伺服器群組的新圖形 (選用)

您可以使用下列其中一種方法,確認伺服器群組現在使用您新增的其他背景工作節點。

使用 azdata:

執行命令:

azdata arc postgres server list

它會傳回在命名空間中建立之伺服器群組的清單,並指出其背景工作節點的數目。 例如:

Name        State    Workers
----------  -------  ---------
postgres01  Ready    4

使用 kubectl:

執行命令:

kubectl get postgresqls

它會傳回在命名空間中建立之伺服器群組的清單,並指出其背景工作節點的數目。 例如:

NAME         STATE   READY-PODS   EXTERNAL-ENDPOINT   AGE
postgres01   Ready   4/4          10.0.0.4:31066      4d20h

使用 SQL 查詢:

使用您選擇的用戶端工具連線到您的伺服器群組,然後執行下列查詢:

SELECT * FROM pg_dist_node;
 nodeid | groupid |                       nodename                        | nodeport | noderack | hasmetadata | isactive | noderole | nodecluster | metadatasynced | shouldhaveshards
--------+---------+-------------------------------------------------------+----------+----------+-------------+----------+----------+-------------+----------------+------------------
      1 |       1 | pg1-1.pg1-svc.default.svc.cluster.local |     5432 | default  | f           | t        | primary  | default     | f              | t
      2 |       2 | pg1-2.pg1-svc.default.svc.cluster.local |     5432 | default  | f           | t        | primary  | default     | f              | t
      3 |       3 | pg1-3.pg1-svc.default.svc.cluster.local |     5432 | default  | f           | t        | primary  | default     | f              | t
      4 |       4 | pg1-4.pg1-svc.default.svc.cluster.local |     5432 | default  | f           | t        | primary  | default     | f              | t
(4 rows)

返回案例

如果您想要比較「選取計數」查詢的執行時間與範例資料集,請使用相同的「計數」查詢。 它可以在四個背景工作節點中使用,而不需要在 SQL 語句中進行任何變更。

SELECT COUNT(*) FROM github_events;

請注意執行時間。

注意

視您的環境而定-例如,如果您已將測試伺服器群組部署 kubeadm 在單一節點 VM 上,您可能會在執行時間看到適度的改進。 若要深入瞭解您可以使用 Azure Arc 啟用的于 postgresql 超大規模達到的效能改進類型,請觀看下列短片:

相應縮小

若要縮小 (減少伺服器群組中的背景工作節點數目) ,您可以使用與相應放大相同的命令,但您表示較少的背景工作節點數目。 移除的背景工作節點是加入至伺服器群組的最新背景工作節點。 當您執行此命令時,系統會將資料移出已移除的節點,並將 (重新平衡自動轉散發到其餘節點) 。

相應縮小命令的一般格式為:

azdata arc postgres server edit -n <server group name> -w <target number of worker nodes>

相應縮小作業是線上作業。 在移除節點時,您的應用程式會繼續存取資料,而將資料重新分配到其餘的節點。

下一步

* 在上述檔中,略過登 入 Azure 入口網站 的區段,& 建立適用於 PostgreSQL 的 Azure 資料庫超大規模 (Citus)。 在 Azure Arc 部署中執行其餘步驟。 這些區段僅適用于適用於 PostgreSQL 的 Azure 資料庫超大規模 (Citus) 提供作為 Azure 雲端中的 PaaS 服務,但檔的其他部分可直接適用于已啟用 Azure Arc 的于 postgresql 超大規模。