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

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

提示

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

升级

FusionCloud 6.3.1 故障处理 06

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

数据库故障

介绍MySQL数据库在主备环境下常见异常场景和异常恢复方法。

常见异常场景

数据库异常主要包括如下几种异常场景:

  • 数据库主节点实例正常,数据库备节点实例复制状态异常。
  • 数据库主备节点上的实例均异常,主节点实例的数据库物理文件丢失或者损坏。
  • 数据库主节点实例正常,数据库备节点实例异常,备节点实例的数据库物理文件丢失或损坏。

异常恢复前操作

注意事项

异常恢复前,如果已经定位数据库出现异常的原因,无需再分析,请跳过本节。如果需要分析问题原因,请执行以下步骤收集必要的信息。

操作步骤

本节以test101-0-999实例为例说明。

  1. 使用PuTTY工具,通过异常数据库实例所在节点的IP地址,登录异常数据库实例所在节点。

    说明:

    查看异常节点的IP地址:登录ManageOne部署面,进入“部署 > 数据库管理 > 关系数据库”进行查看。

    默认帐户:sopuser,默认密码:D4I$awOD7k。

  2. 执行如下命令切换到root用户。

    su - root

    默认密码:Changeme_123。

  3. 执行如下命令备份异常实例的日志与配置信息。

    cp /opt/mysql/data/test101-0-999/mysql.err /opt/mysql/data/test101-0-999/mysql.err.bak

    cp /opt/mysql/data/test101-0-999/auto.cnf /opt/mysql/data/test101-0-999/auto.cnf.bak

    cp /opt/mysql/data/test101-0-999/my.cnf /opt/mysql/data/test101-0-999/my.cnf.bak

  4. 执行如下命令获取该实例的进程号。

    ps -ef | grep test101-0-999

    回显如下:

    root      18712   2691  0 18:26 pts/4    00:00:00 grep test101-0-999
    dbuser   107956      1  0 Jan05 ?        00:00:00 /bin/sh /opt/mysql/bin/mysqld_safe --defaults-file=/opt/mysql/data/test101-0-999/my.cnf --safe-user-create --skip-symbolic-links
    dbuser   109227 107956  0 Jan05 ?        00:04:58 /opt/mysql/bin/mysqld --defaults-file=/opt/mysql/data/test101-0-999/my.cnf --basedir=/opt/mysql --datadir=/opt/mysql/data/test101-0-999 --plugin-dir=/opt/mysql/lib/plugin --safe-user-create --skip-symbolic-links --log-error=/opt/mysql/data/test101-0-999/mysql.err --pid-file=/opt/mysql/data/test101-0-999/test101-0-999.pid --socket=/opt/mysql/data/test101-0-999/test101-0-999.sock --port=32081

  5. 执行如下命令,将实例的启动时间保存到指定文件中。

    ps -p 107956 -o lstart > test101-0-999_mysqld_safe_time

    ps -p 109227 -o lstart > test101-0-999_mysqld_time

    说明:
    • 107956为步骤 4中mysqld_safe实例的进程号。
    • 109227为步骤 4中mysqld实例的进程号。

  6. 执行如下命令,退出root用户。

    exit

数据库备实例异常

异常现象
现象说明
  • 数据库主实例正常,数据库备实例复制状态异常。
  • 数据库主实例正常,数据库备实例处于异常状态,数据库备实例的物理文件丢失或者损坏。
异常确认

数据库主实例正常,数据库备实例复制状态异常

  1. 使用浏览器登录ManageOne部署面。

    登录地址:https://部署面浮动IP地址:31943例如:https://192.168.0.1:31943。

    默认帐号:admin,默认密码:Huawei12#$。

  2. 在主菜单中选择“部署 > 数据库管理 > 关系数据库”。
  3. 查看“复制状态”列,若显示为,表示数据库备节点例复制状态异常。

数据库主实例正常,数据库备实例处于异常状态,数据库备实例的物理文件丢失或者损坏

  1. 使用PuTTY,通过主数据库实例所在节点的IP地址,登录主数据库实例所在节点。

    说明:

    查看主数据库节点IP地址:登录ManageOne部署面,进入“部署 > 数据库管理 > 关系数据库”进行查看。

    默认帐户:sopuser,默认密码:D4I$awOD7k。

  2. 执行如下命令,切换至dbuser用户。

    su - dbuser

    默认密码:Y7xohbheY!。

  3. 执行如下命令,连接数据库主实例。

    /opt/mysql/bin/mysql -h数据库主节点的IP地址 -udbuser -p -P数据库主节点的端口号

    Enter password:     
    说明:

    在操作过程中,系统要求输入的password默认为Admin@123。

    查看数据库主节点的端口号:登录ManageOne部署面,进入“部署 > 数据库管理 > 关系数据库”进行查看。

  4. 执行如下命令查询主数据库实例状态。

    show slave status\G;

    若输出如下结果,则主数据库实例正常。

    Empty set (0.03 sec)

  5. 使用PuTTY,通过备数据库实例所在节点的IP地址,登录备数据库实例所在节点。

    说明:

    查看备数据库节点IP地址:登录ManageOne部署面,进入“部署 > 数据库管理 > 关系数据库”进行查看。

    默认帐户:sopuser,默认密码:D4I$awOD7k。

  6. 执行以下命令,切换至dbuser用户。

    su - dbuser

    默认密码:Y7xohbheY!。

  7. 执行如下命令,连接数据库备实例。

    /opt/mysql/bin/mysql -h数据库节点的IP地址 -udbuser -p -P数据库备节点的端口号
    Enter password:   
    说明:

    在操作过程中,系统要求输入的password默认为Admin@123。

    查看数据库备节点的端口号:登录ManageOne部署面,进入“部署 > 数据库管理 > 关系数据库”进行查看。

    如果回显信息包括如下文本,说明实例Down:

    ERROR 2003 (HY000): Can't connect to MySQL server

  8. 执行如下命令,退出mysql。

    exit;

  9. 执行如下命令,重新启动实例。

    sudo su - ossadm

    [sudo]password for root:
    说明:

    默认密码为Changeme_123。

    cd /opt/oss/manager/apps/DeployAgent-version/container/mysql/bin

    ./start_mysql.sh /opt/mysql/data/实例编号

    • 如果回显信息如下,说明备数据库实例正常:
    Start <实例编号> ...
    Start <实例编号> ...done
    • 如果回显信息为其他,说明备数据库实例损坏,需要修复。
    说明:

    {version}为DeployAgent版本号。

    查询方式:

    1. 使用浏览器登录ManageOne部署面。

      登录地址:https://部署面浮动IP地址:31943例如:https://192.168.0.1:31943。

      默认帐号:admin,默认密码:Huawei12#$。

    2. 选择“部署 > 微服务部署 > 部署包”。

      在“最新版本”列查看DeployAgent的版本号。

