当前位置: 代码迷 >> 综合 >> MyCAT 日志文件描述
  详细解决方案

MyCAT 日志文件描述

热度:67   发布时间:2023-12-14 23:17:47.0
    MyCat是一个基于cobar兴起的开源数据库中间件系统,当前深受广大开源爱好者的追捧以及DBA粉丝们的广泛研究。主要是面对解决高并发,高负载,海量存储等屏颈。与任何应用软件一样,MyCAT也有自身的日志文件用于记录MyCAT运行时的相关信息用于排错与跟踪。本文主要描述其日志文件部分。

    有关快速安装体验MyCAT请参考:快速体验MyCAT

一、日志配置
### 环境描述
### 当前基于windows 7安装了mycat
### 两台mysql主机,分别为192.168.1.204:3306,192.168.1.143:3307

###查看日志文件配置

D:\>type mycat\conf\log4j.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%d{MM-dd HH:mm:ss.SSS}  %5p [%t] (%F:%L) -%m%n" />
  </layout>
 </appender>
  <appender name="FILE" class="org.apache.log4j.RollingFileAppender">
    <param name="file" value="${MYCAT_HOME}/logs/mycat.log" />    //日志位置定义
    <param name="Append" value="false"/>                          //记录方式,此时为append
    <param name="MaxFileSize" value="1000KB"/>                    //每个日志文件大小
    <param name="MaxBackupIndex" value="10"/>                     //保留个数  
    <param name="encoding" value="UTF-8" />                       //字符集
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d{MM/dd HH:mm:ss.SSS}  %5p [%t] (%F:%L) -%m%n" />
    </layout>
  </appender>

  <root>
    <level value="info" />       //是日志的级别,生成环境下建议将级别调整为 info/ware。
                        //如果是研究测试,特别是碰到异常可以通过开启 debug 模式观察日志的信息查找异常原因。
    <appender-ref ref="FILE" />
     <!--<appender-ref ref="FILE" />-->
  </root>

</log4j:configuration>

二、日志分析
1、warpper.log日志
warpper 日志:mycat启动,停止,添加为服务等都会记录到此日志文件,如果系统环境配置错误或缺少配置时,导致 Mycat 无法
启动,可以通过查看 warrpper.log 定位具体错误原因。
warrpper.log可以删除,删除后会自动重新生成该日志

###如果启动异常会有对应的异常信息,比如:
STATUS | wrapper  | 2015/09/25 09:26:36 | --> Wrapper Started as Service
STATUS | wrapper  | 2015/09/25 09:26:36 | Launching a JVM...
INFO   | jvm 1    | 2015/09/25 09:26:37 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
INFO   | jvm 1    | 2015/09/25 09:26:37 |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.
INFO   | jvm 1    | 2015/09/25 09:26:37 | 
INFO   | jvm 1    | 2015/09/25 09:26:37 | 
INFO   | jvm 1    | 2015/09/25 09:26:37 | WrapperSimpleApp: Encountered an error running main: java.lang.ExceptionInInitializerError
INFO   | jvm 1    | 2015/09/25 09:26:37 | java.lang.ExceptionInInitializerError
INFO   | jvm 1    | 2015/09/25 09:26:37 | at org.opencloudb.MycatStartup.main(MycatStartup.java:46)
INFO   | jvm 1    | 2015/09/25 09:26:37 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
INFO   | jvm 1    | 2015/09/25 09:26:37 | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
INFO   | jvm 1    | 2015/09/25 09:26:37 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
INFO   | jvm 1    | 2015/09/25 09:26:37 | at java.lang.reflect.Method.invoke(Method.java:606)
INFO   | jvm 1    | 2015/09/25 09:26:37 | at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240)
INFO   | jvm 1    | 2015/09/25 09:26:37 | at java.lang.Thread.run(Thread.java:745)
INFO   | jvm 1    | 2015/09/25 09:26:37 | Caused by: org.opencloudb.config.util.ConfigException: org.xml.sax.SAXParseException; 
  lineNumber: 26; columnNumber: 5; 元素类型 "dataHost" 必须由匹配的结束标记 "</dataHost>" 终止。   //这里说明了错误原因
INFO   | jvm 1    | 2015/09/25 09:26:37 | ... 13 more
STATUS | wrapper  | 2015/09/25 09:26:39 | <-- Wrapper Stopped
STATUS | wrapper  | 2015/09/25 09:28:10 | --> Wrapper Started as Service

