監視及設定資料庫伺服器
在公司將其內部部署資料庫遷移至適用於 MySQL/PostgreSQL 的 Azure 資料庫之後,他們仍需要一種方式來監視其效能。
身為資料庫開發人員,您已習慣使用資料庫專用工具和內部部署 VM 監視。 既然現在您的資料庫是在 Azure 上執行,您可以利用入口網站來使用單一工具監視所有不同的資料庫。
在此單元中,您將了解 Azure 監視器可如何支援監視您負責的資料庫健康情況。 當您發現問題時,您會看到如何變更資料庫的設定以解決問題。
如何使用 Azure 監視器以檢視資料庫的健康情況
使用 Azure 監視器來追蹤適用於 MySQL/PostgreSQL 的 Azure 資料庫中的資源使用。 在 Azure 入口網站中適用於您伺服器的 [計量] 頁面中,可讓您建立圖表,協助偵測效能的趨勢,並找出異常情況。
適用於 MySQL/PostgreSQL 的 Azure 資料庫的計量
可用來監視伺服器的計量分為四大類別:
- 儲存體計量
- 計量連線
- 資料處理資源使用率計量
- 複寫計量
儲存體計量
儲存體計量會追蹤整個伺服器資料庫的大小總計 (已使用的儲存空間),以及伺服器上的目前儲存空間量 (儲存空間限制)。 在作用中的系統中,您可能會發現 已使用的儲存空間 計量隨時間增加。 如果您已為伺服器選取自動成長選項,儲存空間限制 計量會在可用空間量降低時偶爾增加。 每當可用空間量低於目前使用量的 5% 時,就會新增額外的儲存空間。 使用 儲存體百分比 計量以檢視您的伺服器上已使用空間和可用空間的比例。
如果您的伺服器定期花時間增加儲存體,請考慮以手動方式指派更多空間。 若要這麼做,請在 Azure 入口網站中,為您的伺服器選取 [定價層] 頁面,並使用 [儲存體] 滑桿。 請記住,您需支付儲存體的費用,因此請勿將可用的儲存體設為「高」。
已使用的備份儲存體 計量顯示您的備份需要多少空間。 從成本觀點來看,此計量非常重要。 只要備份儲存體保持在低於配置給您伺服器的儲存空間大小,就不會向您收取費用 (依定價層指定)。 當您超過此限制時,會產生備份儲存體的費用。
計量連線
作用中連線 計量顯示伺服器目前支援的並行連線數。 這可能與並行使用者人數不同,取決於您是否已設定任何類型的連線集區而定。 適用於 MySQL/PostgreSQL 的 Azure 資料庫目前不提供任何連線集區功能,但您可以使用 Proxy 服務,例如 PgBouncer* (適用於 PostgreSQL) 來執行此功能。 如需詳細資訊,請參閱使用適用於 PostgreSQL 的 Azure 資料庫 – 連線集區的效能最佳做法
失敗的連線 計量顯示使用者呈現無效認證的頻率。 短時間內的大量事件可能表示密碼蠻力攻擊。
資料處理資源使用率計量
這些計量可協助您監視伺服器處理工作負載的方式。
CPU 百分比 計量顯示 CPU 忙碌的程度。 高 CPU 使用率不是問題,除非它隨著時間不斷增加。 CPU 使用率超過 90% 但仍持續上升,表示您的系統接近處理容量。 您應該考慮擴充到具有更多資源的定價層。
記憶體百分比 計量表示記憶體佔用量。 適用於 MySQL/PostgreSQL 的 Azure 資料庫會使用記憶體以快取資料,並適用於執行每個用戶端要求起始的流程。 高記憶體使用量不是問題,直到它變成超量,通常會高於 95%,視可用的實際記憶體量而定。 記憶體可用性太低可能會導致連線失敗,而且效能會因為記憶體片段而變慢。 您應該監視此計量,以判斷記憶體佔用量是否隨時間增加,並適情況擴充您的伺服器。
IO 百分比 計量會追蹤伺服器執行的磁碟活動量。 理想情況下,此值應該越低越好。 磁碟 IO 是緩慢的作業。 此計量的高值結合 記憶體百分比 的高值,可能表示伺服器沒有足夠的資源可以有效地快取資料,而是必須讀取資料,並將其寫入磁碟儲存體。 某種程度的 IO 活動是無可避免的,因為您的資料必須在某個時間點保存到磁碟中,而且必須維護交易記錄。 在大多數的資料庫伺服器中,此寫入是由個別的處理程序或非同步執行的執行緒來執行的。
網路輸入 和 網路輸出 計量會顯示在作用中連線期間進入和離開伺服器的流量。 這些數字的限制取決於用戶端應用程式和伺服器之間的路徑頻寬。
複寫計量
適用於 PostgreSQL 的 Azure 資料庫提供 複本之間的最大延隔時間 和 複本延隔時間 計量,以幫助您判斷任何複本的更新程度。 只有當您已設定唯讀複本時,這些計量才有意義。
複本之間的最大延隔時間 計量顯示最慢的複本在主機後方有多少位元組。 您只能從主機監視此計量。
複本延隔時間 計量會顯示從主機收到最新交易,並套用至複本的時間 (以秒為單位)。 此計量只在檢視複本時才有意義。
適用於 MySQL 的 Azure 資料庫具有 複寫延隔時間 (秒) 計量。 此計量只能從複本監視,會顯示複本在主機後方延遲的秒數。
建立圖表和警示以監視效能
Azure 入口網站中伺服器的 [計量] 頁面可讓您建立追蹤計量值的圖表。 計量會以一分鐘的間隔收集。 對於每個計量,您可以指定決定如何報告該計量的彙總。
- 平均 會在每分鐘產生計量的平均值
- 最大值 顯示每分鐘達到的最大值
- 最小值 顯示最小值
- 總和 會加總計量
- 計數 顯示產生該計量之事件的發生次數
並非所有彙總對每個計量都有意義。
下列範例圖表針對 CPU 百分比、記憶體百分比、IO 百分比和作用中連線計量,擷取每分鐘的平均值。 您會看到有 101 個作用中連線全部同時執行。 CPU 和記憶體使用率都是穩定的,IO 百分比則是 0。 在此範例中,用戶端應用程式會執行需要大量讀取的工作負載,並在記憶體中快取所需的資料。
請注意,在要擷取的計量和圖表上顯示的結果之間,最多會有五分鐘的延隔時間。
如果計量指出資源即將達到臨界點,您可以設定警示以通知管理員。 下列範例說明如果記憶體使用率超過 90%,會傳送電子郵件給管理員。
設定伺服器參數
原生 MySQL 和 PostgreSQL 伺服器的可設定性很高,因為兩者皆使用儲存在參數檔案中的組態設定。 對於 PostgreSQL,此資訊會保留在 postgresql.conf 檔案中。 對於 MySQL,設定資料會儲存在各種 my.cnf 檔案中。 在適用於 MySQL/PostgreSQL 的 Azure 資料庫中,您無法直接存取這些檔案。 相反地,您可以使用 Azure 入口網站或 Azure CLI 來檢視和修改伺服器參數。
使用 Azure 入口網站來檢視和設定參數
您的伺服器適用的伺服器設定參數可在 Azure 入口網站之 [伺服器參數] 頁面中取得。 您可以視需要為您的伺服器修改參數值。 下圖顯示適用於 PostgreSQL 的 Azure 資料庫的伺服器參數頁面。 適用於 MySQL 的 Azure 資料庫的對應頁面很類似。
並非所有伺服器設定參數皆可供使用,因為大多數的伺服器設定是由 Azure 所控制。 例如,缺少與記憶體配置相關聯的參數。 此外,適用於 MySQL 的 Azure 資料庫不支援 ISAM 儲存體,因此不會有 myisam 參數。
標示為 Dynamic 的參數變更會立即生效。 標示為 Static 的參數會要求您重新開機伺服器。 您可以在 [概觀] 頁面中,為您的伺服器執行此操作。
使用 Azure CLI 來檢視和設定參數
您可以使用程式設計的方式,透過 az mysql/postgres server configuration
命令來檢視及修改參數。 使用 az mysql/postgres server configuration list
來檢視每個設定參數的設定,並使用 az mysql/postgres server configuration show [parameter-name]
鎖定單一參數。 下列程式碼片段顯示適用於 PostgreSQL 的 Azure 資料庫的範例:
az postgres server configuration show \
--resource-group northwindrg \
--server-name northwind101 \
--name vacuum_defer_cleanup_age
結果看起來如下所示:
{
"allowedValues": "0-1000000",
"dataType": "Integer",
"defaultValue": "0",
"description": "Number of transactions by which VACUUM and HOT cleanup should be deferred, if any.",
"id": "**********************",
"name": "vacuum_defer_cleanup_age",
"resourceGroup": "northwindrg",
"source": "system-default",
"type": "Microsoft.DBforPostgreSQL/servers/configurations",
"value": "0"
}
輸出中的重要項目是 [值] 欄位,顯示參數的目前設定。
使用 az mysql/postgres server configuration set
命令變更設定參數的值,如下所示:
az postgres server configuration set \
--resource-group northwindrg \
--server-name northwind101 \
--name vacuum_defer_cleanup_age \
--value 5
如果您在變更靜態參數之後需要重新開機伺服器,請執行 az mysql/postgres server restart
命令:
az postgres server restart \
--resource-group northwindrg \
--name northwind101