DBGateway 常见问题排查手册。

DBGateway 概述及基本操作

  1. DBGateway 目录结构
    dbgateway
    |-- bin
    |   |-- dbgateway
    |   \-- dbgateway-manager
    |-- conf
    |   |-- dbgateway.conf
    |   \-- server.crt
    \-- log
        |-- dbgateway.err
        |-- dbgateway.log
        \-- dbgateway_manager.log    
    说明
    • bin 目录下包含dbgateway(主程序)及dbgateway-manager(DBGateway管理脚本,用于维护dbgateway)。
    • conf 目录下包含dbgateway.conf(DBGateway配置文件)及 server.crt(通信公钥)。
    • log 目录下包含 dbgateway.err(dbgateway错误输出)、dbgateway.log(DBGateway的日志)、dbgateway_manager.log(DBGateway管理脚本日志)。
  2. 查看 DBGateway 日志

    DBGateway 日志文件全路径为:/opt/dbgateway/log/dbgateway.log

    日志文件以文本格式存储,因此可以用 vim、tail、cat、less 等常规工具查看日志。

    当 DAS 产品客服或技术人员需要您提供 DBGateway 日志辅助排查问题时,可以使用以下命令查看最近200条日志,并将这些日志复制给客服。

    tail -n 200 /opt/dbgateway/log/dbgateway.log
  3. 判断 DBGateway 进程是否存活
    1. 在 DAS 产品页面,DBGateway管理子界面上当前状态显示为“正常”即表示 DBGateway 进程存活。
    2. 如DBGateway管理子界面上当前状态非“正常”,按照以下步骤进一步排查。在DBGateway所在服务器上执行以下命令判断。
      /opt/dbgateway/bin/dbgateway-manager -d status
      说明 该小节只用于判断 DBGateway 进程是否存活,无法判断其是否正常工作。

      进程存活输出样例:

      DBGateway is running.

      进程不存在输出样例:

      DBGateway is dead.
  4. 重启 DBGateway
    说明 请先按照《(3)判断 DBGateway 进程是否存活》小节判断DBGateway进程状态进而决定重启方式。
    • DBGateway 进程存在
      1. 在 DAS 产品页面DBGateway管理功能中,选择对应的DBGateway,管理 > 重启

      2. 手工直接在DBGateway所在的服务器上执行以下命令:
         /opt/dbgateway/bin/dbgateway-manager -d restart
    • DBGateway 进程不存在

      此时无法在页面上操作,仅支持手工重启。重启方式:在DBGateway所在服务器上执行以下命令:

       /opt/dbgateway/bin/dbgateway-manager -d restart
  5. 升级 DBGateway

    在 DAS 产品页面DBGateway管理功能中选择对应的DBGateway,点击管理 > 升级

  6. 停止 DBGateway
    • 在 DAS 产品页面DBGateway管理功能中,选择对应的DBGateway,点击管理 > 停止

    • 手工直接在DBGateway所在的服务器上执行以下命令。
       /opt/dbgateway/bin/dbgateway-manager -d stop
  7. 删除 DBGateway
    说明
    • 删除 DBGateway 后,与之相关的数据库实例的 DAS 所有功能将无法使用。
    • 状态为“正常”的DBGateway无法直接删除,请先按照《(5)停止 DBGateway》停止该DBGateway后继续执行删除
    1. 在 DAS 产品页面DBGateway管理功能中,选择对应的DBGateway,点击管理 > 删除
    2. (可选)在DBGateway所在物理机上删除DBGateway安装目录。
      rm -rf /opt/dbgateway

DBGateway 部署问题排查

