所选语种没有对应资源,请选择:

本站点使用Cookies,继续浏览表示您同意我们使用Cookies。Cookies和隐私政策>

提示

尊敬的用户,您的IE浏览器版本过低,为获取更好的浏览体验,请升级您的IE浏览器。

升级

FusionCloud 6.3.1 故障处理 06

评分并提供意见反馈 :
华为采用机器翻译与人工审校相结合的方式将此文档翻译成不同语言,希望能帮助您更容易理解此文档的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 华为对于翻译的准确性不承担任何责任,并建议您参考英文文档(已提供链接)。
数据库故障恢复指导

数据库故障恢复指导

Gaussdb数据库故障

故障定位流程

当发生故障时,应遵循如下的步骤进行分析处理。最好不要在故障原因和解决方案很明确之前采取一些措施,以免引发其他问题。

明确环境

首先应明确发生故障的环境配置信息。包括:

  • 操作系统类型和详细版本号。
  • 数据库部署方案是一主一备、一主一备一级联一次级联,单实例还是多个实例。
  • GaussDB数据库的详细版本号。
  • FusionSphere OpenStack详细版本号。
定位分析

定位过程需要包含以下活动:

  1. 明确问题,以及受影响的范围。故障发生后,哪些业务功能受到影响。
  2. 查看日志,包括数据库日志、操作系统日志,数据库控制脚本日志,则可能还需要检查主备仲裁组件的日志。
  3. 还需要明确故障发生的频率,例如是偶然现象,还是有规律的间隔一段时间等。
  4. 如果需要现场外的人员协助,则还应整理好故障相关的资料。
形成处理方案

根据故障原因,形成可行的处理方案,这个方案必须是已经验证过的,或者需要搭建环境重现问题后测试验证,确认没有问题的方案。

解决方案不仅应解决现有故障,而且需要保证不能引发新的问题。

解决方案应包含问题处理步骤,以及回退步骤。一旦实施后没有效果或引发其他问题,应能快速回退到实施前的状态。

处理故障

根据处理方案进行故障处理。处理过程中,应确保每个步骤都成功执行。最后应验证、观测实施效果。

总结分析

故障处理后,应分析故障发生的原因,并对手册或方案等作出相应的调整,避免今后出现同样的问题。或者应形成FAQ或案例,供今后参考。

数据库状态异常处理
现象描述

查看数据库控制脚本日志中有如下错误提示信息:

server starting.... stopped waiting
gs_ctl: could not start server
Examine the log output: /opt/gaussdb/data/pg_log/gs_ctl-current.log or the log directory configured by parameter "log_directory" in postgresql.conf
可能原因

可能产生原因如下:

主机磁盘空间占满
  1. 登录到故障数据库所在主机。具体操作请参见登录数据库所在节点。其中,“选择鉴权方式”固定选择2。
  2. 执行df -h命令,查看数据库分区是否正常建立。

    正常现象如下图所示:

    磁盘利用率达到100%后,会导致数据库状态为fault,可以采取参考步骤 2~步骤 20优先扩容磁盘空间,让环境暂时可用,请联系技术支持工程师协助解决

