FAQ


Q1:为什么grafana不显示统计数据?

dbus是一个包含多个模块流式计算系统,实时数据需要经过的链路为:canalextractordispatcherappender,任何一个环节出现问题都可能导致grafana中无法显示统计数据,针对以下三种场景给出问题的可能的原因以及解决办法;

Q2:为什么monitor页面无法显示?

此页面的地址需在web配置页面进行配置,Global-Config的Monitor内容为此页面的地址。将统计数据的grafana页面的url填入Monitor保存即可。

Q3:如何重新加载模块?

模块重新加载功能通过发送 control message 实现,请登录dbus web管理系统进入 control message 页面,如下图所示,其中 message type 定义了要加载的模块,data source 定义了要加载的数据源,ctrl_topic 表示消息写入的kafka topic,此项不需要修改,下方为消息预览和 Send Control Message 按钮,点击这个按钮即可完成控制消息的发送从而完成模块重新加载.

Q4:一键上线为何失败?

一键上线的作用是配置抽取新数据库数据的完整流程,因此影响一键上线的因素非常多,下面针对一键上线中步骤中需要注意的问题:

Q5:如何看监控和报警?

邮件

内容形式为:

Address: abc@126.com
Subject: DBus心跳监控报警
Contents: 尊敬的先生/女士您好,Dbus心跳监控发现数据线路:/DBus/HeartBeat/Monitor/db/schema/table发生异常,报警次数:1,超时次数:1,请及时处理.

DBus-Web

心跳日志

在心跳log中,搜索关键字:AddressSubjectContents,即可找到报警记录

Q6:如何授权dbus用户读取源端表?

dbus web会通过data source 中的 slave_urldbus 用户与源库建立jdbc连接,以便于通过dbus web配置以及使用dbus系统进行初始化数据拉取,因此为了能够读取到源库表的信息,需要给dbus用户赋带抽取表的查询权限,具体授权语句如下:

-- db.table 是需要同步的表名
grant select on db1.table to dbus;

Q7:初始化心跳后没有找到心跳进程?

如果发现初始化心跳后没有进程,请检查心跳所在服务器是否安装了unzip命令。初始化需要unzip命令支持。

Q8:启动Topology时报和storm.py相关异常?

启动topology时报如下异常:

Traceback (most recent call last):
  File "/app/dbus-allinone/apache-storm-1.0.1/bin/storm.py", line 766, in <module>
    main()
  File "/app/dbus-allinone/apache-storm-1.0.1/bin/storm.py", line 763, in main
    (COMMANDS.get(COMMAND, unknown_command))(*ARGS)
  File "/app/dbus-allinone/apache-storm-1.0.1/bin/storm.py", line 234, in jar
    transform_class = confvalue("client.jartransformer.class", [CLUSTER_CONF_DIR])
  File "/app/dbus-allinone/apache-storm-1.0.1/bin/storm.py", line 144, in confvalue
    p = sub.Popen(command, stdout=sub.PIPE)
  File "/usr/lib64/python2.6/subprocess.py", line 642, in __init__
    errread, errwrite)
  File "/usr/lib64/python2.6/subprocess.py", line 1238, in _execute_child
    raise child_exception

OSError: [Errno 2] No such file or directory

原因:ssh -p 22 root@localhost没有把JAVA_HOME环境变量带过来。

解决办法:

1.~/.bashrc文件配置 JAVA_HOME环境变量 
2./apache-storm-1.0.1/bin/storm 脚本最上面增加java环境变量
export JAVA_HOME=/opt/programs/jdk1.8.0_152
export JRE_HOME=/opt/programs/jdk1.8.0_152/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

Q9:关系型数据库,拉全量卡死,Topo重启

关系型数据库数据类型多种多样。当类型为char/varchar的列被作为分片列,里面存储的是普通字符串,或md5/uuid编码后的字符串,拉全量会遇到困难,因为分片的上下界不是列式数字那样的简单的比较了。对于这样的列,如不做特殊配置,dbus按片拉取的时候可能会出现长时间卡死,导致全量拉取topology重启。具体原因可参考:https://mp.weixin.qq.com/s?__biz=MzU4MTUwMTI4Mw==&mid=2247483749&idx=1&sn=e03d8c9a1e7db56c2615a8cebc289a73&chksm=fd47e969ca30607f5d42d0e5f5b227481526a56e0814ef6242d0046786bbac58241b01aa2d07&scene=0#rd

