简介
本文档介绍如何在即时消息(IM)和在线状态(IM&P)中的群集间对等体之间移动PostgreSQL数据库。
作者:Joel Burleigh,由Cisco TAC工程师Joseph Koglin编辑
先决条件
要求
思科建议您的环境符合这些条件。
- 您有两个IM&P集群,版本为9.1.1
- 在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,因为主会议ID设置为true,并且在fkprocessnode字段中有值
聊天节点别名的示例是pchat1.jburleig.local,您可以告诉这一点,因为主节点设置为false,但它在fkprocessnode列中具有与主会议ID相同的pkid值。
示例输出:
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,用于创建该表的用户为tcuser。
注意:数据库的Encoded方法可能与UTF8不同。
CREATE DATABASE cluster2 WITH OWNER tcuser ENCODING 'UTF8'
步骤4.您需要添加新条目,以允许对步骤2中创建的新数据库的tcuser访问。
如果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)
- 导航至消息>外部服务器设置>外部数据库
- 选择“添加新”按钮并配置新外部数据库,并使用在步骤3中创建的数据库名称和用户
步骤6.现在,在承载持久性聊天配置的当前IM&P上禁用持久性聊天,并取消分配与持久性聊天配置(Cluster1)关联的外部数据库
- 导航至消息>群聊和持续聊天
- 取消选中启用持续聊天复选框
- 将外部数据库设置为未分配
步骤7.接下来删除外部数据库配置(Cluster1)
- 导航至消息>外部服务器设置>外部数据库
- 选中已配置的PostgreSQL持久聊天数据库旁边的复选框,然后选择删除。
步骤8.接下来删除在当前群集(Cluster1)上配置的持久聊天自定义别名
步骤9.完全删除永久聊天和外部数据库配置后(Cluster1)重新启动Cisco XCP路由器(Cluster1)
步骤10.接下来在(Cluster2)上启用持续聊天并分配在步骤5中创建的外部数据库。
- 导航至消息>群聊和持续聊天
- 选中启用持续聊天复选框
- 将外部数据库设置为在步骤5中创建的外部数据库。
步骤11.在启用永久聊天后,验证外部数据库连接测试是否显示ok on(Cluster2),仅当其全部为绿色复选标记时才继续。
步骤12.在(Cluster2)上创建自定义别名确保使用从旧集群中删除的别名的确切名称。您可以在步骤1的输出中找到别名的名称。
- 导航至“消息传送”>“群聊服务器别名映射”>“添加新的”
- 添加与在Cluster1上配置完全相同的别名。您可以在步骤1的命令输出中找到别名。
步骤13.下一步重新启动XCP路由器(Cluster2)
步骤14. Cisco XCP路由器成功重新启动后(Cluster2)继续并停止Cisco Text Conferencing Manager(Cluster2)
步骤15.使用步骤2中创建的PostgreSQL备份执行数据库还原。确保将备份还原到步骤3中创建的新数据库实例(PostgreSQL)
- 验证导入的数据是否在tc_room、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并检索“所有房间”选项卡中的所有房间。