暂停故障倒换功能
背景信息

为了避免在异常恢复过程中发生数据库倒换,需要暂停故障倒换功能。暂停故障倒换功能期间,数据库主备节点的实例不会发生倒换。

操作步骤

在本区域DBHASwitchService服务所在节点执行以下操作。如果本区域存在主备DBHASwitchService节点,以下操作在任意一个DBHASwitchService节点执行成功即可。

  1. 使用PuTTY工具,通过DBHASwitchService服务所在节点的IP地址,登录DBHASwitchService服务所在节点。

    说明:

    DBHASwitchService服务所在节点的查询方式:

    1. 使用浏览器登录ManageOne部署面。

      登录地址:https://部署面浮动IP地址:31943例如:https://192.168.0.1:31943。

      默认帐号:admin,默认密码:Huawei12#$。

    2. 选择“部署 > 环境列表 ”,在界面右侧搜索框中输入DBHASwitchService,单击进行搜索。
    3. 单击搜索到的服务,在“服务器列表”中查看服务所节点。

    默认帐户:sopuser,默认密码:D4I$awOD7k。

  2. 执行如下命令,切换至ossadm用户。

    su - ossadm

    默认密码为:ZJE%JLq5qx。

  3. 执行如下命令,进入倒换工具安装目录。

    cd /opt/oss/manager/apps/DBHASwitchService/bin

  4. 执行如下命令,暂停异常数据库实例主备节点的故障倒换功能。

    ./switchtool.sh -cmd set-ignore-nodes -nodes 异常数据库实例主备节点的ID

    说明:

    查看主备节点的ID:登录ManageOne部署面,进入“部署资源 > 服务器”进行查看。

    如:./switchtool.sh -cmd set-ignore-nodes -nodes 4,5

    输出如下表示执行成功:

    Successful

处理数据库备节点异常
操作步骤

重置master

  1. 使用PuTTY,通过主数据库实例所在节点的IP地址,登录主数据库实例所在节点。

    说明:

    查看主数据库节点IP地址:登录ManageOne部署面,进入“部署 > 数据库管理 > 关系数据库”进行查看。

    默认帐户:sopuser,默认密码:D4I$awOD7k。

  2. 执行如下命令,切换至dbuser用户。

    su - dbuser

    默认密码:Y7xohbheY!。

  3. 执行如下命令,连接数据库主实例。

    /opt/mysql/bin/mysql -udbuser -p -P32080 -h10.145.93.121
    Enter password:
    说明:
    • -u:数据库实例用户。
    • -P:异常数据库主实例端口。
    • -h:异常数据库主实例ip。
    • 32080和10.145.93.121分别为数据库主节点的端口号和IP地址,根据实际值替换。

    在操作过程中,系统要求输入的password默认为Admin@123。

  4. 执行如下命令,重置master。

    reset master;

    显示如下表示执行成功:

    Query OK, 0 rows affected (0.00 sec)

  1. 执行如下命令,退出mysql。

    exit;

  2. 执行如下命令,查看备份空间大小。

    df -H

    系统显示如下信息:
    Filesystem         Size  Used Avail Use% Mounted on 
    /dev/xvda3          18G   13G  4.7G  73% / 
    devtmpfs           34G  144k   34G   1% /dev 
    tmpfs              34G     0   34G   0% /dev/shm 
    /dev/xvda1         1.1G   42M  957M   5% /boot 
    …… 
    /dev/mapper/oss_vg-opt_vol      53G   27G   24G  54% /opt 
    ……

    本地/远程备份目录所在分区的剩余空间:“Mounted on”为“/opt”所在列的“Avail”值

  3. 执行如下命令,查看备份文件大小。

    ls -lh /opt/mysql/data/实例编号

    系统显示如下信息:

    total 6.1G
    …… 
    -rw-r-----. 1 dbuser dbgroup 250M Jun 27 18:46 ib_logfile0
    -rw-r-----. 1 dbuser dbgroup 250M Jun 15 19:14 ib_logfile1
    -rw-r-----. 1 dbuser dbgroup 250M Jun 27 18:46 ib_logfile2
    …… 
    -rw-------. 1 dbuser dbgroup 802M Jun 12 17:20 mysql-bin.000001
    -rw-------. 1 dbuser dbgroup 802M Jun 13 12:07 mysql-bin.000002
    -rw-------. 1 dbuser dbgroup 344M Jun 13 17:36 mysql-bin.000003
    -rw-------. 1 dbuser dbgroup  18M Jun 14 14:22 mysql-bin.000004
    -rw-------. 1 dbuser dbgroup 521K Jun 14 14:38 mysql-bin.000005
    -rw-------. 1 dbuser dbgroup 357M Jun 19 14:46 mysql-bin.000006 
    -rw-------. 1 dbuser dbgroup  114 Jun 14 14:42 mysql_bin.index
    ……
    -rw-------. 1 dbuser dbgroup  198 Jun 14 14:42 relay_bin.000001
    -rw-------. 1 dbuser dbgroup 531M Jun 21 11:25 relay_bin.000002
    -rw-------. 1 dbuser dbgroup  285 Jun 21 11:25 relay_bin.000003
    -rw-------. 1 dbuser dbgroup  22K Jun 21 11:26 relay_bin.000004
    -rw-------. 1 dbuser dbgroup  285 Jun 21 11:26 relay_bin.000005
    -rw-------. 1 dbuser dbgroup  50K Jun 21 11:29 relay_bin.000006
    -rw-------. 1 dbuser dbgroup  285 Jun 21 11:29 relay_bin.000007
    -rw-------. 1 dbuser dbgroup 558K Jun 21 11:52 relay_bin.000008
    -rw-------. 1 dbuser dbgroup  285 Jun 21 11:52 relay_bin.000009
    -rw-------. 1 dbuser dbgroup 252M Jun 23 01:00 relay_bin.000010
    -rw-------. 1 dbuser dbgroup 1.5K Jun 27 01:00 relay_bin.index
    …… 

    计算备份文件占用的空间大小方法:total值减后缀名为“.index”的所文件大小总和。

    说明:
    • 当前屏显信息为示例,请以实际环境为准。
    • ib_logfile:日志文件;mysql-bin:数据库文件;relay_bin:回收站文件。
    • total为总的备份空间大小。

  4. 判断步骤 6备份空间的剩余空间大小与步骤 7备份文件占用的空间大小。

    说明:

    具体的文件目录和文件名根据用户实际情况进行替换。

  5. 执行如下命令,切换至ossadm用户。

    sudo su - ossadm

    [sudo]password for root:

  6. 执行如下命令进行物理备份。

    cd /opt/oss/manager/apps/DBAgent/bin

    /opt/oss/manager/bin/engr_profile.sh

    ./dbsvc_tool -cmd backup-db-instance -instid tenantdbsvr-4-38@5-38 -method physical
    说明:
    • 当数据库备实例状态异常,或者复制关系异常时,备份的是主实例。
    • 在当前备份场景下,本地备份默认备份在数据库主实例的/opt/pub/backup_local目录下。
    • tenantdbsvr-4-38@5-38:实例名,请根据实际情况替换为待备份的实例名。

    显示如下:

    Check database status, and try login. Login database ossdbsvr-0-999 success. Check database status finish. CheckDB success, instid:tenantdbsvr-4-38@5-38, method:physical Begin backup database. Backup success, instid:tenantdbsvr-4-38@5-38, method:physical Compress backup file to tenantdbsvr-4-38@5-38_abatest-0-999_20170303105515_manual_full_day_physical.tar.gz... Compress success, instid:tenantdbsvr-4-38@5-38, method:physical Sign backup files... Signing file for instanceUnit sign file is tenantdbsvr-4-38@5-38_tenantdbsvr-4-38_20170303105515_manual_full_day_physical.tar.gzsigning file error code is 0 . SignFiles success, instid:tenantdbsvr-4-38@5-38, method:physical SaveBackupFiles success, instid:tenantdbsvr-4-38@5-38, method:physical Count backup files number. Count backup files number. CountBackup success, instid:tenantdbsvr-4-38@5-38, method:physical Check backup file permission. CheckPermission success, instid:tenantdbsvr-4-38@5-38, method:physical CleanTempFiles success, instid:tenantdbsvr-4-38@5-38, method:physical

