簡介
本文檔介紹如何在即時消息(IM)和線上狀態(IM&P)中的集群間對等體之間移動PostgreSQL資料庫。
作者:Joel Burleigh,編輯者:Joseph Koglin,思科TAC工程師
必要條件
需求
思科建議您建立一個滿足這些條件的環境。
- 您有兩個版本為9.1.1的IM&P集群
- 在IM&P群集之間設定了群集間對等體。
- PostgreSQL資料庫是在一個群集上配置的,該群集有一個與IM&P發佈伺服器關聯的資料庫例項
採用元件
本檔案中的資訊是根據以下軟體版本和元件:
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
解決方案
為了消除混淆,這些術語將用於參考IM&P群集和PostgreSQL資料庫。
期限
- Cluster1 — 最初配置外部資料庫的IM&P群集
- Cluster2 — 外部資料庫配置將移入的IM&P群集。
- PostgreSQL -用於外部資料庫主機
執行的步驟
警告:只有當您沒有其它選項時,才應使用這些步驟。繼續執行這些步驟之前,請進行內部討論,以確保這是您的最佳解決方案。
附註:請注意,如果為集群間對等點正確設定了持續聊天。每個群集上的每個節點都應在PostgreSQL上擁有自己的資料庫例項。唯一的例外是版本為11.5及更高版本。
步驟1.首先從當前託管資料庫的IM&P發佈伺服器(Cluster1)輸入CLI命令。
run sql select * from tcaliases
記下動態建立的會議ID和手動建立的與本地群集關聯的別名。
動態會議ID的示例是conference-2-StandAloneCluster2c2aa.jburleig.local。您可以將此項作為主要會議ID,因為主要會議設定為true,並且在fkprocessnode欄位中有值
例如,聊天節點別名是pchat1.jburleig.local,您可以告訴這一點,因為主節點設定為false,但是它在fkprocessnode列中的pkid值與主會議ID的值相同。
輸出範例:
admin:run sql select * from tcaliases
pkid tcalias isprimary fkprocessnode peerclusterid
==================================== ================================================== ========= ==================================== ==============
50a4cf3b-0474-4723-ba50-4cd2cc1dd277 conference-2-StandAloneCluster2c2aa.jburleig.local t 2c2aa1f6-cc7a-470a-a0ba-c8a892db68ca NULL
9eca651d-5a67-3116-a57b-1eb2ab0911bd pchat1.jburleig.local f 2c2aa1f6-cc7a-470a-a0ba-c8a892db68ca NULL
838e900a-0d2f-4843-be00-ac0a6c803ab5 conference-2-StandAloneClustercbea5.jburleig.local f NULL 2202
步驟2.建立當前資料庫(PostgreSQL)的備份。
附註:這應由資料庫管理員根據您組織的要求來完成。
步驟3.接下來建立新的資料庫例項(PostgreSQL)
- 在下面的命令中建立的表名為cluster2,並且用於建立該表的使用者更簡單。
附註:資料庫的Encoded方法可能不同於UTF8。
CREATE DATABASE cluster2 WITH OWNER tcuser ENCODING 'UTF8'
步驟4.您將需要新增一個新條目,以允許訪問步驟2中建立的新資料庫。
如果IM&P群集上的新外部資料庫配置將位於新的IP子網上,請確保更新您在pg.hba.conf檔案(PostgreSQL)中建立的條目中的子網。
- 將該項新增到install_dir/data/pg_hba.conf
host DBName DBUsere Subnet password
host cluster2 tcuser 10.10.1.0/24 password
步驟5.接下來,您需要在IM&P群集上建立一個新的外部資料庫,並將配置移動到該資料庫(Cluster2)
- 導航到消息>外部伺服器設定>外部資料庫
- 選擇Add New按鈕並配置新的外部資料庫,並使用在步驟3中建立的資料庫名稱和使用者
步驟6.現在在承載持續聊天配置的當前IM&P上禁用持續聊天,並取消分配與持續聊天配置(Cluster1)關聯的外部資料庫
- 導航到消息>群聊和持續聊天
- 取消選中Enable Persistent Chat覈取方塊
- 將外部資料庫設定為未分配
步驟7.接下來刪除外部資料庫配置(Cluster1)
- 導航到消息>外部伺服器設定>外部資料庫
- 選中已配置的PostgreSQL持久聊天資料庫旁邊的覈取方塊,然後選擇「刪除」。
步驟8.接下來刪除當前群集(Cluster1)上配置的持久聊天自定義別名
步驟9.完全刪除持久聊天和外部資料庫配置後(Cluster1)重新啟動Cisco XCP路由器(Cluster1)
步驟10.接下來,在(Cluster2)上啟用持續聊天,並分配在步驟5中建立的外部資料庫。
- 導航到消息>群聊和持續聊天
- 選中Enable Persistent Chat覈取方塊
- 將外部資料庫設定為在步驟5中建立的外部資料庫。
步驟11.啟用持續聊天後,驗證外部資料庫連線測試在(Cluster2)上是否顯示ok,僅當該測試具有所有綠色複選標籤時才繼續。
步驟12.在上建立自定義別名(Cluster2)確保使用從舊群集中刪除的別名的確切名稱。您可以在步驟1的輸出中找到該別名的名稱。
- 導航到消息>群組聊天伺服器別名對映>新增新
- 新增與Cluster1上配置的別名完全相同的別名。您可以在步驟1的命令輸出中找到別名。
步驟13.接下來重新啟動XCP路由器(Cluster2)
步驟14.Cisco XCP路由器成功重新啟動(Cluster2)後,繼續並停止Cisco Text Conferencing Manager(Cluster2)
步驟15.使用步驟2中的PostgreSQL備份執行資料庫還原。請確保將備份還原到步驟3中建立的新資料庫例項(PostgreSQL)
- 驗證匯入的資料位於tc_rooms、tc_users、tc_messages和tc_msgarchive表中。
步驟16.接下來重新啟動PostgreSQL服務(PostgreSQL)
步驟17.接下來啟動cluster2上的文本會議管理器。
- 此時,如果使用者登入到Jabber,他們將能夠看到使用持久聊天別名建立的任何聊天室。與動態分配的聊天室會議ID關聯的任何聊天室不會顯示,因為它們當前與舊群集關聯。您需要通過在PostgreSQL伺服器上運行SQL update命令來修復此問題。
步驟18.從PostgreSQL命令列執行這些命令,將舊會議ID更新為步驟12中建立的新別名。(PostgreSQL)
附註:您需要調整這些命令以包含您的Cluster1會議ID和已配置的別名ID。
Updates for tc_rooms
update tc_rooms set room_jid = replace(room_jid, ‘conference-2-StandAloneCluster2c2aa.jburleig.local’, ‘pchat1.jburleig.local’);
Updates for tc_users
update tc_users set room_jid = replace(room_jid, ‘conference-2-StandAloneCluster2c2aa.jburleig.local’, ‘pchat1.jburleig.local’);
update tc_users set nick_jid = replace(nick_jid, ‘conference-2-StandAloneCluster2c2aa.jburleig.local’, ‘pchat1.jburleig.local’);
update tc_users set initiator_jid = replace(initiator_jid, ‘conference-2-StandAloneCluster2c2aa.jburleig.local’, ‘pchat1.jburleig.local’);
Updates for tc_messages
update tc_messages set room_jid = replace(room_jid, ‘conference-2-StandAloneCluster2c2aa.jburleig.local’, ‘pchat1.jburleig.local’);
update tc_messages set msg = replace(msg, ‘conference-2-StandAloneCluster2c2aa.jburleig.local’, ‘pchat1.jburleig.local’);
Updates for tc_msgarchive
update tc_msgarchive set to_jid = replace(to_jid, ‘conference-2-StandAloneCluster2c2aa.jburleig.local’, ‘pchat1.jburleig.local’);
update tc_ msgarchive set nick_jid = replace(nick_jid, ‘conference-2-StandAloneCluster2c2aa.jburleig.local’, ‘pchat1.jburleig.local’);
update tc_ msgarchive set message_string = replace(message_string, ‘conference-2-StandAloneCluster2c2aa.jburleig.local’, ‘pchat1.jburleig.local’);
步驟19.接下來重新啟動PostgreSQL服務(PostgreSQL)
步驟20.接下來重新啟動文本會議管理器(Cluster2)
步驟21.此時,Jabber客戶端應該能夠登入到IM&P並檢索「所有房間」頁籤中的所有房間。