您可以設定維護期間和拒絕期間,控管 AlloyDB for PostgreSQL 叢集何時執行自動更新,避免在流量高峰時段中斷服務。無論是主要或次要叢集,您都可以設定、查看或清除維護期間、監控即將到來的排定維護事件,以及設定或移除拒絕期間。您也可以選擇加入排定維護事件的電子郵件通知。
如要概略瞭解維護作業的運作方式,請參閱「維護作業總覽」。您也可以瞭解如何使用測試叢集管理 AlloyDB 維護更新。
事前準備
為確保維護和更新作業能建立暫時的複製槽,以便同步處理狀態,請確認複製槽總數至少比 max_wal_senders 限制少一個。如要進一步瞭解如何設定這個旗標,請參閱「設定來源執行個體」。
設定叢集的維護期間
控制台
前往「Clusters」(叢集) 頁面。
在「Resource Name」(資源名稱) 欄中,按一下叢集。
在「Overview」(總覽) 頁面的「Maintenance」(維護) 中,按一下「Edit」(編輯)。
在「Maintenance window」(維護期間) 中,選取這個維護期間的星期幾。
預設選項為「任何時間範圍」。建立叢集時,系統會為叢集指派這個預設維護期間。
選取維護期間的時段。
按一下「更新」儲存變更。
gcloud
如要使用 gcloud CLI,您可以安裝並初始化 Google Cloud CLI,也可以使用 Cloud Shell。
如要設定叢集的維護期間,請執行 gcloud alloydb clusters update 指令,並加上 --maintenance-window-day 和 --maintenance-window-hour 旗標:
gcloud alloydb clusters update CLUSTER_ID \
--region LOCATION_ID \
--maintenance-window-day DAY_OF_WEEK \
--maintenance-window-hour HOUR_OF_DAY更改下列內容:
CLUSTER_ID:要設定維護期間的叢集。LOCATION_ID:這個叢集所在的 Google Cloud 區域,例如us-central1。DAY_OF_WEEK:這個維護時段的星期幾 (世界標準時間 (UTC) 時區)。有效值為MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY和SUNDAY。預設值為「Any window」(任何時間範圍)。建立叢集時,系統會為叢集指派這個預設維護期間。
HOUR_OF_DAY:介於0和23之間的整數,代表這個維護期間在世界標準時間時區中的小時。
如果叢集已在維護中或已排定維護,您對維護期間設定所做的變更,要等到目前或排定的維護完成後才會生效。
清除維護期間
控制台
前往「Clusters」(叢集) 頁面。
在「Resource Name」(資源名稱) 欄中,按一下叢集。
在「Overview」(總覽) 頁面的「Maintenance」(維護) 中,按一下「Edit」(編輯)。
在「維護期間」中,選取「任何時間」。
按一下「更新」儲存變更。
gcloud
如要使用 gcloud CLI,您可以安裝並初始化 Google Cloud CLI,也可以使用 Cloud Shell。
如要清除叢集的維護期間,請執行 gcloud alloydb clusters update 指令並加上 --maintenance-window-any 旗標:
gcloud alloydb clusters update CLUSTER_ID \
--region LOCATION_ID \
--maintenance-window-any更改下列內容:
CLUSTER_ID:要設定維護期間的叢集。LOCATION_ID:這個叢集所在的 Google Cloud 區域,例如us-central1。
查看叢集的維護期間
控制台
前往「Clusters」(叢集) 頁面。
在「Resource Name」(資源名稱) 欄中,按一下叢集。
在「Overview」(總覽) 頁面的「Maintenance」(維護) 中,查看叢集的維護期間詳細資料。
gcloud
如要使用 gcloud CLI,您可以安裝並初始化 Google Cloud CLI,也可以使用 Cloud Shell。
如要查看叢集目前的維護期間,請執行 gcloud alloydb clusters describe 指令:
gcloud alloydb clusters describe CLUSTER_ID \
--region LOCATION_ID更改下列內容:
CLUSTER_ID:要設定維護期間的叢集。LOCATION_ID:這個叢集所在的 Google Cloud 區域,例如us-central1。
如果叢集已設定維護期間,指令輸出內容會包含類似下方的行:
maintenanceUpdatePolicy:
maintenanceWindows:
- day: TUESDAY
startTime:
hours: 23
如果輸出內容不含 maintenanceUpdatePolicy 區段,表示叢集未設定維護期間。
查看叢集即將執行的維護作業
控制台
前往「Clusters」(叢集) 頁面。
找到叢集,然後查看「Maintenance」(維護) 欄,瞭解即將到來的維護期間。
gcloud
如要使用 gcloud CLI,您可以安裝並初始化 Google Cloud CLI,也可以使用 Cloud Shell。
如要查看已設定維護期間的叢集,有哪些即將執行的維護作業,請執行 gcloud alloydb clusters describe 指令:
gcloud alloydb clusters describe CLUSTER_ID \
--region LOCATION_ID更改下列內容:
CLUSTER_ID:要設定維護期間的叢集。LOCATION_ID:這個叢集所在的 Google Cloud 區域,例如us-central1。
如果叢集有預定的維護事件,指令輸出內容會包含類似下列的行:
maintenanceSchedule:
startTime: 2024-07-03T09:46:40Z
這個時間戳記採用世界標準時間格式,指定 AlloyDB 預計何時開始更新這個叢集中所有節點的系統軟體。
選擇接收維護作業通知
維護作業通知預設為停用。如果選擇接收 AlloyDB 即將進行維護作業的電子郵件通知,請注意下列事項:
- 活動排定後,您會立即收到自動通知。維護事件至少會提前一週排定。
- 維護通知會在 Google Cloud 專案層級啟用。您無法選擇只接收專案中部分叢集的通知。
- 你只能為自己啟用通知。每位使用者都必須個別選擇加入接收維護通知。
詳情請參閱「維護作業總覽」。
如要在已設定維護期間的叢集排定或取消維護事件時,收到自動電子郵件通知,請使用 Google Cloud 控制台按照下列步驟操作:
前往「Clusters」(叢集) 頁面。
在「Resource Name」(資源名稱) 欄中,按一下叢集。
在「Overview」(總覽) 頁面的「Maintenance」(維護) 部分,按一下
Notifications:列中的「Edit」(編輯)。按一下「通訊」。
在「AlloyDB」、「維護期間」列中,選取「電子郵件」欄中的切換鈕。
設定拒絕維護期
如要避免在特定時間範圍內執行維護作業,可以設定拒絕維護期。如果叢集執行的是最新版 AlloyDB,您可以設定拒絕維護。拒絕維護期可介於 1 到 30 天。
如果叢集中的執行個體採用舊版,不一定支援設定拒絕期。如要在版本不夠新的叢集上設定拒絕期,可以執行自助式維護來更新叢集。
現有的拒絕期不會阻擋自助式維護作業。
設定拒絕維護期
如要設定拒絕維護期,請設定開始日期、結束日期,以及時段的開始和結束時間。
開始和結束日期必須採用以下格式:
YYYY-MM-DD:表示特定日期
開始日期、結束日期和時間均以世界標準時間時區為準。
gcloud
如要使用 gcloud CLI,您可以安裝並初始化 Google Cloud CLI,也可以使用 Cloud Shell。
如要為 AlloyDB 叢集新增拒絕維護期,請執行 gcloud alloydb clusters update 指令,並加上 --deny-maintenance-period-start-date、--deny-maintenance-period-end-date 和 --deny-maintenance-period-time 旗標:
gcloud alloydb clusters update CLUSTER_ID \
--region LOCATION_ID \
--deny-maintenance-period-start-date START_DATE \
--deny-maintenance-period-end-date END_DATE \
--deny-maintenance-period-time TIME更改下列內容:
CLUSTER_ID:要設定免維護期的叢集。LOCATION_ID:這個叢集所在的 Google Cloud 區域,例如us-central1。START_DATE:免維護期的開始日期,採用YYYY-MM-DD世界標準時間格式。END_DATE:免維護期的結束時間,採用YYYY-MM-DD世界標準時間格式。TIME:免維護期的時間,採用HH:MM世界標準時間格式。小時以 24 小時制表示,值介於00:00到23:59之間,例如16:45。
REST v1
這個範例會為現有叢集新增拒絕維護期。如需這項呼叫的完整參數清單,請參閱「方法:projects.locations.clusters.patch」。
使用任何要求資料之前,請先替換下列項目:
CLUSTER_ID:要設定免維護期的叢集。PROJECT_ID:叢集所在專案的 ID。LOCATION_ID:這個叢集所在的 Google Cloud 區域,例如us-central1。START_YEAR:免維護期開始的年份,格式為YYYY。START_MONTH:免維護期開始的月份,格式為MM。如果月份為個位數,則可選擇是否在前面加上零,例如2和02都是有效的 2 月格式。START_DAY:免維護期開始的日期,格式為DD。如果日期為個位數,開頭可不加零,例如1和01都是當月第一天的有效值。END_YEAR:免維護期結束的年份,格式為YYYY。END_MONTH:免維護期結束的月份,格式為MM。END_DAY:免維護期結束的日期,格式為DD。HOURS:免維護期的時間 (24 小時制),例如16。單數位數的小時前面可以加上零,例如2和02都是有效值。MINUTES:免維護時段的分鐘,可接受0到59的值,例如45。如果分鐘數為個位數,則可選擇是否在前面加上零,7和07都是有效值。
如要新增拒絕維護期,請使用下列 PATCH 要求:
PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID?update_mask=maintenance_update_policy.deny_maintenance_periods
maintenance_update_policy.deny_maintenance_periods 查詢參數會指示 API 更新 maintenanceUpdatePolicy 區塊中的 denyMaintenancePeriods 欄位。
要求 JSON 主體如下所示:
{
"maintenanceUpdatePolicy": {
"denyMaintenancePeriods": [
{
"startDate": {
"year": START_YEAR,
"month": START_MONTH,
"day": START_DAY
},
"endDate": {
"year": END_YEAR,
"month": END_MONTH,
"day": END_DAY
},
"time": {
"hours": HOURS,
"minutes": MINUTES
}
}
]
}
}
拒絕即將執行的維護作業
拒絕維護期優先於排定的維護作業。如果時間發生衝突,拒絕維護期會覆寫排定的維護期間。
如果設定的拒絕時段與排定的維護事件衝突,系統不會立即取消維護作業並清除排程。AlloyDB 會將現有的排定維護作業顯示為「即將進行」,但在排定時間開始時,會取消排定的維護期間。
為確保套用重大更新,系統通常不允許設定拒絕期來略過多個維護事件,且在極少數情況下,可能會在設定的維護偏好設定以外套用緊急維護。
移除叢集的拒絕維護期
您隨時可以移除拒絕維護期。
gcloud
如要使用 gcloud CLI,您可以安裝並初始化 Google Cloud CLI,也可以使用 Cloud Shell。
如要移除 AlloyDB 叢集的拒絕維護期,請執行 gcloud alloydb clusters update 指令,並加上 --remove-deny-maintenance-period 旗標:
gcloud alloydb clusters update CLUSTER_ID --region LOCATION_ID --remove-deny-maintenance-period更改下列內容:
CLUSTER_ID:要移除拒絕維護期的叢集。LOCATION_ID:這個叢集所在的 Google Cloud 區域,例如us-central1。
REST v1
這個範例會從 AlloyDB 叢集移除拒絕維護期。如需這項呼叫的完整參數清單,請參閱「方法:projects.locations.clusters.patch」。
使用任何要求資料之前,請先替換下列項目:
CLUSTER_ID:要新增拒絕維護期的叢集 ID。PROJECT_ID:叢集所在的專案 ID。LOCATION_ID:這個叢集所在的 Google Cloud 區域,例如us-central1。
如要移除拒絕維護期,請使用下列 PATCH 要求:
PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID?update_mask=maintenance_update_policy.deny_maintenance_periods
maintenance_update_policy.deny_maintenance_periods 查詢參數會指示 API 更新 maintenanceUpdatePolicy 區塊中的 denyMaintenancePeriods 欄位。
要求 JSON 主體如下所示:
{}