复制备份文件到数据库备节点

  1. 使用PuTTY,通过备数据库实例所在节点的IP地址,登录备数据库实例所在节点。

    说明:

    查看备数据库节点IP地址:登录ManageOne部署面,进入“部署 > 数据库管理 > 关系数据库”进行查看。

    默认帐户:sopuser,默认密码:D4I$awOD7k。

  2. 执行以下命令,切换至dbuser用户。

    su - dbuser

    默认密码:Y7xohbheY!。

  3. 将主节点的备份文件及备份文件的签名文件复制到数据库备节点的“/opt/pub/backup_local”目录中。

    scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@<数据库主节点的IP地址>:/opt/pub/backup_local/tenantdbsvr-4-38@5-38_tenantdbsvr-4-38_20150709115845_manual_full_day_physical.tar.gz* /opt/pub/backup_local

    Warning: Permanently added '数据库主节点的IP地址' (ECDSA) to the list of known hosts.
    Authorized users only. All activities may be monitored and reported.
    root@数据库主节点的IP地址's password:
    tenantdbsvr-4-38@5-38_tenantdbsvr-4-38_20150709115845_manual_full_day_physical.tar.gz                         100%  104MB  34.6MB/s   00:03
    tenantdbsvr-4-38@5-38_tenantdbsvr-4-38_20150709115845_manual_full_day_physical.tar.gz.sign                    100%  695     0.7KB/s   00:00
    说明:
    • 默认密码为Changeme_123。
    • 如果环境进行了安全加固导致scp命令不可用,传输方式请根据实际情况自行处理。

  4. 执行如下命令,将该备份文件的权限修改为600,文件的属主和属组修改为dbuser:dbgroup。

    chown dbuser:dbgroup /opt/pub/backup_local/tenantdbsvr-4-38@5-38_tenantdbsvr-4-38_20150709115845_manual_full_day_physical.tar.gz*

    chmod 600 /opt/pub/backup_local/tenantdbsvr-4-38@5-38_tenantdbsvr-4-38_20150709115845_manual_full_day_physical.tar.gz*