临时扩容磁盘的方法如下:

  1. 登录故障数据库所在节点, 具体操作请参见登录数据库所在节点
  2. 执行vgs命令,查看单板上可用磁盘空间大小。

  3. 登录“FusionSphere OpenStack的安装部署界面”,选择“配置 > 磁盘”,查看是否有磁盘扩容任务在进行。

    • 有,等待其他的磁盘扩容任务完成后,执行步骤 4
    • 没有,执行步骤 4

  4. 磁盘剩余空间足够,执行以下命令扩容磁盘空间:

    cps hostcfg-item-update --item logical-volume --lvname database --size lv_size --volumegroup vg_name --type storage hostcfg_name

    cps commit

    其中:

    • hostcfg_name为创建的分区规则的名称,可以通过命令cps hostcfg-list --type storage来查询hostid对应的storage名称,回显信息的“name”列即为storage名称。

      回显如下类似信息:

      +---------+-----------------+-----------------------------------------------------------+ 
      | type    | name            | hosts                                                     | 
      +---------+-----------------+-----------------------------------------------------------+ 
      | storage | default         | default:all                                               | 
      |         |                 |                                                           | 
      | storage | control_group_3 | hostid:139D2E64-1DD2-11B2-920A-000000821800               | 
      |         |                 |                                                           | 
      | storage | control_group_2 | hostid:13A3B054-1DD2-11B2-B425-000000821800               | 
      |         |                 |                                                           | 
      | storage | compute_group0  | hostid:13D9A9F2-1DD2-11B2-99C9-000000821800, 138DC820-1DD | 
      |         |                 | 2-11B2-BEC5-000000821800                                  | 
      |         |                 |                                                           | 
      | storage | control_group_1 | hostid:13934E58-1DD2-11B2-AAC6-000000821800               | 
      |         |                 |                                                           | 
      +---------+-----------------+-----------------------------------------------------------+
    • database是已存在主机中数据库逻辑分区的名称,可以通过cps hostcfg-show --type storage hostcfg_name命令来查询。
    • lv_size可以根据实际使用场景所需要的大小来配置,必须小于磁盘可用空间,比如50g。
    • vg_name默认是cpsVG,可以通过执行vgs命令查询。
    说明:

    FusionSphere OpenStack系统中进行磁盘扩容时,为串行操作,如果同一时间内有多个扩容的任务时,则需要等前一个任务完全成功后,才会开始执行下一个,所以如果在此次扩容前,系统中已经有扩容的任务时,此次扩容的时间消耗较长。请避免同时进行扩容磁盘分区的操作。

  5. 数据库如果是主备部署,并且主备数据库节点在不同分区规则下,可执行以下命令,来查询待扩容磁盘的主机ID,从而通过上述步骤 4进行另一节点的扩容。

    cps hostcfg-list --type storage |grep hostid

    “hostid”是待扩容磁盘的主机ID。

  6. 在已登录的数据库节点,执行以下命令,查看占用空间最多的文件。

    su - gaussdba

    cd $GAUSSDATA

    du -sh *

    回显信息如图7-6所示。

    图7-6 回显信息

    查看base大小是否大于扩容前数据磁盘空间的70%。

    • 是,执行步骤 7
    • 否,请联系技术支持工程师协助解决
    说明:

    执行步骤步骤 6~步骤 20,定位是否由token表占用引起,如是,可以选择清理token表磁盘空间。

    注意对token表进行清理会阻塞业务对该表的操作,而不对token表清理,token占用的磁盘空间则不会立即释放。

  7. 执行以下命令,进入base目录,查看占用磁盘空间最多的目录。

    cd base

    du -sh *

    回显信息如图7-7所示。

    图7-7 回显信息

    从此回显信息中可以看出“16390”目录占用的磁盘空间最大,该数字表示“database”的“oid”。

  8. 执行以下命令,登录数据库。

    gsql postgres

    按照提示输入数据库帐户密码。默认密码为“FusionSphere123”,如果有修改过密码,则使用修改后的密码登录。

  9. 执行以下命令,查询对应的数据库名称。

    select datname from pg_database where oid = 16390;

    16390步骤 7中查询出的占用磁盘空间最多目录的“oid”。

    回显信息如图7-8所示。

    图7-8 回显信息

    通过此回显信息可以判断占用磁盘空间最多的是keystone数据库。

  10. 执行以下命令,退出数据库。

    \q

  11. 执行以下命令,切换到root权限。

    exit

  12. 执行以下命令,登录keystone数据库。

    su gaussdba

    gsql keystone

    按照提示输入数据库帐户密码。默认密码为“FusionSphere123”,如果有修改过密码,则使用修改后的密码登录。

  13. 执行以下命令查询所有对象的大小。

    SELECT nspname || '.' || relname AS "relation",

    pg_size_pretty(pg_total_relation_size(C.oid)) AS "size"

    FROM pg_class C

    LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)

    WHERE nspname NOT IN ('PG_CATALOG',

    'INFORMATION_SCHEMA','PG_TOAST')

    ORDER BY pg_total_relation_size(C.oid) DESC

    LIMIT 20;

    回显信息如图7-9所示。

    图7-9 回显信息

    例如,占据磁盘空间最大的表为keystone数据库下的token表。

  14. 执行以下命令,查询token表对应的大小。

    select pg_total_relation_size('table_name')::bigint/1024/1024 MB;

    table_name为上一步查询出的表名称。

    回显信息如图7-10所示。

    图7-10 回显信息

  15. 执行以下命令,退出数据库。

    \q

  16. 执行以下命令,切换到root权限。

    exit

  17. 执行以下命令,查询可用磁盘空间大小。

    df -h

    此处查询出的当前数据库分区剩余磁盘是否大于步骤 14查询到的所需空间。

    • 是,执行步骤 19
    • 否,执行步骤 18

      例如,此处查询出当前数据库分区剩余磁盘116MB,小于步骤 14查询到的所需空间18615MB,则需要扩容。

  18. 重复执行步骤 2步骤 5,扩容磁盘空间。

    需要确保扩容后的磁盘空间大于步骤 14查询到的空间。

  19. 执行以下命令,登录keystone数据库。

    su gaussdba

    gsql keystone

    按照提示输入数据库帐户密码。默认密码为“FusionSphere123”,如果有修改过密码,则使用修改后的密码登录。

  20. 执行以下命令,对token表进行磁盘碎片清理。

    vacuum full token

    说明:

    vacuum full操作会阻塞其他业务对该表的操作,消耗系统IO,请在业务量较小的时间点进行,13G的token空间,耗时约10分钟,命令回显“VACUUM”表示执行完毕。

  1. 执行以下命令,退出数据库。

    \q

  2. 执行以下命令,切换到root权限。

    exit

  3. 执行以下命令,停止gaussdb数据库。

    cps host-template-instance-operate --service gaussdb gaussdb --action stop

    该操作会停止gaussdb数据库,请确保期间不会下发业务。

  4. 重复执行如下命令查询gaussdb数据库状态,直到查询到的gaussdb数据库状态均为fault。

    cps template-instance-list --service gaussdb gaussdb

    +------------+---------------+---------+--------------------------------------+-------------+
    | instanceid | componenttype | status  | runsonhost                           | omip        |
    +------------+---------------+---------+--------------------------------------+-------------+
    | 0          | gaussdb       | fault   | 42309170-0261-512F-DF77-0507589D4C3D | 128.6.35.15 |
    | 1          | gaussdb       | fault   | 4230A856-E289-AAB3-15F3-82B46C8EFDCC | 128.6.35.78 |
    +------------+---------------+---------+--------------------------------------+-------------+

  5. 执行以下命令,启动gaussdb数据库。

    cps host-template-instance-operate --service gaussdb gaussdb --action start

  1. 重复执行如下命令查询gaussdb数据库状态,直到查询到的gaussdb数据库状态为active、standby。

    cps template-instance-list --service gaussdb gaussdb

    +------------+---------------+---------+--------------------------------------+-------------+
    | instanceid | componenttype | status  | runsonhost                           | omip        |
    +------------+---------------+---------+--------------------------------------+-------------+
    | 0          | gaussdb       | active  | 42309170-0261-512F-DF77-0507589D4C3D | 128.6.35.15 |
    | 1          | gaussdb       | standby | 4230A856-E289-AAB3-15F3-82B46C8EFDCC | 128.6.35.78 |
    +------------+---------------+---------+--------------------------------------+-------------+