###正常启动状态的 warpper 日志为:
STATUS | wrapper  | 2015/09/25 11:15:52 | Starting the Mycat-server service...
STATUS | wrapper  | 2015/09/25 11:15:52 | --> Wrapper Started as Service
STATUS | wrapper  | 2015/09/25 11:15:52 | Launching a JVM...
INFO   | jvm 1    | 2015/09/25 11:15:52 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
INFO   | jvm 1    | 2015/09/25 11:15:52 |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.
INFO   | jvm 1    | 2015/09/25 11:15:52 | 
INFO   | jvm 1    | 2015/09/25 11:15:53 | log4j 2015-09-25 11:15:53 [./conf/log4j.xml] load completed.
INFO   | jvm 1    | 2015/09/25 11:15:53 | MyCAT Server startup successfully. see logs in logs/mycat.log
STATUS | wrapper  | 2015/09/25 11:15:56 | Mycat-server started.

2、mycat.log日志
mycat.log为mycat主要日志文件,记录了启动时分配的相关buffer信息,数据源连接信息,连接池,动态类加载信息等等
在log4j.xml文件中进行相关配置,如保留个数,大小,字符集,日志文件大小等。
非启动状态下可以删除,启动后会自动生成该日志文件


日志的级别为info时的相关信息:
以下日志部分为描述了mycat初始相关参数的配置信息,如Mycat 线程池、 buffer、连接池等等所有的配置信息。

09/25 15:13:19.257   INFO [WrapperSimpleAppMain] (MycatServer.java:195) -===============================================
09/25 15:13:19.257   INFO [WrapperSimpleAppMain] (MycatServer.java:196) -MyCat is ready to startup ...
09/25 15:13:19.258   INFO [WrapperSimpleAppMain] (MycatServer.java:206) -Startup processors ...,total processors:4,aio thread pool size:8    
 each process allocated socket buffer pool  bytes ,buffer chunk size:4096  buffer pool's capacity(buferPool/bufferChunk) is:4000
09/25 15:13:19.258   INFO [WrapperSimpleAppMain] (MycatServer.java:207) -sysconfig params:SystemConfig [processorBufferLocalPercent=100,
 frontSocketSoRcvbuf=1048576, frontSocketSoSndbuf=4194304, backSocketSoRcvbuf=4194304, backSocketSoSndbuf=1048576, frontSocketNoDelay=1,
 backSocketNoDelay=1, maxStringLiteralLength=65535, frontWriteQueueSize=2048, bindIp=0.0.0.0, serverPort=8066, managerPort=9066, charset=utf8, 
 processors=4, processorExecutor=8, timerExecutor=2, managerExecutor=2, idleTimeout=1800000, catletClassCheckSeconds=60, sqlExecuteTimeout=300,
 processorCheckPeriod=1000, dataNodeIdleCheckPeriod=300000, dataNodeHeartbeatPeriod=10000, clusterHeartbeatUser=_HEARTBEAT_USER_, 
 clusterHeartbeatPass=_HEARTBEAT_PASS_, clusterHeartbeatPeriod=5000, clusterHeartbeatTimeout=10000, clusterHeartbeatRetry=10, txIsolation=3,
 parserCommentVersion=50148, sqlRecordCount=10, processorBufferPool=16384000, processorBufferChunk=4096, defaultMaxLimit=100, 
 sequnceHandlerType=0, sqlInterceptor=org.opencloudb.interceptor.impl.DefaultSqlInterceptor, sqlInterceptorType=select, 
 sqlInterceptorFile=D:\mycat/logs/sql.txt, mutiNodeLimitType=0, mutiNodePatchSize=100, defaultSqlParser=druidparser, usingAIO=0, 
 packetHeaderSize=4, maxPacketSize=16777216, mycatNodeId=1] 
09/25 15:13:19.277   INFO [WrapperSimpleAppMain] (MycatServer.java:266) -using nio network handler 
09/25 15:13:19.290   INFO [WrapperSimpleAppMain] (MycatServer.java:284) -$_MyCatManager is started and listening on 9066
09/25 15:13:19.290   INFO [WrapperSimpleAppMain] (MycatServer.java:288) -$_MyCatServer is started and listening on 8066

以下部分为分片主机的相关信息,分别初始化了10个连接到2个不同的分片主机
这个是来自配置文件schema.xml里定义的dataHost中minCon="10"