重建数据库备实例

  1. 执行如下命令,进入opt/mysql/data目录。

    cd /opt/mysql/data/

  2. 在opt/mysql/data/目录下查看需要恢复数据库的实例名称,如果实例名称不存在,执行创建数据库实例操作,可以参考步骤 12~步骤 18
  3. 执行如下命令,切换至ossadm用户。

    sudo su - ossadm

    [sudo]password for root:

  4. 执行如下命令,进入dbsvc_tool工具的安装目录。

    cd /opt/oss/manager/apps/DBAgent/bin/

  5. 执行如下命令,重建数据库备实例。

    . /opt/oss/manager/bin/engr_profile.sh

    ./dbsvc_tool -cmd repair-db-instance -method rebuild -instid tenantdbsvr-4-38@5-38 -newmaster tenantdbsvr-4-38 -masterfile /opt/pub/backup_local/tenantdbsvr-4-38@5-38_tenantdbsvr-4-38_20150709115845_manual_full_day_physical.tar.gz

    说明:

    参数说明:

    • -method:数据库备份方法。
    • -instid:数据库实例名。
    • -newmaster:主实例ID。
    • -masterfile:主数据库数据备份文件。

    输出如下表示执行成功:

    [2016-11-17 17:13:16] [35502] 1 Uncompress /opt/mysql/data/tenantdbsvr-4-38_tenantdbsvr-4-38_20150709115845_manual_full_day_physical_full.tar.gz to Temp dir ...
    [2016-11-17 17:13:16] [35502] 2 Stopping local db instance ossdbsvr-104-0 ...
    [2016-11-17 17:13:16] [35502] 3 Rebuilding local db ...
    [2016-11-17 17:13:16] [35502] 4 Restarting local db ...
    [2016-11-17 17:13:16] [35502] 5 Repairing GTID ...
    [2016-11-17 17:13:16] [35502] 6 Setting up replication ... 
    [2016-11-17 17:13:16] [35502] Rebuld local db Successful!

  1. 执行以下命令,切换至dbuser用户。

    sudo su - dbuser

    [sudo]password for root:
    说明:

    默认密码为Changeme_123。

  2. 执行如下命令,删除复制过来的备份文件。

    rm /opt/pub/backup_local/tenantdbsvr-4-38@5-38_tenantdbsvr-4-38_20150709115845_manual_full_day_physical.tar.gz*

恢复故障倒换功能
背景信息

为了恢复主备数据库的正常倒换功能,需要取消暂停故障倒换功能,以保证数据库的高可靠性。

操作步骤
  1. 使用PuTTY工具,通过DBHASwitchService服务所在节点的IP地址,登录DBHASwitchService服务所在节点。

    说明:

    DBHASwitchService服务所在节点的查询方式:

    1. 使用浏览器登录ManageOne部署面。

      登录地址:https://部署面浮动IP地址:31943例如:https://192.168.0.1:31943。

      默认帐号:admin,默认密码:Huawei12#$。

    2. 选择“部署 > 环境列表 ”,在界面右侧搜索框中输入DBHASwitchService,单击进行搜索。
    3. 单击搜索到的服务,在“服务器列表”中查看服务所节点。

    默认帐户:sopuser,默认密码:D4I$awOD7k。

  2. 执行如下命令,切换至ossadm用户,进入倒换工具路径。

    su - ossadm

    默认密码为:ZJE%JLq5qx。

    cd /opt/oss/manager/apps/DBHASwitchService/bin

  3. 执行如下命令,恢复故障倒换功能。

    ./switchtool.sh -cmd del-ignore-nodes

    显示如下表示执行成功:

    Successful.

  4. 执行如下命令,清除最后故障倒换时间。

    ./switchtool.sh -cmd del-failover-time -instid tenantdbsvr-4-38@5-38

    显示如下表示执行成功:

    Successful.
    说明:

    tenantdbsvr-4-38@5-38:数据库实例名,请根据实际情况进行替换。

  5. 查看数据库主备实例复制状态。

    1. 确认主备实例复制状态恢复正常,具体操作请参见步骤 1
    2. 使用PuTTY,以ossadm用户登录ManageOne部署面主节点,主节点具体获取方法请参见判断部署系统节点的主备

      默认密码:D4I$awOD7k。

    3. 执行如下命令,切换至ossadm用户。

      su - ossadm

      默认密码:ZJE%JLq5qx。

    4. 执行如下命令查看复制状态。

      bash /opt/oss/manager/apps/DataMgmtService/bin/dbsvc_adm -cmd query-db-instance

      回显信息如下:

      DBInstanceId  Service Name NodeId IP Port DBType RoleRpl Status
      tenantdbsvr-4-38@5-38 tenantdbsvr-4-38 4 10.145.93.121 32080 mysql Master Normal
      tenantdbsvr-4-38@5-38 tenantdbsvr-5-38 5 10.145.93.122 32080 mysql Slave Normal
      说明:
      • 回显信息仅摘取部分字段,以实际执行命令回显为准。
      • 回显结果中,Rpl Status说明:
        • Normal,复制状态正常。
        • Abnormal,复制状态异常。

一键式重建数据库备实例
背景信息

一键式重建数据库备实例,通过使用命令操作,简化了处理数据库备节点异常

一键式重建备只支持错误码为210、211、212、213的复制状态异常。

前提条件

此重建方法仅适用于远程备份策略。

操作步骤
  1. 暂停故障倒换,请参考暂停故障倒换功能
  2. 执行如下命令,进入dbsvc_adm工具所在路径。

    cd /opt/oss/manager/apps/DataMgmtService/bin

  3. 使用PuTTY,通过主数据库实例所在节点的IP地址,登录主数据库实例所在节点。

    说明:

    查看主数据库节点IP地址:登录ManageOne部署面,进入“部署 > 数据库管理 > 关系数据库”进行查看。

    默认帐户:ossadm,默认密码:ZJE%JLq5qx。

  4. 执行如下命令,重建数据库备实例。

    ./dbsvc_adm -cmd repair-db-instance -instid tenantdbsvr-4-38@5-38 -slave tenantdbsvr-5-38 -name remotepolicy

    显示如下:

    Beginning repair db instance task.

  5. 登录ManageOne部署面,选择“部署 > 微服务部署 > 任务列表”,在“任务列表”页面中查看“手工修复”任务的执行结果。
  6. 修复成功后,恢复故障倒换功能,请参考恢复故障倒换功能

数据库主备实例均异常

异常现象
现象说明

数据库主备实例均处于异常状态,数据库主备实例的物理文件丢失或者损坏。