数据库文件权限异常
  1. 执行命令cd /opt/fusionplatform/data/gaussdb_data/data切换目录。
  2. 排查目录下,是否有放置非数据库文件。

    数据库目录所有文件应如下图所示。如果有非数据库文件,则将文件删除。

    -rw-------  1 gaussdba dbgrp   200 Jan 19 21:18 backup_label.old 
    drwx------ 18 gaussdba dbgrp  4096 Jan 19 21:18 base 
    -rw-------  1 gaussdba dbgrp     0 Jan 19 21:18 build_completed.done 
    -rw-------  1 gaussdba dbgrp  1448 Jan 19 21:18 ca.crt 
    -rw-------  1 gaussdba dbgrp   922 Jan 19 21:18 dblink.conf 
    -rw-------  1 gaussdba dbgrp    16 Jan 22 22:15 gaussdb.state 
    drwx------  2 gaussdba dbgrp  4096 Jan 22 22:49 global 
    -rw-------  1 gaussdba dbgrp     1 Jan 19 21:18 gs_build.pid 
    drwx------  2 gaussdba dbgrp  4096 Jan 23 00:00 pg_audit 
    drwx------  2 gaussdba dbgrp  4096 Jan 21 22:03 pg_blackbox 
    drwx------  2 gaussdba dbgrp  4096 Jan 22 01:16 pg_clog 
    drwx------  2 gaussdba dbgrp  4096 Jan 22 22:15 pg_confile_backup 
    -rw-------  1 gaussdba dbgrp     0 Jan 22 22:15 pg_ctl.lock 
    -rw-------  1 gaussdba dbgrp  4733 Jan 22 22:15 pg_hba.conf 
    -rw-------  1 gaussdba dbgrp  1024 Jan 19 21:18 pg_hba.conf.lock 
    -rw-------  1 gaussdba dbgrp  1636 Jan 19 21:18 pg_ident.conf 
    drwx------  2 gaussdba dbgrp  4096 Jan 19 21:18 pg_log 
    drwx------  4 gaussdba dbgrp  4096 Jan 19 21:18 pg_multixact 
    drwx------  2 gaussdba dbgrp  4096 Jan 21 22:03 pg_notify 
    drwx------  2 gaussdba dbgrp  4096 Jan 19 21:18 pg_serial 
    drwx------  2 gaussdba dbgrp  4096 Jan 19 21:18 pg_snapshots 
    drwx------  2 gaussdba dbgrp  4096 Jan 23 00:01 pg_stat_tmp 
    drwx------  2 gaussdba dbgrp  4096 Jan 22 20:49 pg_subtrans 
    drwx------  2 gaussdba dbgrp  4096 Jan 19 21:18 pg_tblspc 
    drwx------  2 gaussdba dbgrp  4096 Jan 19 21:18 pg_twophase 
    -rw-------  1 gaussdba dbgrp     4 Jan 19 21:18 PG_VERSION 
    drwx------  2 gaussdba dbgrp  4096 Jan 19 21:18 pg_wallet 
    drwx------  3 gaussdba dbgrp  4096 Jan 22 23:45 pg_xlog 
    -rw-------  1 gaussdba dbgrp 27486 Jan 22 22:15 postgresql.conf 
    -rw-------  1 gaussdba dbgrp  1024 Jan 17 01:04 postgresql.conf.lock 
    -rw-------  1 gaussdba dbgrp    84 Jan 22 22:15 postmaster.opts 
    -rw-------  1 gaussdba dbgrp    97 Jan 22 22:15 postmaster.pid 
    -rw-------  1 gaussdba dbgrp  1241 Jan 17 01:04 server.crt 
    -rw-------  1 gaussdba dbgrp  1766 Jan 17 01:04 server.key 
    -r--------  1 gaussdba dbgrp  1064 Jan 17 01:04 server.key.cipher 
    -r--------  1 gaussdba dbgrp    24 Jan 17 01:04 server.key.rand

  3. 排查目录下,文件权限是否全是gaussdba: dbgrp。

    如果有文件的权限不正确,则执行以下命令重新设置文件权限:

    chown gaussdba:dbgrp filename