09/25 15:13:19.290   INFO [WrapperSimpleAppMain] (MycatServer.java:290) -===============================================
09/25 15:13:19.291   INFO [WrapperSimpleAppMain] (MycatServer.java:293) -Initialize dataHost ...
09/25 15:13:19.291   INFO [WrapperSimpleAppMain] (PhysicalDBPool.java:272) -init backend myqsl source ,create connections total 10 for hostM1 index :0
09/25 15:13:19.291   INFO [WrapperSimpleAppMain] (PhysicalDatasource.java:373) -not ilde connection in pool,create new connection for hostM1 of schema db1
09/25 15:13:19.293   INFO [WrapperSimpleAppMain] (PhysicalDatasource.java:373) -not ilde connection in pool,create new connection for hostM1 of schema db1
09/25 15:13:19.293   INFO [WrapperSimpleAppMain] (PhysicalDatasource.java:373) -not ilde connection in pool,create new connection for hostM1 of schema db1
09/25 15:13:19.294   INFO [WrapperSimpleAppMain] (PhysicalDatasource.java:373) -not ilde connection in pool,create new connection for hostM1 of schema db1
09/25 15:13:19.294   INFO [WrapperSimpleAppMain] (PhysicalDatasource.java:373) -not ilde connection in pool,create new connection for hostM1 of schema db1
09/25 15:13:19.294   INFO [WrapperSimpleAppMain] (PhysicalDatasource.java:373) -not ilde connection in pool,create new connection for hostM1 of schema db1
09/25 15:13:19.294   INFO [WrapperSimpleAppMain] (PhysicalDatasource.java:373) -not ilde connection in pool,create new connection for hostM1 of schema db1
09/25 15:13:19.294   INFO [WrapperSimpleAppMain] (PhysicalDatasource.java:373) -not ilde connection in pool,create new connection for hostM1 of schema db1
09/25 15:13:19.295   INFO [WrapperSimpleAppMain] (PhysicalDatasource.java:373) -not ilde connection in pool,create new connection for hostM1 of schema db1
09/25 15:13:19.295   INFO [WrapperSimpleAppMain] (PhysicalDatasource.java:373) -not ilde connection in pool,create new connection for hostM1 of schema db1
09/25 15:13:19.309   INFO [$_NIOREACTOR-1-RW] (GetConnectionHandler.java:66) -connected successfuly MySQLConnection [id=1, lastTime=1443165199309,
 schema=db1, old shema=db1, borrowed=true, fromSlaveDB=false, threadId=363, charset=latin1, txIsolation=0, autocommit=true, attachment=null, 
 respHandler=null, host=192.168.1.204, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]
09/25 15:13:19.309   INFO [$_NIOREACTOR-3-RW] (GetConnectionHandler.java:66) -connected successfuly MySQLConnection [id=3, lastTime=1443165199309,
 schema=db1, old shema=db1, borrowed=true, fromSlaveDB=false, threadId=365, charset=latin1, txIsolation=0, autocommit=true, attachment=null, 
 respHandler=null, host=192.168.1.204, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]
    ..........
09/25 15:13:19.395   INFO [WrapperSimpleAppMain] (PhysicalDBPool.java:301) -init result :finished 10 success 10 target count:10
09/25 15:13:19.395   INFO [WrapperSimpleAppMain] (PhysicalDBPool.java:243) -192.168.1.204 index:0 init success
09/25 15:13:19.395   INFO [WrapperSimpleAppMain] (PhysicalDBPool.java:272) -init backend myqsl source ,create connections total 10 for hostM1 index :0
09/25 15:13:19.396   INFO [WrapperSimpleAppMain] (PhysicalDatasource.java:373) -not ilde connection in pool,create new connection for hostM1 of schema db2
09/25 15:13:19.396   INFO [WrapperSimpleAppMain] (PhysicalDatasource.java:373) -not ilde connection in pool,create new connection for hostM1 of schema db2
09/25 15:13:19.396   INFO [WrapperSimpleAppMain] (PhysicalDatasource.java:373) -not ilde connection in pool,create new connection for hostM1 of schema db2
09/25 15:13:19.396   INFO [WrapperSimpleAppMain] (PhysicalDatasource.java:373) -not ilde connection in pool,create new connection for hostM1 of schema db2
09/25 15:13:19.397   INFO [WrapperSimpleAppMain] (PhysicalDatasource.java:373) -not ilde connection in pool,create new connection for hostM1 of schema db2
09/25 15:13:19.397   INFO [WrapperSimpleAppMain] (PhysicalDatasource.java:373) -not ilde connection in pool,create new connection for hostM1 of schema db2
09/25 15:13:19.398   INFO [WrapperSimpleAppMain] (PhysicalDatasource.java:373) -not ilde connection in pool,create new connection for hostM1 of schema db2
09/25 15:13:19.398   INFO [WrapperSimpleAppMain] (PhysicalDatasource.java:373) -not ilde connection in pool,create new connection for hostM1 of schema db2
09/25 15:13:19.399   INFO [WrapperSimpleAppMain] (PhysicalDatasource.java:373) -not ilde connection in pool,create new connection for hostM1 of schema db2
09/25 15:13:19.400   INFO [WrapperSimpleAppMain] (PhysicalDatasource.java:373) -not ilde connection in pool,create new connection for hostM1 of schema db2
09/25 15:13:19.409   INFO [$_NIOREACTOR-1-RW] (GetConnectionHandler.java:66) -connected successfuly MySQLConnection [id=13, lastTime=1443165199409,
 schema=db2, old shema=db2, borrowed=true, fromSlaveDB=false, threadId=6232, charset=latin1, txIsolation=0, autocommit=true, attachment=null,
 respHandler=null, host=192.168.1.143, port=3307, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]