异常确认
  1. 使用PuTTY,通过主数据库实例所在节点的IP地址,登录主数据库实例所在节点。

    说明:

    查看主数据库节点IP地址:登录ManageOne部署面,进入“部署 > 数据库管理 > 关系数据库”进行查看。

    默认帐户:sopuser,默认密码:D4I$awOD7k。

  2. 执行如下命令,切换至dbuser用户。

    su - dbuser

    默认密码:Y7xohbheY!。

  3. 执行如下命令,连接主数据库实例。

    /opt/mysql/bin/mysql -h数据库主节点的IP地址 -udbuser -p -P数据库主节点的端口号
    Enter password:
    说明:
    • 默认密码为Admin@123。
    • 查看数据库主节点的端口号:登录ManageOne部署面,进入“部署 > 数据库管理 > 关系数据库”进行查看。

    如果回显信息包括如下文本,说明实例Down:

    ERROR 2003 (HY000): Can't connect to MySQL server on '主数据库节点IP'(111)

  4. 执行如下命令,重新启动实例。

    sudo su - ossadm

    [sudo]password for root:
    说明:

    默认密码为Changeme_123。

    cd /opt/oss/manager/apps/DeployAgent-version/container/mysql/bin

    ./start_mysql.sh /opt/mysql/data/实例编号

    • 如果回显信息如下,说明备数据库实例正常:
    Start <实例编号> ...
    Start <实例编号> ...done
    • 如果回显信息为其他,说明备数据库实例损坏,需要修复。
    说明:

    {version}为DeployAgent版本号。

    查询方式:

    1. 使用浏览器登录ManageOne部署面。

      登录地址:https://部署面浮动IP地址:31943例如:https://192.168.0.1:31943。

      默认帐号:admin,默认密码:Huawei12#$。

    2. 选择“部署 > 微服务部署 > 部署包”。

      在“最新版本”列查看DeployAgent的版本号。

  5. 在备实例所在节点上检查备实例是否损坏,具体操作请参考步骤 3步骤 4
暂停故障倒换功能

请参考本文档暂停故障倒换功能

处理数据库节点异常
处理数据库主节点异常

