Skip to main content

2026 年 8 月 11 日

数据库故障切换 - 旧版设备

如果主设备出现故障,您可以执行数据库故障切换。本主题介绍运行的版本低于 9.0.0 的设备的故障切换过程。

**注意:**本主题仅适用于运行版本低于 9.0.0 的设备。有关新版设备的信息,请参阅数据库故障切换 - 新版设备

当主设备出现故障时,辅助数据库处于只读状态。进行故障切换时,请执行以下任务:

  • 允许对辅助数据库执行写入操作
  • 将辅助服务提供程序设备永久升级为主设备
  • 将辅助租户设备永久升级为主设备
  • 重新启动主设备

允许对辅助数据库执行写入操作

此过程的目的是,在主设备不可用时,将主数据库切换到辅助设备(租户或服务提供程序)。这样做是为了允许执行写入操作,以使辅助设备的数据库成为主数据源。

  1. 在主设备(如果可访问)和辅助设备上停止 dtService、av-manager 和诊断服务:

    sudo service dtService stop
    sudo service av-manager stop
    sudo service diagnose stop
    
  2. 在主设备(如果可访问)和辅助设备上停止所有 slony 守护进程:

    sudo killall slon
    
  3. 在辅助设备上,连接到 FDB 数据库并执行以下 SQL 命令:

     drop schema _slony cascade;
    
  4. 如果设备属于租户组织,则对 EDB 和 AVDB 重复执行步骤 3。

  5. 如果主设备上的数据库仍然可访问,则对数据库进行备份,复制数据库文件,并将数据库还原到辅助设备 (BackingUpandRestoringDatabases.md)。

  6. 打开 /usr/local/desktone/release/active/conf/fdb.properties 文件进行编辑,移除主设备的 IP 地址。

  7. 如果设备属于租户组织,请对 /usr/local/desktone/release/active/edb.properties 重复执行步骤 6。

  8. 如果设备属于租户组织,请对 /usr/local/desktone/release/active/avdb.properties 重复执行步骤 6。

  9. 设置 DB_HOST 和 DB_PASSWORD 环境变量:

    export DB_HOST=IP_of_TA2_appliance
    export DB_PASSWORD=database_password
    
    
  10. 使用 sudo 执行 av-setup 脚本:

    sudo /usr/local/desktone/scripts/av-setup
    
  11. 打开 applications.properties 文件进行编辑:

    vi /usr/local/xmpms/diagnose/config/application.properties
    
  12. 在 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
    
    
  13. 在辅助设备上启动 dtService、av-manager 和诊断服务:

    service dtService start
    service av-manager start
    service diagnose start
    

将辅助服务提供程序设备升级为主设备

要将辅助服务提供程序设备永久升级为主服务提供程序设备,请执行以下步骤。

在此示例中,主设备为“A”,辅助设备为“B”,且设备 A 可访问(此设备中的数据库可访问)。

  1. 在所有服务提供程序设备上停止 dtService:

    service dtService stop
    
  2. 登录到所有服务提供程序设备。

  3. 打开 /usr/local/desktone/release/active/conf/fdb.properties 文件进行编辑,移除处于故障状态的主设备的 IP 地址。

  4. 在所有服务提供程序设备上停止所有 slony 守护进程:

    killall slon
    
  5. 在主设备和辅助设备上,连接到 FDB 数据库并执行以下 SQL 命令:

    drop schema _slony cascade;
    
  6. 在数据中心的辅助设备中执行以下 SQL 命令(将“A”和“B”替换为您的设备名称):

    fdb=# update appliance set capabilities = (capabilities & 65343) where name='A'; 
    fdb=# update appliance set capabilities = (capabilities | 192) where name='B';
    
  7. 在除故障设备以外的其他服务提供程序设备上启动 dtService:

    service dtService start
    

    在继续执行下一步之前,确认设备已启动且正在运行。

  8. 在除主服务提供程序设备之外的其他所有服务提供程序设备上停止 dtService(辅助服务提供程序设备为主设备):

    service dtService stop
    
  9. 在所有服务提供程序设备中启动 slon 守护进程:

    /usr/local/desktone/scripts/start_slon_fdb.sh
    
  10. 使用您的浏览器登录到主服务提供程序设备的服务中心(辅助服务提供程序设备为主设备),然后执行 slony 重新初始化操作:

    1. 导航到设备 > 维护 > Slony 操作
    2. 在“组织 ID”下拉列表中,选择“1000”。
    3. 单击初始化 Slony 按钮以重新初始化 slony。
  11. 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)
    
  12. 在除故障服务提供程序设备以外的其他所有设备上启动 dtService。

    service dtService start
    

将辅助租户设备升级为主设备

要将辅助租户设备永久升级为主租户设备,请执行以下步骤。

在此示例中,主设备为“A”,辅助设备为“B”,且设备 A 可访问(此设备中的数据库可访问)。

  1. 在组织中的所有租户设备上停止 dtService:

    service dtService stop
    
  2. 登录到组织中的所有租户设备。

  3. 打开 /usr/local/desktone/release/active/conf/fdb.properties 文件进行编辑,移除处于故障状态的主设备的 IP 地址。

  4. 在组织中的所有租户设备上停止所有 slony 守护进程:

    killall slon
    
  5. 如果需要,备份主设备上的数据库并将其还原到辅助设备上。

  6. 在主设备和辅助设备上,连接到 FDB 数据库并执行以下 SQL 命令:

    drop schema _slony cascade;
    
  7. 在主服务提供程序设备上执行以下 SQL 命令(将“A”和“B”替换为您的设备名称):

    fdb=# update appliance set capabilities = (capabilities & 65343) where name='A';  
    fdb=# update appliance set capabilities = (capabilities | 192) where name='B';
    
  8. 在组织中的所有租户设备上启动 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
    
  9. 使用您的浏览器登录到主服务提供程序设备的服务中心,并执行 slony 重新初始化操作:

    1. 导航到设备 > 维护 > Slony 操作
    2. 从“组织 ID”下拉列表中选择租户的组织 ID。
    3. 为数据库实例名称标签选择“架构”。
    4. 单击初始化 Slony 按钮以重新初始化 slony。
  10. 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)
    
  11. 在除处于故障状态的租户设备以外的其他所有租户设备上启动 dtService。

     service dtService start
    

重新启动主设备

在进行故障切换后重新启动主设备时,请对 EDB 和 AVDB 执行 slony 重新初始化操作。

此页面对您有帮助吗?

对本主题提供反馈

本主题对您有帮助吗?

请勿填写任何个人信息或机密信息。

正在生成链接…