数据库运行时,某些操作在执行过程中可能会出现错误,数据库依然能够运行。但是此时数据库中的数据可能已经发生不一致的情况。建议按月检查数据库运行日志,及时发现隐患。
如果集群在运行时发生故障,可以通过这些系统日志及时定位故障发生的原因,根据日志内容制定恢复集群的方法。
日志默认放在$GAUSSLOG中各自对应的目录下。使用om脚本部署时,GAUSSLOG默认值为 “/var/log/gaussdb/用户名”。如果用户安装数据库时修改过配置文件的目录,可以使用echo $GAUSSLOG查看日志所在目录。
CM(包括cm_agent、cm_server)的运行日志放在“$GAUSSLOG/cm”中各自对应的目录下。
OM集群安装卸载时产生的日志放在“$GAUSSLOG/om”目录下;OM调用zengine或zsql的输出结果记录在$GAUSSLOG/init_db下。
ETCD的运行日志放在“$GAUSSLOG/etcd”目录下。
数据库的运行日志放在$GAUSSLOG/db_log/实例名/run”目录下,记录数据库运行中的各种信息。
例如:
[2018-06-09 11:33:06.296765][gs_install][LOG][Step1]:Parsing the configuration file.例如:[time][USER:user][HOST:ip][operation][ log_level]: log_info
[2019-09-10 20:19:10.563986][USER:root][HOST:10.119.215.22][start][DEBUG][Step1]:Operating: start.例如:
2019-09-03 10:03:29.161 [info] [agent.go:1142 HeartBeat] Agent write heartbeat file (/opt/V1R6/gauss100/app/zcluster/cm/agent.hb) success.例如:
2019-05-14 20:22:50.469050 I | etcdserver: heartbeat = 300ms2018-06-09 12:09:40.053|ZENGINE|00048|140045052368640|INFO>[SPACE] succeed to create tablespace TABLESPACE1默认为$GAUSSLOG/db_log/实例名/debug/zengine.dlog
2018-06-09 12:13:02.857|ZENGINE|00048|140045052368640|INFO>Parse SQL successfully, SQL = select * from test_lob2根据用户设置的审计级别,记录不同的审计内容。审计功能开启时会不断产生大量的审计日志,占用磁盘空间。用户可以根据磁盘空间的大小设置审计日志维护策略。
关于如何设置审计日志维护策略请参见维护审计日志。
默认为$GAUSSLOG/db_log/实例名/audit/zengine.aud
例如:
UTC+8 2019-01-30 10:09:23.488
LENGTH: "117"
SESSIONID:[2] "48" STMTID:[0] "" USER:[6] "SYSDBA" HOST:[0] "" ACTION:[7] "CONNECT" RETURNCODE:[1] "0" SQLTEXT:[0] ""内容关键字:[关键字内容长度]"审计内容"。
操作日志是指数据库管理员使用zsql工具操作数据库时产生的日志。如果发生故障,可以通过这些日志信息跟踪用户对数据库进行了哪些操作,重现故障场景。
默认为“$GAUSSLOG/db_log/实例名/oper/zsql.olog”,如果环境变量$GAUSSLOG不存在或者变量值为空,则工具日志信息不会记录到对应的工具日志文件中,日志信息只会打印到屏幕上。
例如:
2019-01-30 10:21:10.894|zsql|SELECT VALUE FROM DV_PARAMETERS WHERE NAME = 'TCP_INVITED_NODES';REDO日志是指如果要修改数据文件,必须是在这些修改操作已经记录到日志文件之后才能进行修改,即在描述这些变化的日志记录刷新到永久存储器之后。在系统崩溃时,可以使用REDO日志对集群进行恢复操作。REDO日志对数据库异常恢复有重要的作用,建议定期对WAL日志进行备份。
以一个DN为例,默认在“/gaussdb/data/logn(n=1、2、3、4、5、6)”目录下。
REDO日志的内容取决于记录事务的类型,在系统崩溃时可以利用REDO日志进行恢复。
默认配置下,GaussDB 100每次启动时会先读取REDO日志进行恢复。
慢查询日志记录了运行时间超过阈值的语句。阈值由配置参数LONGSQL_TIMEOUT指定,默认值为10,单位为秒,即运行时间超过10秒的DML语句会被记录到慢查询日志中。慢查询日志通过设置LOG_LEVEL参数开启,默认不开启。建议只在调优需要时开启慢查询日志。
日志默认放在“/var/log/gaussdb/longsql”目录下。如果用户安装数据库时修改过配置文件的目录,可以使用echo $GAUSSLOG查看日志所在目录。
CM(包括cm_agent、cm_server)的慢查询日志放在“/var/log/gaussdb/用户名/cm”中各自对应的目录下。
OM集群安装卸载时产生的日志放在“/var/log/gaussdb/用户名/om”目录下。
ETCD的慢查询日志放在“/var/log/gaussdb/用户名/etcd”目录下。

