如果主设备出现故障,您可以执行数据库故障切换。本主题介绍运行的版本低于 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 -
在所有服务提供程序设备中启动 slon 守护进程:
/usr/local/desktone/scripts/start_slon_fdb.sh -
使用您的浏览器登录到主服务提供程序设备的服务中心(辅助服务提供程序设备为主设备),然后执行 slony 重新初始化操作:
- 导航到设备 > 维护 > Slony 操作。
- 在“组织 ID”下拉列表中,选择“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'; -
在组织中的所有租户设备上启动 slon 守护进程:
/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 操作。
- 从“组织 ID”下拉列表中选择租户的组织 ID。
- 为数据库实例名称标签选择“架构”。
- 单击初始化 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 重新初始化操作。
此页面对您有帮助吗?