09/25 15:13:19.410   INFO [$_NIOREACTOR-1-RW] (GetConnectionHandler.java:66) -connected successfuly MySQLConnection [id=17, lastTime=1443165199410, 
schema=db2, old shema=db2, borrowed=true, fromSlaveDB=false, threadId=6235, charset=latin1, txIsolation=0, autocommit=true, attachment=null,
 respHandler=null, host=192.168.1.143, port=3307, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]
     ...........
09/25 15:13:19.500   INFO [WrapperSimpleAppMain] (PhysicalDBPool.java:301) -init result :finished 10 success 10 target count:10
09/25 15:13:19.500   INFO [WrapperSimpleAppMain] (PhysicalDBPool.java:243) -192.168.1.143 index:0 init success

以下部分是一个成功连接到9066的信息
09/25 15:13:51.468   INFO [$_NIOREACTOR-1-RW] (FrontendAuthenticator.java:164) -[thread=$_NIOREACTOR-1-RW,
 class=ManagerConnection,id=1,host=0:0:0:0:0:0:0:1,port=9066,schema=testdb]'test' login success

日志的级别为debug时的相关信息:
修改日志配置文件log4j.xml,value值改为"debug",如下:

<level value="debug" />

mysql:9600>reload @@config_all;
Query OK, 1 row affected (0.23 sec)
Reload config success

--发布查询
mysql:8066>select * from goods;
+----+-------+
| id | val   |
+----+-------+
|  1 | apple |
+----+-------+

--相关的日志信息,//这里为路由的信息,即sql最终在哪个分片节点执行
09/25 15:52:07.235  DEBUG [$_NIOREACTOR-0-RW] (ServerQueryHandler.java:56) -ServerConnection [id=4, schema=testdb, host=0:0:0:0:0:0:0:1,
 user=test,txIsolation=3, autocommit=true, schema=testdb]select * from goods
09/25 15:52:07.235  DEBUG [$_NIOREACTOR-0-RW] (EnchachePool.java:76) -SQLRouteCache  miss cache ,key:testdbselect * from goods
09/25 15:52:07.236  DEBUG [$_NIOREACTOR-0-RW] (NonBlockingSession.java:113) -ServerConnection [id=4, schema=testdb, host=0:0:0:0:0:0:0:1, 
user=test,txIsolation=3, autocommit=true, schema=testdb]select * from goods, route={
   1 -> dn2{SELECT *
FROM goods
LIMIT 100}
} rrs 
09/25 15:52:07.236  DEBUG [$_NIOREACTOR-0-RW] (PhysicalDBPool.java:431) -select read source hostM1 for dataHost:192.168.1.143
09/25 15:52:07.236  DEBUG [$_NIOREACTOR-0-RW] (MySQLConnection.java:442) -con need syn ,total syn cmd 2 commands SET names gbk;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;schema change:false con:MySQLConnection [id=33, lastTime=1443167527236, 
schema=db2, old shema=db2, borrowed=true, fromSlaveDB=false, threadId=6242, charset=latin1, txIsolation=0, autocommit=true, attachment=dn2{SELECT *
FROM goods
LIMIT 100}, respHandler=SingleNodeHandler [node=dn2{SELECT *
FROM goods
LIMIT 100}, packetId=0], host=192.168.1.143, port=3307, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]
09/25 15:52:07.238  DEBUG [$_NIOREACTOR-2-RW] (NonBlockingSession.java:230) -release connection MySQLConnection [id=33, 
lastTime=1443167527222, schema=db2, old shema=db2, borrowed=true, fromSlaveDB=false, threadId=6242, charset=gbk, 
txIsolation=3, autocommit=true, attachment=dn2{SELECT *
FROM goods
LIMIT 100}, respHandler=SingleNodeHandler [node=dn2{SELECT *
FROM goods
LIMIT 100}, packetId=5], host=192.168.1.143, port=3307, statusSync=org.opencloudb.mysql.nio.MySQLConnection$StatusSync@9d2f333, writeQueue=0, 
modifiedSQLExecuted=false]
09/25 15:52:07.238  DEBUG [$_NIOREACTOR-2-RW] (PhysicalDatasource.java:403) -release channel MySQLConnection 
[id=33, lastTime=1443167527222, schema=db2, old shema=db2, borrowed=true, fromSlaveDB=false, threadId=6242, charset=gbk,
 txIsolation=3, autocommit=true, attachment=null, respHandler=null, host=192.168.1.143, port=3307, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]
