本文件是一系列文件的一部分,提供有關規劃及執行 Oracle® 11g/12c 資料庫遷移至 PostgreSQL 適用的 Cloud SQL 12 版的相關重要資訊和指引。除了初步設定部分外,本系列還包含以下部分:
- 將 Oracle 使用者遷移至 PostgreSQL 適用的 Cloud SQL:術語和功能
- 將 Oracle 使用者遷移至 PostgreSQL 適用的 Cloud SQL:資料類型、使用者和資料表
- 將 Oracle 使用者遷移至 PostgreSQL 適用的 Cloud SQL:查詢、預存程序、函式和觸發事件
- 將 Oracle 使用者遷移至 PostgreSQL 適用的 Cloud SQL:安全性、作業、監控和記錄 (本文件)
- 將 Oracle 資料庫使用者和結構定義遷移至 PostgreSQL 適用的 Cloud SQL
安全性
本節提供加密、稽核和存取控管的相關指南。
加密
Oracle 和 PostgreSQL 適用的 Cloud SQL 都提供資料加密機制,可在基本使用者驗證和使用者權限管理之外,再增加一層保護機制。
靜態資料加密
未透過網路傳輸的資料 (已儲存) 稱為「靜態資料」。Oracle 提供 TDE (透明資料加密) 機制,可在作業系統層級新增加密層。在 Cloud SQL 中,系統會使用 256 位元進階加密標準 (AES-256) 或更高級的加密標準來加密資料。這些資料金鑰會使用儲存在安全 KeyStore 中的主金鑰進行加密,並定期變更。如要進一步瞭解靜態資料加密,請參閱「 Google Cloud中的靜態資料加密」。
傳輸中資料加密
Oracle 提供進階安全性,可處理透過網路傳輸的資料加密作業。資料移出 Google 或 Google 代理單位控管的實體界限時,Cloud SQL 會在一或多個網路層加密及驗證所有傳輸中的資料。如果傳輸中的資料位於 Google 或 Google 代理單位控管的實體界限內,系統通常會加以驗證,但可能不會預設加密。您可以依據威脅模型,選擇要套用哪些額外的安全措施。舉例來說,您可以為 Cloud SQL 的區域內連線設定 SSL。如要瞭解傳輸加密,請參閱「 Google Cloud中的傳輸加密」。
稽核
Oracle 提供多種稽核方法 (例如標準和精細稽核)。相反地,您可以透過下列方式在 PostgreSQL 適用的 Cloud SQL 中進行稽核:
- pgAudit 擴充功能。記錄並追蹤針對特定資料庫執行個體執行的 SQL 作業。
- Cloud 稽核記錄。稽核在 PostgreSQL 適用的 Cloud SQL 執行個體上執行的管理和維護作業。
存取權控管
使用者可以使用具備授權靜態 IP 位址的 PostgreSQL 用戶端,或使用 Cloud SQL Proxy (如同任何其他資料庫連線) 連線至 PostgreSQL 適用的 Cloud SQL 執行個體。對於 App Engine 或 Compute Engine 等其他連線來源,使用者可以選擇使用 Cloud SQL Proxy 等多種選項。如要進一步瞭解這些選項,請參閱「執行個體存取權控管」。
Cloud SQL for PostgreSQL 可與 身分與存取權管理 (IAM) 整合,並提供一組預先定義的角色,協助您控管 Cloud SQL 資源的存取權。這些角色可讓 IAM 使用者啟動各種管理作業,例如重新啟動執行個體、備份和備援。詳情請參閱專案存取權控管。
作業
本節提供匯出和匯入作業、執行個體層級備份和還原作業,以及唯讀作業和災難復原導入作業的備用執行個體相關指引。
匯出及匯入
Oracle 執行邏輯匯出和匯入作業的主要方法是使用 Data Pump 公用程式的 EXPDP
/IMPDP
指令 (舊版 Oracle 匯出/匯入功能包含 exp
/imp
指令)。PostgreSQL 適用的 Cloud SQL 等同指令為 pg_dump
和 pg_restore
公用程式,可產生傾印檔案,然後在資料庫或物件層級匯入 (僅限匯出及匯入中繼資料)。
對於 Oracle DBMS_DATAPUMP
公用程式,沒有直接的 PostgreSQL 適用 Cloud SQL 等價解決方案 (Oracle 方法會套用 EXPDP
/IMPDP
功能,並直接與 DBMS_DATAPUMP
套件互動)。如要從 Oracle DBMS_DATAPUMP
PL/SQL 程式碼轉換,請使用其他程式碼 (例如 Bash 和 Python) 實作邏輯元素,並使用 PostgreSQL 適用的 Cloud SQL 程式 pg_dump
和 pg_restore
執行匯出/匯入作業。
Oracle SQL*Loader 可用來將外部檔案載入資料庫資料表。SQL*Loader 可使用設定檔 (稱為控制檔案),其中會保留 SQL*Loader 用來判斷如何剖析資料並將資料載入 Oracle 資料庫的中繼資料。SQL*Loader 支援固定和可變的來源檔案。
pg_dump
和 pg_restore
公用程式會在用戶端層級執行,並遠端連線至 PostgreSQL 適用的 Cloud SQL 執行個體。傾印檔案是在用戶端建立。如要將外部檔案載入 Cloud SQL for PostgreSQL,請使用 psql 用戶端介面的 COPY
指令,或使用 Dataflow 或 Dataproc。本節主要著重於 PostgreSQL 適用的 Cloud SQL COPY
指令,這是與 Oracle 的 SQL*Loader 公用程式更直接的對應項目。
如果要將更複雜的資料載入 PostgreSQL 適用的 Cloud SQL 資料庫,建議您使用 Dataflow 或 Dataproc,因為這兩者都會建立 ETL 程序。
如要進一步瞭解 Dataflow,請參閱 Dataflow 說明文件;如要進一步瞭解 Dataproc,請參閱 Dataproc 說明文件。
pg_dump
pg_dump
用戶端公用程式會執行一致的備份作業,並以指令碼或封存檔案格式輸出內容。指令碼轉儲作業是一組可執行的 SQL 陳述式,可用來重現原始資料庫物件定義和資料表資料。這些 SQL 陳述式可供任何 PostgreSQL 用戶端使用,用於還原作業。在還原作業期間,備份檔案格式必須與 pg_restore
搭配使用,但備份可讓您還原所選的物件,且設計上可在不同架構之間移植。
用法:
-- Single database backup & specific tables backup # pg_dump database_name > outputfile.sql # pg_dump -t table_name database_name > outputfile.sql -- Dump all tables in a given schema with a prefix and ignore a given table # pg_dump -t 'schema_name.table_prefixvar>*' -T schema_name.ignore_table database_name > outputfile.sql -- Backup metadata only - Schema only # pg_dump -s database_name > metadata.sql -- Backup in custom-format archive pg_dump -Fc database_name > outputfile.dump
pg_restore
pg_restore
用戶端程式會從 pg_dump
建立的封存檔還原 PostgreSQL 資料庫。如果未指定資料庫名稱,pg_restore
會輸出包含重建資料庫所需 SQL 指令的腳本,類似於 pg_dump
。
用法:
-- Connect to an existing database and restore the backup archive
pg_restore -d database_name outputfile.dump
-- Create and restore the database from the backup archive
pg_restore -C -d database_name outputfile.dump
psql COPY
指令
psql 是 PostgreSQL 適用的 Cloud SQL 指令列用戶端介面。透過 COPY
指令,psql 會讀取指令引數中指定的檔案,並在伺服器和本機檔案系統之間路由資料。
用法:
-- Connect to an existing database and restore the backup archive psql -p 5432 -U username -h cloud_sql_instance_ip -d database_name -c "\copy emps from '/opt/files/inputfile.csv' WITH csv;" -W
PostgreSQL 適用的 Cloud SQL 匯出/匯入:
下列說明文件連結說明如何使用 gcloud CLI 與 Cloud SQL 執行個體和 Cloud Storage 互動,以便套用匯出和匯入作業。
執行個體層級備份與還原
在 Cloud SQL 中,備份和復原作業會透過自動和隨選資料庫備份處理。
備份功能可讓您還原 Cloud SQL 執行個體,藉此復原遺失的資料,或解決執行個體發生的問題。建議您為任何含有您需要保護以免遺失或損壞的資料的執行個體,啟用自動備份功能。
您隨時可以建立備份,這在某些情況下非常實用,例如您即將要在資料庫上執行具有風險性的作業時,或是您需要備份但不想等到備份期間再執行備份作業。不論執行個體是否已啟用自動備份功能,您都可以為任何執行個體建立隨選備份。
系統不會自動刪除隨選備份,它們會一直存在,直到您刪除隨選備份或刪除其執行個體為止。由於系統不會自動刪除這些備份,如果您不刪除隨選備份,這些備份可能會長期影響您的帳單費用
啟用自動備份功能時,您可以指定 4 小時的備份期間,備份作業會在這個時間範圍內開始。請盡可能在執行個體活動量最少時安排備份作業。如果資料自上次備份後未變更,系統就不會備份。
Cloud SQL 可以為每個執行個體最多保留 7 個自動備份。備份資料使用的儲存空間會以較低的費率計費,具體取決於備份資料儲存的區域。如要進一步瞭解價格表,請參閱 PostgreSQL 適用的 Cloud SQL 定價。
您可以使用 PostgreSQL 適用的 Cloud SQL 資料庫執行個體還原功能,將資料還原至相同的執行個體、覆寫現有資料,或還原至其他執行個體。您也可以啟用自動備份選項,將 PostgreSQL 資料庫還原至特定時間點。
如要進一步瞭解如何建立或管理隨選和自動備份,請參閱「建立及管理隨選和自動備份」一文。
下表列出 Oracle 中常見的備份與還原作業,以及 PostgreSQL 適用的 Cloud SQL 中的對應作業:
說明 | Oracle (Recovery Manager - RMAN ) |
PostgreSQL 適用的 Cloud SQL |
---|---|---|
排定的自動備份 | 建立 DBMS_SCHEDULER 工作,以便依排程執行 RMAN 指令碼。 |
gcloud sql instances patch INSTANCE_NAME --backup-start-time HH:MM
|
手動備份完整資料庫 | BACKUP DATABASE PLUS ARCHIVELOG;
|
gcloud sql backups create --async --instance INSTANCE_NAME
|
還原資料庫 | RUN
|
gcloud sql backups list --instance INSTANCE_NAME
|
增量微分 | BACKUP INCREMENTAL LEVEL 0 DATABASE;
|
所有備份都是增量備份,無法選擇增量類型。 |
逐步累積 | BACKUP INCREMENTAL LEVEL 0 CUMULATIVE DATABASE;
|
所有備份都是增量備份,無法選擇增量類型。 |
將資料庫還原至特定時間點 | RUN
|
gcloud sql instances clone SOURCE_INSTANCE_NAME NEW_INSTANCE_NAME \
|
備份資料庫封存記錄 | BACKUP ARCHIVELOG ALL;
|
不支援。 |
用於唯讀作業和災難復原導入的待命執行個體
Oracle Active Data Guard 可讓待命執行個體在透過重做和封存記錄套用新資料時,充當唯讀端點。您也可以使用 Oracle GoldenGate 啟用額外的例項,用於在資料修改內容即時套用時進行讀取,做為變更資料擷取 (CDC) 解決方案。
PostgreSQL 適用的 Cloud SQL 會使用待命執行個體來提供高可用性。這個執行個體會透過磁碟層級複製功能,與主要執行個體保持同步。與 Active Data Guard 不同的是,這類資料無法讀取或寫入。如果主要執行個體故障或大約 60 秒無回應,主要執行個體就會自動容錯移轉至待命執行個體。幾秒內,角色就會互換,新的主要角色就會接手。
PostgreSQL 適用的 Cloud SQL 也提供讀取備用資源,可擴充讀取要求。這些備用資源的設計目的是卸載主要執行個體的讀取作業,並非用於災難復原的備用執行個體。與待命執行個體不同,唯讀備用資源會以非同步方式與主要執行個體保持同步。這些子網路可以位於主要子網路所在的不同區域,也可以位於不同區域。您可以使用Google Cloud 主控台或 gcloud CLI 建立讀取/寫入複本。請注意,部分作業需要重新啟動執行個體 (例如,在現有主要執行個體中新增高可用性)。
記錄和監控
Oracle 的警示記錄檔是識別一般系統事件和錯誤事件的主要來源,可用於瞭解任何 Oracle 資料庫執行個體的生命週期 (主要用於排解失敗事件和錯誤事件)。
Oracle 快訊記錄會顯示下列資訊:
- Oracle 資料庫例項錯誤和警告 (
ORA-
+ 錯誤編號)。 - Oracle 資料庫執行個體啟動和關閉事件。
- 網路和連線相關問題。
- 資料庫重做記錄切換事件。
- 您可能會看到 Oracle 追蹤記錄檔案,並附上特定資料庫事件的詳細資料連結。
Oracle 為 LISTENER、ASM 和 Enterprise Manager (OEM) 等不同服務提供專屬記錄檔,但這些服務在 PostgreSQL 適用的 Cloud SQL 中並未提供等同的元件。
查看 PostgreSQL 適用的 Cloud SQL 作業記錄檔
Cloud Logging 是查看 postgres.log
(相當於 Oracle 中的 alert.log
) 中所有記錄項目的主要平台。您可以依記錄事件層級 (例如「Critical」、「Error」或「Warning」) 進行篩選。您也可以設定事件時間範圍和免費文字篩選條件。
監控 PostgreSQL 適用的 Cloud SQL 資料庫執行個體
Oracle 的主要 UI 監控資訊主頁是 OEM 和 Grid/Cloud Control 產品的一部分 (例如「Top Activity Graphs」),可用於在工作階段或 SQL 陳述式層級監控即時資料庫執行個體。PostgreSQL 適用的 Cloud SQL 會透過Google Cloud 控制台提供類似的監控功能。您可以查看 Cloud SQL for PostgreSQL 資料庫執行個體的摘要資訊,其中包含多項監控指標,例如 CPU 使用率、儲存空間使用率、記憶體使用率、讀取/寫入作業、傳入/傳出位元組、有效連線等等。
Cloud Logging 支援 PostgreSQL 適用的 Cloud SQL 的其他監控指標。下圖顯示過去 12 小時的 PostgreSQL 適用 Cloud SQL 查詢圖表。
監控 PostgreSQL 適用的 Cloud SQL 讀取/複寫資料庫
您可以使用 Google Cloud 主控台監控指標 (如前所述),以與監控主要執行個體相同的方式監控唯讀備用資源。此外,還有專屬的監控指標可用於監控複製延遲,也就是以位元組為單位,判斷主要執行個體與唯讀備用資源執行個體之間的延遲情形 (可透過 Google Cloud 主控台的唯讀備用資源執行個體總覽分頁監控)。
您可以使用 gcloud CLI 擷取複寫狀態:
gcloud sql instances describe REPLICA_NAME
您也可以使用 PostgreSQL 用戶端的指令進行複製監控,該指令會提供主要和待命資料庫的狀態。
您可以使用下列 SQL 陳述式驗證唯讀備用機制的狀態:
postgres=> select * from pg_stat_replication;
PostgreSQL 適用的 Cloud SQL 監控
本節將說明 PostgreSQL 適用的 Cloud SQL 基本監控方法,這些方法可視為 Oracle 或 PostgreSQL 適用的 Cloud SQL 等資料庫管理員 (DBA) 執行的例行工作。
工作階段監控
Oracle 工作階段監控功能會查詢稱為「V$」的動態效能檢視畫面。V$SESSION
和 V$PROCESS
檢視畫面通常用於使用 SQL 陳述式,取得目前資料庫活動的即時洞察資料。您可以查詢 pg_stat_activity
動態檢視畫面,監控工作階段活動:
postgres=> select * from pg_stat_activity;
長時間交易監控
您可以套用適當的篩選器,在 pg_stat_activity
動態檢視畫面中的 query_start
和 state
等資料欄中,找出執行時間過長的查詢。
鎖定監控
您可以使用 pg_locks
動態檢視畫面監控資料庫鎖定,該畫面會提供可能導致效能問題的鎖定事件即時資訊。
後續步驟
- 進一步瞭解 PostgreSQL 適用的 Cloud SQL 使用者帳戶。
- 探索 Google Cloud 的參考架構、圖表和最佳做法。歡迎瀏覽我們的雲端架構中心。