系统资源不足

观察数据库服务端日志,查看是否有类似如下信息:

gaussmaster 8620  FATAL:  could not create shared memory segment: Invalid argument
gaussmaster 8620  DETAIL:  Failed system call was shmget(key=5432016, size=1206730752, 03600).
gaussmaster 8620  HINT:  
The PostgreSQL documentation contains more information about shared memory configuration.

或者

gaussmaster 20059  FATAL:  could not create semaphores: No space left on device
The PostgreSQL documentation contains more information about configuring your system for PostgreSQL.

如果有上述信息,排查系统CPU利用率、系统内存、系统的IO繁忙状态,这些都可能导致gaussdb响应速度延迟较高,甚至异常。

此现象的处理方法如下

  1. 登录故障主机,分别执行topiostat命令,查看系统共享内存消耗量以及CPU使用率、系统IO。

  2. 查看系统messages日志,具体操作可参见定位所需的日志路径。确认资源隔离功能是否自动停止了gaussdb进程,即查看日志中是否有如下信息:

    Memory cgroup out of memory: Kill *****gaussdb sacrifice child

  3. 查看UVP日志,具体操作可参见定位所需的日志路径。确认故障发生时系统资源是否异常。
  4. 请联系技术支持工程师协助解决,结合上述步骤收集到的信息,排查系统异常原因。
备用服务器重建时主用服务器下电

数据库主备服务器状态异常,主数据库已经被下电或停止。查看备数据库控制脚本日志,日志显示备用服务器一直接收到升主操作,但是日志中提示有尚未完成的build操作,无法启动为主用服务器。

登录数据库备服务所在主机,执行以下命令:

su gaussdba

gs_ctl querybuild

显示如下信息,DETAIL_INFORMATION字段为 BuildFailed表示备用服务此时出现了故障,需要重建,重建失败。

 Ha state:
 LOCAL_ROLE                     : Unknown
 STATIC_CONNECTIONS             : 2
 DB_STATE                       : NeedRepair
 DETAIL_INFORMATION             : BuildFailed

此现象的处理方法如下:

  1. 上电主数据库。

    如果主数据库存在异常,则需要参考本文档中其他故障处理方法将主数据库所在主机恢复正常。

  2. 等待备机重建完成,在gaussdb用户权限下,再次使用gs_ctl querybuild命令查询服务状态。

    DB_STATE显示为normal表示备用服务状态恢复正常。

主机暴力下电,重新上电后数据库组件故障
  1. 登录到故障数据库所在主机。具体操作请参见登录数据库所在节点
  2. 执行以下命令,使用vi编辑器打开并查看故障数据库服务端日志。

    vi /var/log/fusionsphere/component/gaussdb/gaussdb.log

    有如下错误提示信息则表示属于此种故障场景:

    [2015-11-10 08:48:38.171 CST]  startup 14076  LOG:  open dataxlogchk file success "global/pg_dataxlogchk"  
    [2015-11-10 08:48:38.175 CST]  startup 14076  LOG:  at least one crc passed, minRecoveryPoint=[75/821CC000] 
    [2015-11-10 08:48:38.175 CST]  startup 14076  FATAL:  end of error record LSN [75/82000108] LE minRecoveryPoint [75/821CC000] 
    [2015-11-10 08:48:38.198 CST]  gaussmaster 14066  LOG:  startup process (PID 14076) exited with exit code 1 
    [2015-11-10 08:48:38.198 CST]  gaussmaster 14066  LOG:  aborting startup due to startup process failure 
    [2015-11-10 08:48:38.268 CST]  gaussmaster 14066  LOG:  StreamDoUnlink sockpath =/tmp/.s.PGSQL.2345 
    [2015-11-10 08:48:38.268 CST]  gaussmaster 14066  LOG:  UnlinkLockFile socket_lock_file =/tmp/.s.PGSQL.2345.lock     

  3. 执行以下命令,获取gaussdb挂载路径。

    df -h

    回显信息如下图所示。

  4. 执行以下命令,进入gaussdb挂载路径。

    cd /opt/fusionplatform/data/gaussdb_data

  5. 执行如下命令,移除旧的检查文件。

    该文件移除后数据库起来时会重新创建。

    mv data/global/pg_dataxlogchk /home/fsp

  6. 等待一分钟,执行以下命令,查看gaussdb组件状态。

    cps template-instance-list --service gaussdb gaussdb

    gaussdb根据实际的数据库情况填写,如果nova或者neutron存在分库场景,则此处为gaussdb_neutrongaussdb_nova

    回显信息显示“status”是“active”和“standby”则表示数据库组件状态正常。

    +------------+---------------+---------+--------------------------------------+--------------+ 
    | instanceid | componenttype | status  | runsonhost                           | omip         | 
    +------------+---------------+---------+--------------------------------------+--------------+ 
    | 0          | gaussdb       | active  | 200BC798-E58C-0000-1000-1DD200001220 | 128.6.35.105 | 
    | 1          | gaussdb       | standby | CCCC8177-46D4-0000-1000-1DD200009B80 | 128.6.35.37  | 
    +------------+---------------+---------+--------------------------------------+--------------+

    如果数据库组件状态仍然异常,请联系技术支持工程师协助解决