所以,当分片列为md5、uuid或普通字符串时,建议进行拆片风格的特殊配置,以保证dbus顺利拉取全量数据。

具体配置步骤如下:

encode-project-user

Q10:关于dbus的日志

1、dbusweb日志:

位于dbusweb部署根目录的logs目录下。

config.log         --本地配置中心日志,一般无需关心
register.log       --本地注册中心日志,一般无需关心
gateway.log        --本地网关日志,记录了全部来自页面的调用记录
mgr.log            --控制台日志,记录了所有的dbus关键处理过程相关日志,关注度较高
service.log        --数据库层面服务日志,记录了所有的dbus和数据库交互的相关日志,关注度较高

2、dbus流式数据处理相关日志

2.1、mysql

以数据线testdb为例:

canal部署在dbusn1的 /app/dbus/canal目录下,testdb.log就是canal的日志,或者进到canal-testdb/logs下查看

mysql-exteractor抽取(0.6.1版本废弃该模块)、dispatcher-appender增量、splitter-puller全量日志均在storm的worker日志目录下。

以mysql-exteractor为例:先通过dbusweb找到worker所在的机器和日志位置,登录机器查看,dbusweb提供最后500行的预览

mysql-log-2

mysql-log-3

2.2、oracle

以数据线orcl为例:

ogg的replicat状态查看:去你的ogg部署的根目录执行

[oracle@dbus-n2 golden]$ ./ggsci 
Oracle GoldenGate for Big Data
Version 12.3.1.1.1

Oracle GoldenGate Command Interpreter
Version 12.3.0.1.0 OGGCORE_OGGADP.12.3.0.1.0GA_PLATFORMS_170828.1608
Linux, x64, 64bit (optimized), Generic on Aug 28 2017 17:13:45
Operating system character set identified as UTF-8.

Copyright (C) 1995, 2017, Oracle and/or its affiliates. All rights reserved.



GGSCI (vdbus-11) 1> info orcl

REPLICAT   ORCL      Last Started 2019-12-17 14:32   Status RUNNING
Checkpoint Lag       00:00:00 (updated 03:18:19 ago)
Log Read Checkpoint  File /u01/golden/dirdat/aa000000000
                     2019-12-19 14:53:04.988283  RBA 20109

状态不是running请查看该目录下的ggserr.log查看错误信息

dispatcher-appender增量、splitter-puller全量日志均在storm的worker日志目录下,同mysql相同方法查看。

Q11:mysql表无数据

举例数据线testdb的schema1库的t1表

首先查看表的状态是否是running状态,非正常状态请先启动表。 表管理->目标表->操作->启动。

1、mysql数据流转图:

dbus 0.6.0
增量数据流转:
canal  -> extractor -> 一级topic(数据线同名,例如:testdb) 
-> dispatcher -> 二级topic(数据线.schema 例如:testdb.schema1)
-> appender -> 三级topic(数据线.schema.result  例如:testdb.schema1.result)

dbus 0.6.1
增量数据流转:
canal -> 一级topic(数据线同名,例如:testdb) 
-> dispatcher -> 二级topic(数据线.schema 例如:testdb.schema1)
-> appender -> 三级topic(数据线.schema.result  例如:testdb.schema1.result)

2、快速定位错误:

方式一 表管理检查数据线:

该方式最简单最快捷,但是最不准确,结果仅供参考,推荐程度☆☆☆

正常检查数据线结果

1.插入心跳包失败: 检查主库数据库权限,或者查看service.log日志,查看错误原因。

2.抽取进程失败:查看canal日志是否异常,canal无异常,0.6.0版本还要查看mysql-exteractor日志获取具体异常信息。

3.分发进程和增量进程失败:查看dispatcher-appender日志获取具体异常信息。

方式二 kafka小工具

该方式最准确,结果仅供参考,推荐程度☆☆☆☆☆☆☆☆☆☆☆☆☆☆…….

通过kafka小工具,查看第一级、第二级、第三级的offset有没有增长,没有增长说明有问题