在 DAS 页面可以获取DBGateway部署命令,下面将以如下部署命令举例,其中vpcID及token仅用于举例,不可使用:

  • 无法下载DBGateway部署脚本
    请按照以下可能的原因逐一排查:
    • 报错提示没有wget命令,如果出现以下提示,说明该系统中缺少wget命令。
      wget command not found

      wget 是Linux常用的下载命令,如遇到缺少wget可以使用以下方式安装:

      sudo apt-get install wget

      yum -y install wget
    • 当前服务器的网络环境是否能连通到阿里云OSS

      取OSS域名(在本例中,OSS域名为hdm-dbgateway-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com,实际以获取的部署命令为准)并尝试ping。

      ping hdm-dbgateway-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com
      • 如遇到域名无法解析,请检查您的DNS解析服务器设置是否正确,且域名解析正常工作。
        ping: unknown host hdm-dbgateway-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com  
        #提示 unknown host 说明无法解析该域名
      • 如 ping 域名后长时间没有任何输出及返回,说明网络无法连通,请检查:
        • 服务器的网络配置是否正常。
        • 服务器所在网络为VPC网络或经典网络,并在页面上正确选择。
        • 页面上是否选择了正确的VPC Region(北京、上海、深圳等)。
  • 测试与 HDM-Master 是否连通

    在本例中,HDM-Master 域名为 master-hdm-cn-hangzhou.aliyuncs.com 举例,实际排查中以获取的部署命令为准,请按照以下步骤排查:

    在 DBGateway 所在服务器执行命令:

    telnet master-hdm-cn-hangzhou.aliyuncs.com 80
    • 如果返回Name or service not known,说明域名无法解析,请检查您的DNS解析服务器设置是否正确,且域名解析正常工作。
    • 如果返回 Trying IP地址:Trying xxx.xxx.xxx.xxx…,则表示网络不通,请检查:
      • 服务器的网络配置是否正常。
      • 服务器所在网络为VPC网络或经典网络,并在页面上正确选择。
      • 页面上是否选择了正确的VPC Region(北京、上海、深圳等)。
    • 如果返回如下内容:
        Connected to master-hdm-cn-hangzhou.aliyuncs.com.  Escape character is '^]'.

      表示连通 HDM-Master 正常。如果 DBGateway 仍然无法启动,需要参考《查看 DBGateway 日志》进一步排查。

DBGateway 运行异常排查

  • 验证失败或权限不足

    请按照以下可能的原因逐一排查:

    • 确保授权的账号及密码具有以下权限:
      • MySQL
        SHOW DATABASES, PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.*  
        SELECT ON mysql.*  
        SELECT ON performance_schema.*
      • MongoDB
        admin数据库,root角色
      • Redis 没有账号概念,因此仅需要保证密码正确

        Redis 修改密码时修改其配置文件中requirepass选项并重启Redis服务。请参考Redis configuration

    • 确保授权的账号及密码正确,建议在DBGateway所在服务器上以授权账号及密码远程连接数据库实例排查。
    • 重启 DBGateway 并观察实例授权是否成功。
    • 推荐升级到 DBGateway 最新版。
  • 无法连接

    无法连接是由于DBGateway无法连接数据库实例导致的,请按照以下可能的原因逐一排查:

    • 实例正常运行服务

      数据库实例(MySQL、MongoDB、Redis等)如果未正常运行,请检查这些实例的进程是否存在。

    • DBGateway 所在服务器与数据库实例(MySQL、MongoDB、Redis等)网络不通

      请执行以下命令确认:

      telnet 数据库实例IP或域名 数据库实例服务端口号  
      如: telnet 192.168.100.1 3306

      如出现以下提示,表示网络连接正常,需要进一步参考《查看 DBGateway 日志》继续排查:

      Connected to xxxxxx.
      Escape character is '^]'.

      如没有出现,则说明为网络连通性问题,通常由服务器之间网络隔离、路由设置、防火墙或数据库实例拒绝非本地连接导致的。

  • 监控异常
    • 请参考《判断 DBGateway 进程是否存活》小节检查 DBGateway 运行状态。
    • 尝试重启 DBGateway 并观察监控是否恢复。
    • 推荐升级到 DBGateway 最新版。
  • 长时间已授权,验证中

    一般情况下,正确授权之后1~2分钟之内,实例接入状态会变为“连接正常”。如长时间(超过2分钟)仍然显示已授权,验证中

    • 请参考《判断 DBGateway 进程是否存活》小节检查 DBGateway 运行状态。
    • 尝试重启 DBGateway 并观察实例授权是否成功。
    • 推荐升级到 DBGateway 最新版。