数据库组件访问失败
IP监听问题
  1. 执行以下命令查询数据库服务所在主机。

    cps template-instance-list --service gaussdb gaussdb

    回显信息中,状态为active的服务所在主机为主用数据库服务所在主机;状态为standby的服务所在主机为备用数据库服务所在主机。

  2. 登录数据库所在节点,执行以下命令。

    ip addr show | grep gau

    主数据库服务所在主机上有两个IP地址,一个用于提供服务,一个用于主备数据库间同步数据:

    备数据库服务所在主机上有一个IP地址,用于主备数据库间同步数据。

  3. 查看主数据库服务所在主机是否监听浮动IP地址,即用于提供服务的IP地址。

    执行comp-ip-get all可以获取所有数据库的浮动IP。

  4. 查看数据库是否绑定浮动IP,执行以下命令。

    netstat -anp | grep 浮动IP地址

    是:非IP监听问题,继续排查其他故障场景。

    否:联系技术支持,排查数据库IP是否被非法占用。

数据库连接数异常

查看是否有数据库连接达到阈值告警。

如果有,则参考《FusionCloud 6.3.1 告警&事件参考》中的“ALM-73405 gaussdb连接数超过阈值 ” 章节的处理方法,完成对告警的恢复。

数据库数据间不同步

查看是否有主备数据库数据不同步告警。

如果有,则参考《FusionCloud 6.3.1 告警&事件参考》中的“ALM-73403 gaussdb主备数据不同步 ” 章节的处理方法,完成对告警的恢复。

数据库单节点主机系统故障
单主机OS(database所在节点)故障

登录FusionSphere OpenStack安装部署界面,找到gaussdb主备服务所在的主机,即部署database角色(或者database_nova,database_neutron,database_cinder,database_keystone)的主机,是否为故障状态。

如果主机故障,则参见主机操作系统故障进行恢复。

两个主机OS(database所在节点)故障

登录FusionSphere OpenStack安装部署界面,找到gaussdb主备服务所在的主机,即部署database角色(或者database_nova,database_neutron,database_cinder,database_keystone)的主机,是否同一数据库角色所在的两台主机同时故障。

如果同一数据库角色所在的两台主机同时故障且两个主机独立部署了数据库角色,则参考数据库双节点主机系统故障进行恢复。

主数据库故障,备数据库升主异常处理
现象描述

主gaussDB所在节点故障,无法正常运行,则希望备升为主。但备GaussDB由于网络故障、被下电等没有正常从主同步数据,将会拒绝升主。可使用CPS命令cps template-instance-list --service gaussdb gaussdb,查看是否升主成功。

故障定位

主gaussDB无法启动,登录备gaussDB所在节点,查看日志文件“/var/log/fusionsphere/component/gaussdbControl/gaussdbControl_error.log ”,如果在周期打印NotAllowActiveException: time diff too big或者NotAllowActiveException: ha_status is not normal,则说明是本问题。

处理步骤
  1. 使用“PuTTY”,通过External OM平面IP地址登录AZ内第一台主机。

    帐号:fsp,默认密码:Huawei@CLOUD8
    说明:
    • 系统同时支持密码和公私钥对身份进行认证,如果使用公私钥对进行登录认证请参见使用PuTTY通过公私钥对认证方式登录节点
    • External OM平面IP地址请参考软件安装阶段FusionCloud Deploy导出的参数信息汇总文件《xxx_export_all.xlsm》的“FCD生成的LLD”页签搜索对应参数名称获取。不同场景参数名称如下所示:
      • Region Type I场景级联层:Cascading-ExternalOM-Reverse-Proxy,被级联层:Cascaded-ExternalOM-Reverse-Proxy。
      • Region Type II和Type III场景:ExternalOM-Reverse-Proxy。

  2. 执行以下命令切换到“root”用户。

    su - root

    “root”用户的默认密码为“Huawei@CLOUD8!”。

  3. 执行TMOUT=0防止会话超时退出。
  4. 导入环境变量,请参见导入环境变量
  5. 执行以下命令修改gaussDB的配置项,设置主备倒换策略为normal,即不检查备数据是否同步。

    cps template-params-update --service gaussdb gaussdb --parameter ha_strategy=normal

    cps commit

  6. 等待1–3分钟,执行以下命令查询备gaussDB是否成功升主。

    cps template-instance-list --service gaussdb gaussdb

    回显信息如下:

    564D28B3-FCD4-EE16-01F5-0FC0B8A9AD69:/var/log/fusionsphere/component/gaussdbControl # cps template-instance-list --service gaussdb gaussdb 
    +------------+---------------+---------+--------------------------------------+------------+ 
    | instanceid | componenttype | status  | runsonhost                           | omip       | 
    +------------+---------------+---------+--------------------------------------+------------+ 
    | 0          | gaussdb       | standby | 564D34D7-0F0A-F8FE-70F2-BA0AA0FB7E41 | 10.9.1.96  | 
    | 1          | gaussdb       | active  | 564D28B3-FCD4-EE16-01F5-0FC0B8A9AD69 | 10.9.2.169 | 
    +------------+---------------+---------+--------------------------------------+------------+

    若回显信息中原备gaussDB的status显示为active,则表明备gaussDB升主成功,否则请联系技术支持工程师协助解决

  7. 根据备gaussDB未正常同步数据的时间长度,决定是否执行备份数据恢复。

    若备gaussDB未正常同步数据超过一天,建议恢复。具体恢复操作请参考《FusionCloud 6.3.1 备份恢复指南》的恢复FusionSphere OpenStack章节。

  8. 主备都恢复正常后,执行以下命令将主备倒换策略再设置回advance

    cps template-params-update --service gaussdb gaussdb --parameter ha_strategy=advance

    cps commit

