當主要應用裝置故障時,您可以執行資料庫容錯移轉。本主題說明的程序適用於執行 9.0.0 版以前的應用裝置。
**附註:**本主題僅適用於執行 9.0.0 之前版本的應用裝置。如需有關較新應用裝置的相關資訊,請參閱資料庫容錯移轉 - 更新版本應用裝置。
當主要應用裝置故障時,次要資料庫為唯讀。發生容錯移轉時,請執行下列工作:
- 在次要資料庫上啟用寫入作業
- 將次要服務提供者應用裝置永久升級為主要
- 將次要租用戶應用裝置永久升級成為主要
- 重新啟動主要應用裝置
在次要資料庫上啟用寫入作業
此程序的目標是在無法使用主要應用裝置的情況下,將主要資料庫切換為次要應用裝置 (租用戶或服務提供者)。目標是啟用寫入作業,讓次要應用裝置的資料庫成為主要資料來源。
-
在主要 (如果可存取) 和次要應用裝置上,停止 dtService、av-manager 和診斷服務:
sudo service dtService stop sudo service av-manager stop sudo service diagnose stop -
在主要 (如果可存取) 和次要應用裝置上,停止所有 Slony 精靈:
sudo killall slon -
在次要應用裝置上,連線至 fdb 資料庫,然後執行下列 SQL 命令:
drop schema _slony cascade; -
如果應用裝置屬於租用戶組織,請針對 EDB 和 AVDB 重複步驟 3。
-
如果主要應用裝置上的資料庫仍可存取,請備份資料庫、複製資料庫檔案,然後將資料庫還原至次要應用裝置 (BackingUpandRestoringDatabases.md)。
-
開啟 /usr/local/desktone/release/active/conf/fdb.properties 檔案進行編輯,並移除主要應用裝置的 IP 位址。
-
如果應用裝置屬於租用戶組織,請針對 /usr/local/desktone/release/active/edb.properties 重複步驟 6。
-
如果應用裝置屬於租用戶組織,請針對 /usr/local/desktone/release/active/avdb.properties 重複步驟 6。
-
設定 DB_HOST 和 DB_PASSWORD 環境變數:
export DB_HOST=IP_of_TA2_appliance export DB_PASSWORD=database_password -
以 sudo 身分執行 av-setup 指令碼:
sudo /usr/local/desktone/scripts/av-setup -
開啟 applications.properties 檔案進行編輯。
vi /usr/local/xmpms/diagnose/config/application.properties -
在 applications.properties 檔案中,編輯如下幾行:
db.jdbc.url=jdbc:postgresql://<ip address>:5432/avdb?ssl=true db.fdb.jdbc.url=jdbc:postgresql://<ip address>:5432/fdb?ssl=true -
在次要應用裝置上啟動 dtService、av-manager 和診斷服務:
service dtService start service av-manager start service diagnose start
將次要服務提供者應用裝置升級為主要
若要將次要服務提供者應用裝置永久升級為主要服務提供者應用裝置,請執行下列步驟。
在此範例中,主要應用裝置為「A」,次要應用裝置為「B」,而應用裝置 A 可供存取 (可存取此應用裝置中的資料庫)。
-
在所有服務提供者應用裝置上,停止 dtService:
service dtService stop -
登入所有服務提供者應用裝置。
-
開啟 /usr/local/desktone/release/active/conf/fdb.properties 檔案進行編輯,並移除處於故障狀態的主要應用裝置的 IP 位址。
-
在所有服務提供者應用裝置上,停止所有 Slony 精靈:
killall slon -
在主要和次要應用裝置上,連線至 FDB 資料庫,然後執行下列 SQL 命令:
drop schema _slony cascade; -
在資料中心的次要應用裝置中,執行下列 SQL 命令 (將「A」和「B」替換為您的應用裝置名稱):
fdb=# update appliance set capabilities = (capabilities & 65343) where name='A'; fdb=# update appliance set capabilities = (capabilities | 192) where name='B'; -
在故障應用裝置以外的服務提供者應用裝置上,啟動 dtService:
service dtService start繼續下一個步驟之前,請確認應用裝置已啟動且正在執行。
-
在主要服務提供者應用裝置以外的所有服務提供者應用裝置上 (次要服務提供者應用裝置為主要),停止 dtService:
service dtService stop -
在所有服務提供者應用裝置中,啟動 Slony 精靈:
/usr/local/desktone/scripts/start_slon_fdb.sh -
透過瀏覽器登入主要服務提供者應用裝置 (次要服務提供者應用裝置為主要) 的服務中心,並執行 Slony 重新初始化作業:
- 導覽至應用裝置 > 維護 > Slony 作業。
- 在 [組織識別碼] 下拉式清單中,選取 1000。
- 按一下初始化 Slony 按鈕,以重新初始化 Slony。
-
Slony 重新初始化完成後,請在資料中心之次要應用裝置的 FDB 中執行下列命令:
SELECT a.set_id, a.set_comment, (SELECT last_value FROM _slony.sl_local_node_id) AS local_id, CASE WHEN a.set_origin = (SELECT last_value FROM _slony.sl_local_node_id)THEN TRUE ELSE FALSE END AS master_node from _slony.sl_set a;輸出應如下所示:
set_id | set_comment | local_id | master_node --------+--------------------------+----------+------------- 1 | All tables and Sequences | 1 | t (1 row) -
在故障服務提供者應用裝置以外的所有應用裝置上,啟動 dtService。
service dtService start
將次要租用戶應用裝置升級為主要
若要將次要租用戶應用裝置永久升級為主要租用戶應用裝置,請執行下列步驟。
在此範例中,主要應用裝置為「A」,次要應用裝置為「B」,而應用裝置 A 可供存取 (可存取此應用裝置中的資料庫)。
-
在組織中的所有租用戶應用裝置上,停止 dtService:
service dtService stop -
登入組織中的所有租用戶應用裝置。
-
開啟 /usr/local/desktone/release/active/conf/fdb.properties 檔案進行編輯,並移除處於故障狀態的主要應用裝置的 IP 位址。
-
在組織中的所有租用戶應用裝置上,停止所有 Slony 精靈:
killall slon -
如有需要,請備份主要應用裝置上的資料庫,然後將其還原至次要應用裝置上。
-
在主要和次要應用裝置上,連線至 FDB 資料庫,然後執行下列 SQL 命令:
drop schema _slony cascade; -
在主要服務提供者應用裝置上執行下列 SQL 命令 (將「A」和「B」替換為您的應用裝置名稱):
fdb=# update appliance set capabilities = (capabilities & 65343) where name='A'; fdb=# update appliance set capabilities = (capabilities | 192) where name='B'; -
在組織中所有租用戶應用裝置上,啟動 Slony 精靈:
/usr/local/desktone/scripts/start_slon_fdb.sh /usr/local/desktone/scripts/start_slon_edb.sh /usr/local/desktone/scripts/start_slon_avdb.sh -
透過瀏覽器登入主要服務提供者應用裝置的服務中心,並執行 Slony 重新初始化作業:
- 導覽至應用裝置 > 維護 > Slony 作業。
- 從 [組織識別碼] 下拉式清單中,選取租用戶的組織識別碼。
- 選取 [網狀架構] 作為資料庫執行個體名稱標籤。
- 按一下初始化 Slony 按鈕,以重新初始化 Slony。
-
Slony 重新初始化完成後,請在資料中心的次要租用戶應用裝置的 FDB 中執行下列命令:
SELECT a.set_id, a.set_comment, (SELECT last_value FROM _slony.sl_local_node_id) AS local_id, CASE WHEN a.set_origin = (SELECT last_value FROM _slony.sl_local_node_id) THEN TRUE ELSE FALSE END AS master_node from _slony.sl_set a;輸出應如下所示 (如果第一個資料中心的主要應用裝置故障):
set_id | set_comment | local_id | master_node --------+--------------------------+----------+------------- 1 | All tables and Sequences | 1 | t (1 row) -
在所有租用戶應用裝置 (處於故障狀態的租用戶應用裝置除外) 上啟動 dtService。
service dtService start
重新啟動主要應用裝置
當您在容錯移轉後重新啟動主要應用裝置時,請在 EDB 和 AVDB 上執行 Slony 重新初始化。
此頁面對您有幫助嗎?