如果使用om脚本部署时,则日志路径为 “/var/log/gaussdb/用户名”。
在分布式场景下,如果慢查询日志功能开启,将会记录CN以及DN各阶段执行超时的情况。
对于CN节点,例如:
2019-08-15 10:18:09|PREPARE|53|127.0.0.1|31251|"NULL"|3034788756|0000000000|"select * from test1"
---
备注:
10:18:09:当前时间
PREPARE:当前所在阶段(PREPARE/EXECUTE等)
53:session ID
127.0.0.1:client IP
31251:CN 节点在该阶段的耗时(微秒)
NULL:sql语句的参数
3034788756:sql ID
0000000000:执行计划的哈希值
select * from test1:原始输入的sql文本对于DN节点,例如:
2019-08-15 10:18:39|SHD_EXECUTE|5|127.0.0.1|31252|"NULL"|2977087572|0000000000|"SELECT A,B FROM SHARD.TEST3"
---备注: 10:18:39:当前时间 SHD_EXECUTE:当前所在阶段(SHD_PREPARE/SHD_EXECUTE) 5:当前DN的node_id 127.0.0.1:client IP 31252:DN 节点在该阶段的耗时(微秒) NULL:sql语句的参数 2977087572:sql ID 0000000000:执行计划的哈希值 SELECT A,B FROM SHARD.TEST3:下发到该DN的具体sql文本
告警日志用于记录数据库发生的异常情况。当数据库发生死锁的时候,会记录一条死锁日志,包括表锁死锁、事务死锁等;数据库句柄数不足的时候,会记录一条句柄数不足的日志。
默认为/var/log/gaussdb/alarm/目录下。如果用户安装数据库时修改过配置文件的目录,可以使用echo $GAUSSLOG查看日志所在目录。
CM的告警日志放在“/var/log/gaussdb/用户名/alarm/CM”目录下。
CN的告警日志放在“/var/log/gaussdb/用户名/alarm/cn_name”目录下。
DB的告警日志放在“/var/log/gaussdb/用户名/alarm/dn_name”目录下。

如果使用om脚本部署时,则日志路径为 “/var/log/gaussdb/用户名”。
例如:
2019/02/14 11:33:56 |1078919227|AbnormalCMSProcess|CM|CM1|CM1
2019/02/14 11:34:02 |1078919177|AbnormalCoordinatorInst|CN|cn_401|cn_401
2019/02/14 11:34:09 |1078919184|AbnormalDatanodeInst|DN|DB1_1|DB1_1
2019/02/14 11:36:14 |1078919202|DatanodeFailOver|DN|DB1_1|DB1_1
2019/02/14 11:52:41 |1078919227|AbnormalCMSProcess|CM|CM1|CM1
2019/02/14 11:52:48 |1078919177|AbnormalCoordinatorInst|CN|cn_401|cn_401
2019/02/14 11:52:56 |1078919184|AbnormalDatanodeInst|DN|DB1_1|DB1_1
Trace日志用于记录数据库发生故障时,相关会话的追踪信息,目前仅用于记录会话死锁或锁超时的信息。
CN上默认目录为:/gaussdb/data/data_cn/trc/zengine_00003_xxxx.trc,其中/gaussdb/data/data_cn是CN的数据目录。
DN上默认目录为:/gaussdb/data/data_dn/trc/zengine_00003_xxxx.trc,其中/gaussdb/data/data_dn是DN的数据目录。
其中,00003是表示某一个会话的ID,目前死锁日志在SESSION_ID为3的会话中进行打印;后面的数字是进程号,数据库重新启动后,会重新生成一个Trace日志。
例如:
CN上的Trace日志:
*** 2019-03-20 11:38:11 ***
*** ACTION NAME:(DML) ***
*** MODULE NAME:(ZSQL) ***
*** SERVICE NAME:(GaussDB) ***
*** SESSION ID:(44) ***
LOCK TIMEOUT DETECTED (GS-00717)
Locking timed out while the operation was waiting.
The following deadlock is not an GaussDB error. It is a
deadlock on DATANODE due to user error in the design of
an application or from issuing incorrect ad-hoc SQL.
The following information may aid in determining the deadlock:
----- Information for CURRENT COORDINATOR sessions -----
Session:
sid:65 ser:943 pid:94179 user:2/omm
O/S info: user:os_user, machine:[87368]/opt/gaussdb/app/zsql
application name:ZSQL
----- End of information for CURRENT COORDINATOR sessions -----
----- Information for DATANODEs which occur DEADLOCK DETECTED or LOCK TIMEOUT -----
Information on DN(id:2) sessions:
lock timeout while waiting for transaction
Session:sid = 50 user = omm curr_schema = omm
current SQL:"update t1 set b=2 where a=1"
End of information on DN(id:2) sessions.
----- End of information for DATANODEs which occur DEADLOCK DETECTED or LOCK TIMEOUT -----
DN上的Trace日志:
**2019-03-17 11:37:32 DEADLOCK DETECTED*
The following deadlock is not a GaussDB error.It is due to user error in the design of SQL.The following information may aid in determining the deadlock :
----------------------WAIT INFORMATION---------------------
[Transaction Deadlock]
session id: 54, wait session: 53, wait rowid: --9624
wait sql: update d1 set c2 = 'w' where c1 = 1
session id: 53, wait session: 54, wait rowid: --9632
wait sql: update d2 set c2 = 'w' where c1 = 1
-----------------END OF WAIT INFORMATION-----------------
以上记录的就是发生死锁,记录的Trace日志。如果wait_sql为空,说明当前会话正在进行DDL,目前暂时无法记录正在进行DDL的死锁。Trace日志包括以下信息:
例如:
[2019-07-25 09:32:20.092027][][INFO]:Successfully stopped cluster.记录数据库进程core时的基本异常信息。
默认存放在$GAUSSLOG/db_log/实例名/blackbox下。
黑匣子日志可以打印如下信息:
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3151368/ ,如需转载,请注明出处,否则将追究法律责任。