数据库双节点主机系统故障
现象描述

独立部署数据库节点的场景,主备数据库服务所独占的主机同时故障时,创建虚拟机失败,Keystone鉴权失败,访问数据库失败。

可能原因
  • 数据库节点硬件故障。
  • 数据库节点操作系统故障。
处理步骤
  1. 如果是硬件故障(主机整机故障或硬盘故障),应先更换故障主机,或在故障主机下电状态更换故障的硬盘。

    更换的备件要与被更换的对象规格、型号均一致,更换步骤参见 《FusionCloud 6.3.1 部件更换》更换主机及配件章节。

    说明:

    部分型号的RAID卡要求单个硬盘也需要组成RAID 0,否则无法被操作系统识别,例如Lsi 1078、Lsi 2208或Lsi 3108。

    因此,使用这些RAID卡的主机如果更换单个硬盘后,需要先对硬盘配置RAID。

    具体RAID卡的要求,以及配置硬盘RAID的方法,请参考对应的硬件产品文档。

    如果无法确认RAID卡要求,建议对主机上所有单独使用的硬盘均分别组成RAID 0。

  2. 使用“PuTTY”工具登录AZ内任意一台主机。

    fsp帐户,通过External OM平面IP地址登录。

    fsp用户的默认密码为Huawei@CLOUD8

    说明:
    • 系统同时支持密码和公私钥对身份进行认证,如果使用公私钥对进行登录认证请参见使用PuTTY通过公私钥对认证方式登录节点
    • External OM平面IP地址请参考软件安装阶段FusionCloud Deploy导出的参数信息汇总文件《xxx_export_all.xlsm》的“FCD生成的LLD”页签搜索对应参数名称获取。不同场景参数名称如下所示:
      • Region Type I场景级联层:Cascading-ExternalOM-Reverse-Proxy,被级联层:Cascaded-ExternalOM-Reverse-Proxy。
      • Region Type II和Type III场景:ExternalOM-Reverse-Proxy。

  3. 执行以下命令,并按提示输入“root”用户的密码,切换至“root”用户。

    su - root

    默认密码:“Huawei@CLOUD8!”。

  4. 执行以下命令,防止系统超时退出。

    TMOUT=0

  5. 导入环境变量
  6. 根据故障节点的处理方式,判断操作。

    • 更换主机整机或者更换故障主机上的磁盘,执行步骤 7
    • 重装故障主机操作系统,执行步骤 8

  7. 执行以下命令查询数据库组件的主备状态。

    cps template-instance-list --service gaussdb_service gaussdb_template

    其中gaussdb_service和gaussdb_template分别是故障数据库组件的service和template。

    需要反复查询,直到数据库组件正常后,执行步骤 9

  8. 参考数据库单节点主机系统故障,依次恢复两台故障的数据库节点。
  9. 执行以下命令查看备份服务的主节点。

    cps template-instance-list --service backup backup-server

    回显信息中,状态为“active”的节点,为备份服务主节点,记录其主机ID。

  10. 查询备份服务主节点的管理IP地址。

    cps host-list | grep 备份服务主节点ID

  11. 获取可用的备份包。

    系统会每天自动执行备份,并将备份包保存到backup-server所在主节点上。如果配置了第三方备份服务器,则备份包还会保存在第三方备份服务器上。本地备份路径为“/opt/backup/backupfile”,第三方备份服务器备份路径在设定备份策略时指定。

    GaussDB备份包名称格式为“gaussdb-YYYY-MM-DD-HH-MM-SS-COUNT-TYPE.tar.gz”

    在数据库分库场景下,GaussDB的数据包又细分为gaussdb_neurton、gaussdb_nova、gaussdb_keystone、gaussdb_cinder四个包,名称格式例如“gaussdb_neurton-YYYY-MM-DD-HH-MM-SS-COUNT-TYPE.tar.gz”

    • COUNT:备份包计数。
    • TYPE:备份包类型,取值为single或者all。
      • single指单个服务进行备份得到的备份包。
      • all指所有服务进行备份得到的备份包。
    1. 使用“PuTTY”工具,通过备份服务主节点的管理IP地址,先用帐号“fsp”登录,然后使用su - root命令切换到帐号“root”。

      帐号“fsp”的初始密码为“Huawei@CLOUD8”。

      帐号“root”的初始密码为“Huawei@CLOUD8!”

      说明:

      Region Type I场景下系统同时支持密码和公私钥对身份进行认证,如果使用公私钥对进行登录认证,具体操作请参见使用PuTTY通过公私钥对认证方式登录节点

    2. 将“/opt/backup/backupfile”路径下的备份包保存到本地。

  12. 将已获取的gaussdb备份包,上传到备份服务主节点。

    可使用“winSCP”等工具,通过备份服务主节点的管理IP地址,以“root”用户访问备份服务主节点,将备份包上传到主节点的“/opt/backup”目录下。

  13. 以“root”用户登录备份服务主节点,执行以下命令修改备份包的所有者为backup用户。

    chown backup:cps /opt/backup/备份包

  14. 执行以下命令手动恢复gaussdb。

    restore execute --file 备份包名称 --path 备份包保存路径 --service gaussdb

    数据库分库场景,需在命令后指定gaussdb备份包所属组件:

    restore execute --file 备份包名称 --path 备份包保存路径 --service gaussdb_组件

    其中:

    • 备份包名称,例如“gaussdb-2015-10-17-14-26-11-87-all.tar.gz”。

      数据库分库场景,备份包名称例如“gaussdb_neurton-2015-10-17-14-26-11-87-all.tar.gz”

    • 备份包保存路径,例如“/opt/backup”。

    可通过restore progress-get --service gaussdb(数据库分库场景为具体服务的gaussdb名称,例如“gaussdb_neutron”)来查看恢复进度。

    • result为“SUCCESS”,表明已经恢复完成,执行15
    • result为“FAILD”,请等待15分钟后再次执行恢复命令,如果仍为“FAILD”,请联系技术支持工程师协助解决
    • result为“DOING”,表明还在恢复过程中,请等待5分钟再次查询。

      例如,

      gaussdb未分库时,恢复完整的gaussdb:

      restore execute --file gaussdb-2015-10-17-14-26-11-87-all.tar.gz --path /home/fsp --service gaussdb

      gaussdb分库时,恢复neutron服务的gaussdb:

      restore execute --file gaussdb_neutron-2015-10-17-14-26-11-87-all.tar.gz --path /home/fsp --service gaussdb_neutron

    说明:

    恢复gaussdb时,如果是使用的keystone鉴权,查询命令会短暂不可用,是正常现象。待gaussdb恢复成功后,查询进度命令恢复正常。

  15. 恢复gaussdb完成后,执行以下命令删除步骤 12上传的备份包。

    rm /opt/backup/备份包名称

