將資料從 PostgreSQL 複製到 MySQL
瞭解如何使用 OCI GoldenGate 將資料從 PostgreSQL 複製到 MySQL。
開始之前
若要順利完成此快速啟動,您必須具備下列項目:
-
PostgreSQL 安裝可作為來源資料庫 (請參閱「環境」設定)
-
VCN 安全清單中開放的連接埠 5432
-
作為目標資料庫的 HeatWave 資料庫。
環境設定:PostgreSQL
設定此「快速啟動」的環境:
-
執行下列命令以安裝 PostgreSQL 。
-
安裝 PostgreSQL 伺服器 :
sudo yum install postgresql-server -
安裝 postgresql-contrib 模組以避免此 SQL 異常狀況:
sudo yum install postgresql-contrib -
建立新的 PostgreSQL 資料庫叢集:
sudo postgresql-setup --initdb -
啟用 postgresql.service:
sudo systemctl enable postgresql.service -
啟動 postgresql.service:
sudo systemctl start postgresql.service
-
-
PostgreSQL 預設只允許本機連線。允許遠端連線至 PostgreSQL 。
-
在
/var/lib/pgsql/data/postgresql.conf中,準備資料庫以進行複製。 -
尋找和取消註釋
listen_addresses = 'localhost',並將 localhost 變更為星號 (`):listen_addresses = '*' -
將下列參數設定如下:
-
wal_level = logical -
max_replication_slots = 1 -
max_wal_senders = 1 -
track_commit_timestamp = on
注意:
設定
/var/lib/pgsql/data/pg_hba.conf以確定將從屬端認證設為允許來自 Oracle GoldenGate 主機的連線。例如,新增下列項目:#Allow connections from remote hosts host all all 0.0.0.0/0 md5請參閱 pg_hba.conf 檔案瞭解詳細資訊。
- 重新啟動 PostgreSQL 伺服器 :
sudo systemctl restart postgresql.service- 如果使用 Oracle Cloud Compute 代管 PostgreSQL,請開啟連接埠 5432:
sudo firewall-cmd --permanent --add-port=5432/tcp sudo firewall-cmd --reload sudo firewall-cmd --list-all -
-
在 VCN 的安全清單中開啟連接埠 5432。
-
> sudo su - postgres > psql注意:如果上述範例沒有作用,您也可以輸入
sudo su - postgres psql。 -
設定 PostgreSQL。
-
下載並執行 seedSRCOCIGGLL_PostgreSQL.sql ,以設定資料庫並載入範例資料。
-
執行下列命令來設定使用者 (請確定以實際密碼取代
<password>):
create user ggadmin with password '<password>'; alter user ggadmin with SUPERUSER; GRANT ALL PRIVILEGES ON DATABASE ociggll TO ggadmin; -
-
環境設定:MySQL
-
開啟 OCI GoldenGate 可透過其連線的連接埠 3306 。
-
在 Oracle Cloud 主控台中,找出 HeatWave 資料庫使用的子網路。
-
在子網路安全清單中,建立 TCP/3306 連接埠的傳入規則。
-
-
使用下列指令碼建立
ggadmin使用者。請記得將<ggadmin-password>取代為有效的密碼:CREATE USER 'ggadmin' IDENTIFIED BY '<ggadmin-password>'; GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT, CREATE,CREATE VIEW, EVENT, INSERT, UPDATE, DROP,EXECUTE, DELETE ON *.* TO 'ggadmin'; -
使用範例綱要建立目標表格。
請確定已順利建立表格和使用者。
作業 1:建立 OCI GoldenGate 資源
此快速啟動範例需要來源和目標的部署和連線。
-
建立部署來源 PostgreSQL 資料庫。
-
建立 MySQL 部署目標 HeatWave 資料庫。
-
-
對於類型,請從下拉式清單中選取 PostgreSQL 伺服器。
-
對於資料庫名稱,請輸入
ociggll。 -
在主機中,輸入 PostgreSQL 執行所在運算執行處理的公用 IP。
-
在連接埠中,輸入
5432。 -
在使用者名稱中,輸入
ggadmin。 -
在密碼中,輸入您的密碼。
-
若為安全協定,請從下拉式清單中選取純文字。
-
-
(選擇性) 如果您的 HeatWave 資料庫沒有公用端點,請建立 GoldenGate 連線,然後將此連線指定給來源 PostgreSQL 部署。
任務 2:啟用補充記錄
若要啟用補充日誌記錄:
-
啟動 PostgreSQL GoldenGate 部署主控台:
-
從「部署」頁面中,選取 PostgreSQL 部署以檢視其詳細資訊。
-
在 PostgreSQL 部署詳細資訊頁面上,選取啟動主控台。
-
在建置主控台登入頁面中,輸入「工作 1」步驟 1 中提供的 GoldenGate 管理證明資料。
注意:如果在建立部署時未選取 IAM 作為證明資料存放區,則必須登入。
-
-
在建置主控台中,選取左導覽中的 DB 連線,接著選取來源 PostgreSQL 資料庫,然後選取 Trandata 。
-
在 TRANDATA 頁面的「TRANDATA 資訊」旁邊,選取新增 TRANDATA (加號圖示)。
-
在 Trandata 面板中,針對綱要名稱,輸入
src_ociggll,然後選取提交。注意:使用搜尋欄位來搜尋
src_ociggll,並確認已新增表格。
任務 3:建立擷取
-
新增「變更資料擷取」擷取:
-
在左側導覽中,選取擷取,
-
在「擷取」頁面上,選取新增擷取 (加號圖示),然後完成欄位,如下所示:
-
在「擷取資訊」頁面上:
-
對於擷取類型,請選取變更資料擷取擷取。
-
在程序名稱中,輸入 Extract 的名稱,例如
ECDC。 -
選取下一步。
-
-
在「擷取選項」頁面上:
-
若為「來源」證明資料,請從網域下拉式清單中選取 Oracle GoldenGate
-
從別名下拉式清單中選取來源 PostgreSQL 資料庫。
-
對於「擷取歷程檔名稱」,請輸入兩個字元的歷程檔名稱,例如
C1。 -
選取下一步。
-
-
在「擷取參數」頁面上,使用下列項目取代
MAP *.*, TARGET *.*;:TABLE SRC_OCIGGLL.*;
-
-
選取建立並執行。
-
-
新增初始載入摘錄:
-
在「擷取」頁面上,選取新增擷取,然後完成「新增擷取」表單,如下所示:
-
在「擷取資訊」頁面上:
-
對於「擷取」類型,請選取初始載入擷取。
-
在程序名稱中,輸入名稱,例如
EIL。 -
選取下一步。
-
-
在「擷取選項」頁面上:
-
若為「來源」證明資料,請從網域下拉式清單中選取 Oracle GoldenGate 。
-
從別名下拉式清單中選取 PostgreSQL 資料庫。
-
在擷取歷程檔名稱中輸入兩個字元的歷程檔名稱,例如
I1。 -
選取下一步。
-
-
在「擷取參數」頁面上,以下列項目取代文字區域的內容:
EXTRACT EIL USERIDALIAS PostgreSQL_Compute, DOMAIN OracleGoldenGate EXTFILE I1, PURGE TABLE src_ociggll.*;注意:請確定先移除
USERIDALIAS前面的SOURCEDB參數,再繼續進行。
-
-
選取建立並執行。
-
您可返回「摘錄」頁面,在此您可以觀察「摘錄」的開始。
任務 4:建立初始載入擷取的分配路徑
若要建立「初始載入擷取」的「分配路徑」,請完成下列步驟:
-
在 Oracle Cloud 主控台的「部署」頁面中,選取定位 MySQL 部署。
-
在部署詳細資料頁面上,選取啟動主控台,然後以管理員使用者身分登入。
-
如果使用 IAM 證明資料存放區,請繼續執行「建立分送路徑」步驟。如果使用 GoldenGate 證明資料存放區,請建立來源 GoldenGate 用來連線至目標 GoldenGate 的使用者。
-
在導覽功能表中,選取使用者管理。
-
選取新增使用者 (加號圖示)、依下列方式完成欄位,然後選取提交:
-
在使用者名稱中,輸入
ggsnet。 -
在角色中,選取運算子。
-
輸入密碼兩次以進行驗證。
-
-
-
在來源 PostgreSQL 建置主控台中,為在上一個步驟中建立的使用者建立「路徑連線」。
-
在導覽功能表中,選取路徑連線。
-
選取新增路徑連線 (加號圖示)、依下列方式完成欄位,然後選取送出:
-
在「證明資料別名」中輸入
dpuser。 -
對於使用者 ID,請輸入
ggsnet -
若為「密碼」,請輸入上一個步驟所使用的相同密碼。
-
-
-
建立分配路徑。
-
在服務功能表列中,選取路徑,然後選取新增分送路徑 (加號)。
-
完成「新增路徑」表單,如下所示:
-
在「路徑資訊 (Path Information)」頁面上:
-
在路徑名稱中,輸入此路徑的名稱。
-
選取下一步。
-
-
在「來源選項 (Source Options)」頁面上:
-
對於來源擷取,請保留空白。
-
在歷程檔名稱中,輸入「起始載入擷取」歷程檔名稱 (
I1)。 -
選取下一步。
-
-
在「目標選項 (Target Options)」頁面上:
-
在目標中,選取 wss 。
-
針對目標主機,輸入不含 https:// 或任何尾端斜線的目標部署 URL。
-
在連接埠號碼中,輸入
443。 -
在歷程檔名稱中,輸入
I1。 -
在目標認證方法中,選取 UserID 別名。
-
在網域中,輸入在上一個步驟中建立的網域名稱。
-
在別名中,輸入在上一個步驟中建立的別名 (
dpuser)。 -
選取下一步。
-
-
-
選取建立並執行。
您可返回「分送服務」頁面,複查建立的路徑。
-
-
在目標建置主控台中,複查因「分送」路徑而建立的「接收者」路徑:
-
選取路徑。
-
複查「路徑」詳細資訊。
-
作業 5:新增初始載入的 Replicat
-
在目標 MySQL 建置主控台中,新增「檢查點」表格。
-
在導覽功能表中,選取資料庫連線、定位 HeatWave 資料庫,然後選取檢查點。
-
選取新增檢查點 (加號圖示)。
-
在「檢查點」窗格的綱要表格中,輸入
SRCMIRROR_OCIGGLL.CHECKTABLE。 -
選取提交。
-
-
新增起始載入 Replicat。
-
在導覽功能表中,選取複製,然後選取新增 Replicat (加號圖示)。
-
在「複本」頁面上,依下列方式完成「新增複本」欄位:
-
在 Replicat 資訊頁面上:
-
對於複製類型,請選取平行或協調。
-
在程序名稱中,輸入名稱,例如
RIL。 -
選取下一步。
-
-
在「Replicat 選項」頁面上:
-
在複製追蹤名稱中,輸入任務 2 (
I1) 的追蹤名稱。 -
在目標證明資料中,選取 HeatWave 資料庫連線的網域和別名。
-
針對檢查點表格,選取您在步驟 1 中建立的檢查點表格。
-
選取下一步。
-
-
在「參數檔」頁面上,新增下列對應:
MAP src_ociggll.*, TARGET SRCMIRROR_OCIGGLL.*;
-
-
選取建立並執行。
您可以返回「複本」頁面,複查 Replicat 詳細資訊。
-
-
驗證初始載入:
-
在 Cloud Shell 中,連線至 HeatWave 執行處理所使用的 VCN 和子網路。
-
連線後,執行下列命令:
mysqlsh <user>@<MySQL DB Private IP>:3306 --sql -
請執行下列命令檔來驗證資料:
select * from SRCMIRROR_OCIGGLL.SRC_CITY; select * from SRCMIRROR_OCIGGLL.SRC_CUSTOMER;
輸出應傳回因為「起始載入」而載入至目標資料庫表格的資料。
-
作業 6:建立變更資料擷取的分配路徑
-
在來源 PostgreSQL 建置主控台中,選取分配服務。
-
選取新增分配路徑。
-
完成「新增路徑」表單,如下所示:
-
在「路徑資訊 (Path Information)」頁面上:
-
在路徑名稱中,輸入名稱。
-
選取下一步。
-
-
在「來源選項 (Source Options)」頁面上:
-
對於來源擷取,請選取「變更資料擷取擷取擷取」(
ECDC)。 -
針對歷程檔名稱,選取「變更資料擷取」歷程檔 (
C1)。 -
選取下一步。
-
-
在「目標選項 (Target Options)」頁面上:
-
在目標中,選取 wss 。
-
在目標主機中,輸入目標建置主控台 URL (您可以在建置詳細資訊頁面上找到此 URL,而不需要 https:// 或任何尾端斜線)。
-
在連接埠號碼中,輸入
443。 -
在歷程檔名稱中,輸入
C1。 -
在目標認證方法中,選取 UserID 別名。
-
針對網域,輸入網域的名稱。
-
針對別名,輸入別名。
-
-
選取建立路徑並執行。
-
-
在目標 MySQL 建置主控台中,選取接收者服務,然後複查建立的「接收者路徑」。
作業 7:新增變更資料擷取的 Replicat
執行來源 PostgreSQL 資料庫更新,以驗證對目標 HeatWave 資料庫的複寫。
-
新增 Replicat:
-
在目標建置主控台中,選取管理服務,然後在導覽功能表中選取複製。
-
在複製頁面上,選取新增 Replicat (加號圖示),然後完成「新增 Replicat」表單,如下所示:
- 在 Replicat 資訊頁面上:
-
在 Replicat 類型中,選取非整合式 Replicat 。
-
在處理名稱中,輸入名稱,例如
RCDC。 -
選取下一步。
-
- 在「Replicat 選項」頁面上:
-
在複製追蹤名稱中,輸入任務 3 (
C1) 的追蹤名稱。 -
在目標證明資料中,選取 HeatWave 連線的「網域」和「別名」。
-
針對檢查點表格,選取「檢查點」表格。
-
- 在 Replicat 資訊頁面上:
-
在「Replicat 參數」頁面中,以下列對應取代
MAP *.*, TARGET *.*;:MAP src_ociggll.*, TARGET SRCMIRROR_OCIGGLL.*; -
選取建立並執行。
您可以返回「複本」頁面,複查 Replicat 詳細資訊。
-
-
驗證資料交換資料:
-
執行來源 PostgreSQL 資料庫更新,以驗證對目標 HeatWave 資料庫的複寫。執行下列命令檔以執行 PostgreSQL 資料庫的插入:
Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1000,'Houston',20,743113); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1001,'Dallas',20,822416); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1002,'San Francisco',21,157574); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1003,'Los Angeles',21,743878); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1004,'San Diego',21,840689); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1005,'Chicago',23,616472); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1006,'Memphis',23,580075); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1007,'New York City',22,124434); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1008,'Boston',22,275581); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1009,'Washington D.C.',22,688002); -
在來源 PostgreSQL 建置主控台中,選取「變更資料擷取擷取」名稱 (
ECDC),選取詳細資訊,然後選取統計資料。確認src_ociggll.src_city有 10 個插入。注意:如果 Extract 未擷取任何插入,請重新啟動
ECDCExtract。 -
在目標 MySQL 部署中,選取
RCDCReplicat,複查其詳細資訊和統計資料,以驗證插入數目。
-