09/25 15:52:09.508  DEBUG [Timer1] (SQLJob.java:85) -con query sql:select user() to con:MySQLConnection [id=26,
 lastTime=1443167529508, schema=db1, old shema=db1, borrowed=true, fromSlaveDB=false, threadId=376, charset=latin1,
 txIsolation=0, autocommit=true, attachment=null, respHandler=null, host=192.168.1.204, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]
09/25 15:52:09.508  DEBUG [Timer1] (SQLJob.java:85) -con query sql:select user() to con:MySQLConnection [id=32,
 lastTime=1443167529508, schema=db2, old shema=db2, borrowed=true, fromSlaveDB=false, threadId=6245, charset=latin1,
 txIsolation=0, autocommit=true, attachment=null, respHandler=null, host=192.168.1.143, port=3307, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]
09/25 15:52:09.509  DEBUG [$_NIOREACTOR-3-RW] (PhysicalDatasource.java:403) -release channel MySQLConnection [id=26, lastTime=1443167529502, schema=db1,
 old shema=db1, borrowed=true, fromSlaveDB=false, threadId=376, charset=latin1, txIsolation=0, autocommit=true, attachment=null, respHandler=null,
 host=192.168.1.204, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]
09/25 15:52:09.509  DEBUG [$_NIOREACTOR-1-RW] (PhysicalDatasource.java:403) -release channel MySQLConnection [id=32, lastTime=1443167529502, schema=db2,
 old shema=db2, borrowed=true, fromSlaveDB=false, threadId=6245, charset=latin1, txIsolation=0, autocommit=true, attachment=null, respHandler=null, 
 host=192.168.1.143, port=3307, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]

以下部分是一个分布在既分布在dn1,又分布在dn2上日志路由信息
09/25 16:30:26.641  DEBUG [$_NIOREACTOR-0-RW] (EnchachePool.java:76) -SQLRouteCache  miss cache ,key:testdbselect * from travelrecord
09/25 16:30:26.649  DEBUG [$_NIOREACTOR-0-RW] (EnchachePool.java:59) -SQLRouteCache add cache ,key:testdbselect * from travelrecord value:select *
 from travelrecord, route={
   1 -> dn1{SELECT *
FROM travelrecord
LIMIT 100}
   2 -> dn2{SELECT *
FROM travelrecord
LIMIT 100}
}
09/25 16:30:26.649  DEBUG [$_NIOREACTOR-0-RW] (NonBlockingSession.java:113) -ServerConnection [id=4, schema=testdb, host=0:0:0:0:0:0:0:1, 
user=test,txIsolation=3, autocommit=true, schema=testdb]select * from travelrecord, route={
   1 -> dn1{SELECT *
FROM travelrecord
LIMIT 100}
   2 -> dn2{SELECT *
FROM travelrecord
LIMIT 100}
} rrs 
09/25 16:30:26.650  DEBUG [$_NIOREACTOR-0-RW] (MultiNodeQueryHandler.java:83) -execute mutinode query select * from travelrecord
09/25 16:30:26.668  DEBUG [$_NIOREACTOR-0-RW] (MultiNodeQueryHandler.java:98) -has data merge logic