mongodb数据库故障

数据库状态异常恢复

建议首先参考开启mongodb异常后的自动恢复章节开启自动恢复功能,开启前请仔细阅读该章节首部的操作场景和前提条件部分。

问题现象

在FusionSphere OpenStack中检查到mongodb服务异常。

具体现象如下:

mongodb服务显示fault(如何查看mongodb服务状态请参照查询mongodb的服务状态)。

可能原因

由于主机异常下电或其他系统故障,导致mongodb异常退出或数据不一致错误;或者由于网络、存储的中断造成的数据不一致问题。

处理思路

由上述原因引起mongodb数据不一致或数据损坏,进而导致mongodb服务故障,当mongodb按集群模式部署时,可以通过清除ERROR节点数据,重新启动mongodb,由其自动同步数据,完成恢复。

处理方法

查询mongodb的服务状态

  1. 登录到mongodb故障的主机,参考登录数据库所在节点
  2. 执行如下命令查看mongodb的状态。

    cps template-instance-list --service mongodb mongodb

    回显如下类似信息:

通过集群自复制功能修复
说明:
  • 使用该方式要求OpenStack部署为三个控制节点,且为集群模式。
  • 在服务恢复过程中,由于自复制会对正常节点造成I/O压力,加重系统I/O负担。
  1. 登录mongodb故障的主机。
  2. 导入环境变量,请参见导入环境变量
  3. 判断故障状态。
    • 状态为fault的mongodb节点数量小于3个,执行6
    • 3个mongodb状态全为fault,且仅需保留告警数据,执行7
    • 3个mongodb节点状态全为fault,且需要保留监控数据和告警数据,请联系技术支持工程师协助解决
  4. 登录mongodb故障的主机,依次执行如下操作。
    1. 执行如下命令,选择恢复mongodb操作。

      python /etc/mongodb/mongodb_recovery.py

      回显如下类似信息:

      please choose the following action which you want to do: 
      (1)query mongodb inner status 
      (2)mongodb recovery 
      (q)quit mongo recovery tool 
       please choose:[1|2|q]     
    2. 输入“2”,等待mongodb恢复完成。
    3. 恢复完成后,通过步骤8进行验证。
  5. 登录主机,依次执行如下操作。
    1. 执行如下命令,停止集群mongodb。

      cps host-template-instance-operate --action stop --service mongodb mongodb

    2. 在每个mongodb主机中执行如下命令,删除数据。

      rm -r /var/ceilometer/*

    3. 在每个mongodb主机中执行如下命令,删除mongodb配置信息记录文件。

      rm /etc/mongodb/run_info.json

      删除此文件时,如果系统提示“/etc/mongodb/run_info.json”不存在,则继续执行后续步骤。

    4. 执行如下命令,启动mongodb集群。

      cps host-template-instance-operate --action start --service mongodb mongodb

    5. 执行如下命令,查看集群状态。

      cps template-instance-list --service mongodb mongodb

      等待集群配置完成active状态后,继续下一步。

    6. 执行如下命令,恢复告警。

      backup package-get --service mongodb

      restore execute --service mongodb --file mongodb-2016-01-20-04-53-12-1-single.tar.gz

      restore progress-get --service mongodb

      其中mongodb-2016-01-20-04-53-12-1-single.tar.gz是告警备份数据的示例,实际操作时,需要在mongodb所在主机的/opt/backup/backupfile/mongodb目录下获取最新的告警备份数据。

  6. 验证mongodb是否恢复成功。
    说明:
    • mongodb的正常状态包括:PRIMARY、SECONDARY、SECONDARY:noprimary以及ARBITER。
    • 非正常状态包括:UNKNOWN、DOWN、REMOVED、ROLLBACK、FATAL以及其他状态。
    1. 执行如下命令,查看mongodb内部状态。

      python /etc/mongodb/mongodb_recovery.py

      回显如下类似信息:
       please choose the following action which you want to do: 
      (1)query mongodb inner status 
      (2)mongodb recovery 
      (q)quit mongo recovery tool 
       please choose:[1|2|q]     
    2. 输入“1”。

      回显如下类似信息:

      如果每个节点的状态都是正常状态,且optimeDate时间一致,则表示恢复工作完成。

      • 5中的故障状态为3个mongodb全为fault,这种状态下mongodb恢复后,若已对接Service OM,需要重新对接Service OM告警配置,保证告警能够正常外发给Service OM,具体操作请参考《FusionCloud 6.3.1 运维指南》的“告警对接”章节进行配置。
      • 故障期间告警差异的部分会在告警对接后半小时内自动更新为最新状态。

      如果mongodb未恢复成功,请联系技术支持工程师协助解决

mongodb服务异常导致虚拟机无法HA
现象描述

在满足以下条件的前提下,虚拟机无法正常运行,需要恢复。

  • mongodb数据分区使用远端存储
  • mongodb服务不可用
  • HA功能不可用
  • nova本地重启虚拟机失败
可能原因
  • mongodb服务异常,无法读写数据。
  • nova在本地重启虚拟机时存储设备还未就绪。
处理思路
  1. 恢复mongodb。
  2. 手动恢复虚拟机。
处理步骤

恢复mongodb

  1. 确保存储设备及FusionSphere OpenStack主机系统正常。
  2. 使用“PuTTY”,通过External OM平面IP地址登录FusionSphere OpenStack的第一台主机。

    帐号:fsp,默认密码:Huawei@CLOUD8
    说明:
    • 系统同时支持密码和公私钥对身份进行认证,如果使用公私钥对进行登录认证请参见使用PuTTY通过公私钥对认证方式登录节点
    • External OM平面IP地址请参考软件安装阶段FusionCloud Deploy导出的参数信息汇总文件《xxx_export_all.xlsm》的“FCD生成的LLD”页签搜索对应参数名称获取。不同场景参数名称如下所示:
      • Region Type I场景级联层:Cascading-ExternalOM-Reverse-Proxy,被级联层:Cascaded-ExternalOM-Reverse-Proxy。
      • Region Type II和Type III场景:ExternalOM-Reverse-Proxy。

  3. 执行以下命令切换到“root”用户。

    su - root

    “root”用户的默认密码为“Huawei@CLOUD8!”。

  4. 执行TMOUT=0防止会话超时退出。
  5. 导入环境变量
  6. 参考数据库状态异常恢复中“恢复方法”,恢复mongodb。
  7. 恢复完成后,在已登录的主机中,执行以下命令,查看mongodb状态是否恢复成功。

    cps template-instance-list --service mongodb mongodb

    如果故障节点的mongodb服务状态变成“active”,则说明恢复成功。

    • 是,mongodb服务可用,HA会正常拉起虚拟机,任务结束。
    • 否,mongodb无法恢复,执行步骤 8

手动恢复虚拟机

  1. 在已登录的主机中,执行以下命令,停止待恢复的虚拟机。

    nova stop 4d6ac51c-81d1-4f6c-8063-cc949b57b255

    4d6ac51c-81d1-4f6c-8063-cc949b57b255为需要恢复的虚拟机ID。请根据实际环境配置。

  2. 执行以下命令,启动虚拟机。

    nova start 4d6ac51c-81d1-4f6c-8063-cc949b57b255

  3. 重复执行步骤 8步骤 9,恢复所有待恢复的虚拟机。
  4. 查看所有待恢复虚拟机业务是否正常。

    • 是,恢复成功,任务结束。
    • 否,请联系技术支持工程师协助解决

翻译
下载文档
更新时间:2019-08-19

文档编号:EDOC1100043088

浏览量:18381

下载量:439

平均得分:
本文档适用于这些产品
相关版本
相关文档
Share
上一页 下一页