查看第一级topic testdb,没有数据说明canal或者mysql-exteractor异常

查看第二级topic testdb.schema1和第三级topic testdb.schema1.result没有数据说明dispatcher-appender有问题,目前dispatcher appender是一个worker进程,一起部署的。

方式三 grafana

此方式依赖心跳正常工作,推荐程度☆☆☆

Q12:oracle表无数据

举例数据线orcl的utest库的customer表

首先查看表的状态是否是running状态,非正常状态请先启动表。 表管理->目标表->操作->启动。

1、oracle数据流转图:

增量数据流转:
源端ogg extractor进程发送数据到目标端ogg,在dirdata下生成指定前缀的日志文件,例如:aa000000000
->目标端ogg replicat进程读取aa000000000日志文件 -> 一级topic(数据线同名,例如:testdb) 
-> dispatcher -> 二级topic(数据线.schema 例如:testdb.schema1)
-> appender -> 三级topic(数据线.schema.result  例如:testdb.schema1.result)

2、快速定位错误:

方式一 表管理检查数据线:

该方式最简单最快捷,但是最不准确,结果仅供参考,推荐程度☆☆☆

正常检查数据线结果

1.插入心跳包失败: 检查主库数据库权限,或者查看service.log日志,查看错误原因。

2.抽取进程失败:查看源端或者目标端ogg日志获取具体异常信息。

3.分发进程和增量进程失败:查看dispatcher-appender日志获取具体异常信息。

方式二 kafka小工具

该方式最准确,结果仅供参考,推荐程度☆☆☆☆☆☆☆☆☆☆☆☆☆☆…….

通过kafka小工具,查看第一级、第二级、第三级的offset有没有增长,没有增长说明有问题

查看第一级topic testdb,没有数据说明源端或者目标端ogg异常。

查看第二级topic testdb.schema1和第三级topic testdb.schema1.result没有数据说明dispatcher-appender有问题,目前dispatcher appender是一个worker进程,一起部署的。

方式三 grafana

此方式依赖心跳正常工作,推荐程度☆☆☆

均无异常

查看源端ogg是否配置抽取该表

[oracle@vdbus-10 golden]$ ./ggsci 

Oracle GoldenGate Command Interpreter for Oracle
Version 12.2.0.1.1 OGGCORE_12.2.0.1.0_PLATFORMS_151211.1401_FBO
Linux, x64, 64bit (optimized), Oracle 12c on Dec 12 2015 02:56:48
Operating system character set identified as UTF-8.

Copyright (C) 1995, 2015, Oracle and/or its affiliates. All rights reserved.



GGSCI (vdbus-10) 1> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     RUNNING     ORCL        00:00:00      00:00:04    
EXTRACT     RUNNING     ORCL19      00:00:00      00:00:08    


GGSCI (vdbus-10) 2> view param orcl

EXTRACT ORCL
SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
USERID ogg,PASSWORD ogg
RMTHOST vdbus-11, MGRPORT 7809
rmttrail /u01/golden/dirdat/aa
DDL INCLUDE MAPPED
TRANLOGOPTIONS DBLOGREADER

TABLE UTEST.CUSTOMER;

查看目标端ogg是否配置抽取该表

Q13: HeartBeat schema hash不一致

原因dbus提供的.avsc文件和你的ogg生成的.avsc文件不一致

解决方法:

到目标端ogg根目录下的dirdef目录(举例:/u01/golden123111/dirdef),找到

DBUS.DB_HEARTBEAT_MONITOR.avsc DBUS.META_SYNC_EVENT.avsc

替换 dbus-stream-main-0.6.0-jar-with-dependencies.jar 根目录的对应文件

替换方法: 建议采用vim命令直接修改文件内容,以上文件有几个替换几个

Q14:启动拓扑zookeeper节点报错

启动数据源的拓扑经常报各种错误例如:NumberFormatException,NullPointerException …多数情况就是数据源的配置被改坏了,这就需要重置数据源配置

处理方法:数据源管理->找到对应数据源->点击[拓扑管理]按钮,第二个按钮->点击任意[修改配置]按钮,第三个按钮->点击左下角[恢复初始化配置]