安装数据库软件

  1. 使用PuTTY,通过主数据库实例所在节点的IP地址,登录主数据库实例所在节点。

    说明:

    查看主数据库节点IP地址:登录ManageOne部署面,进入“部署 > 数据库管理 > 关系数据库”进行查看。

    默认帐户:sopuser,默认密码:D4I$awOD7k。

  2. 执行如下命令,切换至ossadm用户。

    su - ossadm

    默认密码:ZJE%JLq5qx。

  3. 执行如下命令,清除标志文件。

    rm -rf /opt/oss/manager/var/agent/*dcprocess.flag

  4. 执行如下命令,切换至dbuser用户。

    sudo su - dbuser

    默认密码:Changeme_123。

  5. 执行如下命令,查看残留的数据库进程。

    ps -ef|grep /opt/mysql/data/ocdbsvr-2-0|grep -v grep

    • 如果输出如下信息,需执行如下命令清除残留的数据库进程:

    kill -9 22563 16921

    MySQL服务进程和守护进程的进程ID为22563和16921。

    dbuser   16921     1  0 02:46 ?        00:00:00 /bin/sh /opt/mysql/bin/mysqld_safe --defaults-file=/opt/mysql/data/ocdbsvr-2-0/my.cnf --safe-user-create --skip-symbolic-links
    dbuser   22563 16921  1 02:46 ?        00:00:03 /opt/mysql/bin/mysqld --defaults-file=/opt/mysql/data/ocdbsvr-2-0/my.cnf --basedir=/opt/mysql --datadir=/opt/mysql/data/ocdbsvr-2-0--plugin-dir=/opt/mysql/lib/plugin --safe-user-create --skip-symbolic-links --log-error=/opt/mysql/data/ocdbsvr-2-0/mysql.err --pid-file=/opt/mysql/data/ocdbsvr-2-0/ocdbsvr-2-0.pid --socket=/opt/mysql/data/ocdbsvr-2-0/ocdbsvr-2-0.sock --port=32080
    • 如果无输出结果,请执行步骤 6
    说明:
    • 如果/opt/mysql目录丢失或者损坏:需要对节点的所有实例执行该操作。
    • 如果只是/opt/mysql/data下某个实例的目录丢失或者损坏:只需要清除损坏实例的残留进程。

  6. 执行如下命令,切换至root用户。

    sudo su - root

    默认密码:Changeme_123。

  7. 执行如下命令,进入到mysql目录,并查看目录结构。

    cd /opt/mysql

    ll

    dr-x------  2 dbuser dbgroup 4096 Jan  7 09:48 bin
    drwx------  9 dbuser dbgroup 4096 Dec 27 07:10 data
    dr-x------  3 dbuser dbgroup 4096 Dec 20 03:20 lib
    -r--------  1 dbuser dbgroup 2729 Dec 20 03:20 LICENSE.mysql
    dr-x------  4 dbuser dbgroup 4096 Oct 27 11:47 man
    -rw-------  1 dbuser dbgroup 2270 Dec 20 03:20 my_product.cnf
    -rw-------  1 dbuser dbgroup 2270 Jan  7 09:49 my_product_oc_sc.cnf
    drwxr-x---  2 dbuser dbgroup 4096 Oct 27 11:47 package
    -r--------  1 dbuser dbgroup 1449 Dec 20 03:20 README
    dr-x------  2 dbuser dbgroup 4096 Oct 27 11:47 scripts
    dr-x------ 28 dbuser dbgroup 4096 Oct 27 11:47 share
    dr-x------  2 dbuser dbgroup 4096 Oct 27 11:47 support-files
    drwx------  9 dbuser dbgroup 4096 Dec 27 07:11 trace
    • 如果查询到的目录结构和上面回显中的目录结构不一致,说明/opt/mysql目录有丢失或者损坏:执行如下命令,清除残留文件,然后转步骤 8

      mv /opt/mysql /opt/mysql_bck

    • 如果只是/opt/mysql/data下某个实例的目录丢失或者损坏:执行如下命令,清除实例残留文件,然后处理结束。

      mkdir -p /opt/mysql_bck/data

      chown -R dbuser:dbgroup /opt/mysql_bck/*

      mv /opt/mysql/data/ocdbsvr-2-0 /opt/mysql_bck/data/

  8. 执行如下命令,切换至ossadm用户。

    su - ossadm

    默认密码:ZJE%JLq5qx。

  9. 执行如下命令,切换至dbsvc_adm工具所在目录。

    cd /opt/oss/manager/apps/DataMgmtService/bin

  10. 查看MySQL的版本号。

    1. 使用浏览器登录ManageOne部署面。

      登录地址:https://部署面浮动IP地址:31943例如:https://192.168.0.1:31943。

      默认帐号:admin,默认密码:Huawei12#$。

    2. 选择“部署 > 微服务部署 > 部署包”。

      查看MySQL的版本号。以MySQL 5.6.28.0版本为例。

  11. 执行如下命令,安装数据库软件。

    ./dbsvc_adm -cmd install-pkg -type mysql -nodes 104 -pkgname MySQL-5.6.28.0

    说明:

    nodes后的参数为需要安装数据库的服务器的节点ID编号,请根据实际环境进行替换。

    显示如下表示执行成功:

    Successful.

重建数据目录

  1. 执行如下命令,切换至dbuser用户。

    sudo su - dbuser

    默认密码:Y7xohbheY!。

  2. 执行如下命令,创建数据目录。

    mkdir /opt/mysql/data/ocdbsvr-2-0

  3. 执行如下命令,将数据目录的权限修改为700。

    chmod 700 /opt/mysql/data/ocdbsvr-2-0

    若/opt/mysql/data/ocdbsvr-2-0下不存在auto.cnf、my.cnf和my_paramgroup.cnf,请执行步骤 16~步骤 18

  4. 执行如下命令,将数据目录下的所有文件的权限修改为600。

    chmod 600 /opt/mysql/data/ocdbsvr-2-0/*

生成配置文件

说明:

如果数据目录下不存在auto.cnf和my.cnf,需要按照本节操作步骤生成配置文件my.cnf,auto.cnf可自动生成。如果已经存在,可以跳过本部分内容。

  1. 执行如下命令,复制其他正常数据库实例的数据目录下的my.cnf文件到主数据库实例的数据目录下。

    cp /opt/mysql/data/数据库实例名/my.cnf  /opt/mysql/data/主数据库实例名

  2. 修改my.cnf文件中如下所示的配置项,替换为主数据库实例的信息。此处为举例说明,操作时请以实际情况为准。

    vi /opt/mysql/data/ocdbsvr-2-0/my.cnf
    [client]
    port = 32080
    socket = /opt/mysql/data/ocdbsvr-2-0/ocdbsvr-2-0.sock
    [mysqld]
    port = 32080
    socket = /opt/mysql/data/ocdbsvr-2-0/ocdbsvr-2-0.sock
    bind-address = 10.145.93.121
    log-error = /opt/mysql/data/ocdbsvr-2-0/mysql.err
    pid-file = /opt/mysql/data/ocdbsvr-2-0/ocdbsvr-2-0.pid
    datadir = /opt/mysql/data/ocdbsvr-2-0
    [mysqld]
    server-id = 1
    log-bin = /opt/mysql/data/ocdbsvr-2-0/mysql_bin
    log-bin-index = /opt/mysql/data/ocdbsvr-2-0/mysql_bin.index
    relay-log = /opt/mysql/data/ocdbsvr-2-0/relay_bin.index
    relay-log-index = /opt/mysql/data/ocdbsvr-2-0/relay_bin.index
    !include /opt/mysql/my_product.cnf
    说明:

    my.cnf修改点:

    • bind-address:修改为本实例节点的ip。
    • port:修改为本实例的端口。
    • 将文件里的实例名,修改为正确的实例名。
    • server-id:主节点的server-id可以配置成任意不同的正整数,当创建的是备节点数据库时,必须要和主节点的server-id不一样。

  3. 执行如下命令,将文件权限修改为600,文件的属主和属组修改为dbuser:dbgroup。

    chmod 600 /opt/mysql/data/ocdbsvr-2-0/my.cnf

    chown dbuser:dbgroup /opt/mysql/data/ocdbsvr-2-0/my.cnf

恢复数据库

  1. 请参考《FusionCloud 6.3.1 备份恢复指南》中的“恢复ManageOne数据”章节在数据库主节点上执行数据库主实例的物理恢复。

启动数据库

  1. 执行如下命令,切换至ossadm用户。

    sudo su - ossadm

    默认密码:ZJE%JLq5qx。

  2. 执行如下命令,导入环境变量。

    . /opt/oss/manager/bin/engr_profile.sh

  3. 执行如下命令,启动数据库实例。

    /opt/oss/manager/agent/container/mysql/bin/start_mysql.sh /opt/mysql/data/ocdbsvr-2-0

    显示如下表示启动成功:

    ============================ Starting data container processes...
    Starting mysql process ocdbsvr-2-0 ... success
    ============================ Starting data container processes is complete.

处理数据库备节点异常

安装数据库软件

  1. 请参见处理数据库节点异常中的步骤 1步骤 11,在备节点安装数据库软件。

重建数据目录

  1. 请参见处理数据库节点异常中的步骤 12步骤 15,在备节点重建数据目录。

生成配置文件

  1. 若my.cnf文件不存在,请参见处理数据库节点异常中的步骤 16步骤 18,生成备实例的配置文件。

重建数据库备实例

  1. 请参见处理数据库备节点异常中的步骤 15步骤 21,重建数据库备实例。
恢复故障倒换功能

数据库节点重启导致页面无法登录

现象描述

数据库虚拟机重启,数据库变只读,所有页面无法登录。

处理步骤
  1. 使用PuTTY,通过主数据库实例所在节点的IP地址,登录主数据库实例所在节点。

    说明:

    查看主数据库节点IP地址:登录ManageOne部署面,进入“部署 > 数据库管理 > 关系数据库”进行查看。

    默认帐户:sopuser,默认密码:D4I$awOD7k。

  2. 执行如下命令,切换至dbuser用户。

    su - dbuser

    默认密码:Y7xohbheY!。

  3. 执行如下命令,连接数据库主实例。

    /opt/mysql/bin/mysql -udbuser -p 密码 -P32080 -h主数据库节点的IP地址 -D keystone

    说明:
    • 密码为Admin@123。
    • 命令中的端口号指的是实例的端口号。

  4. 执行如下命令,手动设置“read_only”参数为OFF。

    set global read_only=OFF

    stop slave;

  5. 执行如下命令,查看“read_only”参数是否已设置为OFF。

    show variables like 'read_only';

数据库实例复制状态异常

现象描述

数据库主节点实例正常,数据库备节点实例复制状态异常。

可能原因
  • 服务器网络中断。
  • 备数据库复制错误。
  • 预期角色与实际角色不符。
  • 故障倒换后数据冲突(GTID)。
  • “binlog”被清理导致复制中断。
  • 人为对备数据库进行写操作,导致数据冲突。
  • 网络延迟。
  • 主数据库写操作压力大。
  • TPS(系统吞吐量)高或者有大事务超过了备数据库的复制处理能力。
  • 备数据库服务器硬件配置过低。
异常确认
  1. 使用浏览器登录ManageOne部署面。

    登录地址:https://部署面浮动IP地址:31943。例如:https://192.168.0.1:31943。

    默认帐号:admin,默认密码:Huawei12#$。

  2. 在主菜单中选择“部署 > 数据库管理 > 关系数据库”。
  3. 查看“复制状态”列,将鼠标放在上,查看错误码。错误码参考表8-1
处理步骤
说明:
  • 小于200的错误码为MySQL/Redis通用错误码。
  • 大于等于200的错误码为MySQL特有复制异常,其中21开头的错误码可以通过MySQL一键式重建备修复。
表8-1 复制状态错误表

错误码

中文说明

可能原因

处理建议

101

数据库实例所在节点DOWN,或实例DOWN。

  1. 对应数据库节点未启动。
  2. 对应数据库实例未启动,或数据库节点磁盘空间满。
  3. 主备节点网络通信异常。
  1. 结合实例编号的运行状态(UP/DOWN),查看该实例所在主备数据库节点是否都启动。
  2. 查看数据库实例是否启动,检查数据库启动日志。
  3. 检查主备节点通信是否正常。

102

数据库实例角色错误,出现双主。

人为对主备实例所在节点设置忽略节点。

请确认设置忽略节点原因后,再通过switchtool.sh取消。具体命令请参见《FusionCloud 6.3.1 命令参考》中的“switchtool.sh -cmd get-ignore-nodes”章节确认设置忽略节点原因后,再参见《FusionCloud 6.3.1 命令参考》中的“switchtool.sh -cmd del-ignore-nodes”章节进行取消忽略节点。

103

数据库实例角色错误,出现双备。

人为对主备实例所在节点设置忽略节点。

请确认设置忽略节点原因后,再通过switchtool.sh取消。具体命令请参见《FusionCloud 6.3.1 命令参考》中的“switchtool.sh -cmd get-ignore-nodes”章节确认设置忽略节点原因后,再参见《FusionCloud 6.3.1 命令参考》中的“switchtool.sh -cmd del-ignore-nodes”章节进行取消忽略节点。

104

数据库实例角色错误,角色与ZK上的不符合。

人为对主备实例所在节点设置忽略节点。

请确认设置忽略节点原因后,再通过switchtool.sh取消。具体命令请参见《FusionCloud 6.3.1 命令参考》中的“switchtool.sh -cmd get-ignore-nodes”章节确认设置忽略节点原因后,再参见《FusionCloud 6.3.1 命令参考》中的“switchtool.sh -cmd del-ignore-nodes”章节进行取消忽略节点。

Catchup

复制延迟。

  1. 短时间有大量数据库写操作导致复制处理延迟。
  2. Redis正在进行数据全同步。

观察一段时间,如果还未恢复或经常出现复制延迟,请联系DBA定位。

  • MySQL备实例的show slave status出现Seconds_Behind_Master>0。
  • Redis备实例的info命令出现aof_rewrite_in_progress/rdb_bgsave_in_progress/loading。

200

MySQL主备实例网络通信异常。

备实例和主实例的IO通信异常,对应MySQL的IO线程异常(Slave_IO_Running是NO)。

  1. 查看主数据库实例是否启动,主实例所在节点是否磁盘满,或者主备实例节点是否可以相互通信。
    如果是网络原因导致的故障,请联系管理员修复服务器网络;如果主实例未启动,请参考101状态码处理方式处理;如果主实例所在节点磁盘已满,请清理磁盘后,执行如下操作:
    1. 请参见停止数据库启动数据库停止后再启动故障实例的主实例。
    2. 观察一段时间,如果还未恢复,使用手工方式重建备数据库实例。
  2. 通过在备实例执行show slave status查看具体MySQL错误码,收集具体的错误信息。

201

MySQL备数据库实例GTID复制延迟。

  1. 短时间有大量数据库写操作导致复制处理延迟。
  2. GTID落后主数据库实例1000。
  1. 观察一段时间,如果还未恢复,或经常出现复制延迟,请联系技术支持工程师协助解决。
  2. 检查下复制状态是否有延迟,查看主备两边GTID差值,并联系技术支持工程师协助解决。

210

MySQL备数据库实例的SQL线程异常

  1. Slave_SQL_Running是NO。
  2. 人为用dbuser用户对备实例违规进行写操作。

211

MySQL主备模式:备数据库实例比主数据库实例的数据GTID多。

人为用dbuser用户对备实例违规进行写操作。

212

MySQL双主模式:GTID有数据冲突。

MySQL最近发生故障倒换。前有部分数据未复制到备实例,倒换后原来主实例有数据冲突。

具体方法请参见暂停故障倒换功能处理数据库备节点异常恢复故障倒换功能进行恢复。

213

MySQL主备模式:异常倒换数据冲突。

MySQL配置文件“my_product.cnf”中“sync_binlog”和“innodb_flush_log_at_trx_commit”的值没有配置为1。故障倒换前数据同步到备数据库,但是还没有在主数据库没有写入,导致数据冲突。

  1. 恢复方法如下:
  2. 建议在MySQL配置文件(my_product.cnf)都配置为1:

    sync_binlog=1;

    innodb_flush_log_at_trx_commit = 1

Redis数据库实例异常恢复

背景信息

Redis数据库异常主要包括如下异常场景:

  • Redis数据库主备节点上的实例均异常,主节点实例的数据库物理文件丢失或者损坏。
  • Redis数据库主节点实例正常,数据库备节点实例异常,备节点实例的数据库物理文件丢失或损坏。
  • Redis数据库中sysmgrrdb实例损坏,按部署系统双机故障恢复。
注意事项
  • 数据库节点服务器名称不可为localhost。
  • 数据库节点必须部署DBAgent服务。
  • 修复后要重新部署使用了Redis数据库的服务。
操作步骤
  1. 使用PuTTY,通过异常数据库实例所在节点的IP地址,登录异常数据库实例所在节点。

    说明:

    查看异常数据库节点IP地址:登录ManageOne部署面,进入“部署 > 数据库管理 > 关系数据库”进行查看。

    默认帐户:sopuser,默认密码:D4I$awOD7k。

  2. 执行如下命令切换到root用户。

    su - root

    默认密码:Changeme_123。

  3. 执行如下命令,确认文件目录或数据库实例文件是否存在。

    cd /optcd /opt/redis/data

    ll

    回显如下:

    -rw-------  1 root   root      7168 Oct 27 10:56 aquota.group
    -rw-------  1 root   root      7168 Oct 27 10:56 aquota.user
    drwxr-xr-x  4 root   root      4096 Oct 27 10:56 log
    drwx------  2 root   root     16384 Oct 27 10:55 lost+found
    drwxr-x--- 11 dbuser dbgroup   4096 Jan  2 08:44 mysql
    drwxr-x---  9 ossadm ossgroup  4096 Nov  2 11:15 oss
    drwxr-x---  6 root   ossgroup  4096 Oct 27 11:45 pub
    drwxr-x---  8 dbuser dbgroup   4096 Oct 27 11:50 redis
    drwxr-x---  3 ossadm ossgroup  4096 Oct 27 11:18 share
    dr-x------  3 root   root      4096 Oct 27 15:19 sudobin2
    1. 如果回显中没有redis文件,说明redis文件目录不存在。
    2. 如果回显中有redis文件,执行步骤 4

  4. 删除损坏的Redis实例。

    1. 使用PuTTY,以ossadm用户登录ManageOne部署面主节点,主节点的获取方法请参见判断部署系统节点的主备

      默认密码:ZJE%JLq5qx。

    2. 执行如下命令,删除损坏的Redis实例。

      cd /opt/oss/manager/apps/DataMgmtService/bin

      ./dbsvc_adm -cmd delete-db-instance -instid DBInstanceId

      说明:

      {DBInstanceId}为服务中损坏的Redis数据库实例ID。

    3. 执行ll命令,确认db-instance实例已经被删除。

  5. 执行如下命令,重新安装Redis软件。

    ./dbsvc_adm -cmd install-pkg -type redis -nodes NODE_ID -pkgname Redis-version

    说明:
    • NodeID为数据库节点ID,如3、4。NodeID可在服务器管理下的服务器标识看到。
    • NodeID只能是1个或2个,如果是1个,表示创建单机实例;如果是2个,使用逗号分割,表示创建主备实例,前面为主,后面为备。
    • version为Redis版本号。version在部署面上的“部署 > 数据库管理 > Redis”中查看。

  6. 配置数据库部署模板。

    如服务中配置了数据库,需要按照下面模板配置服务及数据库名。

    数据库部署模板参考如下:

    {
        "type": "redis",
        "storage": "1024",
            "memory": "1024",
            "dbList": {
                   "dpacomputingr01db": {
                "appName": "DPAComputingService",
                            "dataSize": 256
            },
                    "dpastreamingr02db": {
                "appName": "DPAStreamingService",
                            "dataSize": 256
            }
        }
    }

    “dpastreamingr01db”和“dpastreamingr02db”为数据库名称,以实际为准。

    “appName”为服务名称,以实际为准。

  7. 命名步骤 6的模板名,这里以dbdeploy_template_redis.json为例。

    此模板建议放在/opt/pub/software目录下,执行如下命令修改属组。

    chown ossadm: ossgroup dbdeploy_template_redis.json

  8. 执行如下命令,创建数据库实例。

    ./dbsvc_adm -cmd create-db-instance -nodes NodeID -tenant TenantName -stage StageName -file /opt/pub/software/dbdeploy_template_redis.json

    说明:
    • TenantName填写SOP、Product、manager中一个,以实际为准。
    • StageName为对应创建的Stage:" Alpha"," Beta"," Gamma"," Product"。

  9. 执行如下命令,查询数据库实例。

    ./dbsvc_adm -cmd query-db-instance|grep DBInstanceId

    例如:

    ./dbsvc_adm -cmd query-db-instance|grep dbmgr_rdb-0-999@1-999

    正常回显如下:

    dbmgr_rdb-0-999@1-999          primary  dbmgr_rdb-0-999          cn-global-1  manager  Product  10.90.73.120  32090  Up     redis   3.0.7.7  Slave   Normal      dbmgr_rdb-1-999          --         --            
    dbmgr_rdb-0-999@1-999          primary  dbmgr_rdb-1-999          cn-global-1  manager  Product  10.90.73.121  32090  Up     redis   3.0.7.7  Master  Normal      --                       --         --            

其他异常时需要收集的信息

如果本文档不能解决问题,请收集以下信息,并联系技术支持工程师协助解决。

说明:

本篇假设/var/log/oss为日志根路径。

  • 主部署节点如下目录的日志:/var/log/oss/manager/DataMgmtService/
  • 备部署节点如下目录的日志:/var/log/oss/manager/DataMgmtService/
  • 数据库主节点,收集如下日志:

    /var/log/oss/manager/DeployAgent/

    数据库安装目录/data/主数据库名/mysql.err

    以及mysql工具链接到数据库,执行如下命令的结果:

    show master status\G

    show slave status\G

  • 数据库备节点,收集如下日志:

    /var/log/oss/manager/DeployAgent/

    数据库安装目录/data/备数据库名/mysql.err

    以及mysql工具链接到数据库,执行如下命令的结果:

    show master status\G

    show slave status\G

  • 执行如下命令后,将返回结果截图。

    su - ossadm

    ./dbsvc_adm -cmd query-db-instance

  • 问题现象描述。
翻译
下载文档
更新时间:2019-08-19

文档编号:EDOC1100043088

浏览量:22616

下载量:454

平均得分:
本文档适用于这些产品

相关版本

相关文档

Share
上一页 下一页