SANGFORAC3.2&SG3.2新产品培训培训内容培训目的AC3.2&SG3.2新产品培训①能说出三种以上AC3.2&SG3.2版本解决的问题。②掌握什么情况下需要选用AC3.2&SG3.2版本。③掌握3.2版本数据审计及数据同步原理目录一、3.2具体解决了哪些问题二、日志审计三、日志同步四、中间表五、日志精简六、升级及注意事项七、FAQ•1.数据库插入速度慢。在带宽较大(大于240Mb)的情况下,产生日志的速度大于数据库插入的速度,产生漏审计。•2.数据恢复机制差。在数据库异常崩溃后,会丢失全部历史日志。•3.同步与统计数据慢。3.2之前版本日志量大(A表日志超过2000万条,附件数超过25万)的时候,日志同步速度慢或异常停止,3.2版本支持A表6000万条日志同步。•4.审计冗余日志过多。冗余日志太多,导致审计性能下降。•5.数据库收缩。解决数据库表删除后,数据库占用硬件空间大小没有释放的问题。一、3.2具体解决了哪些问题培训内容培训目的日志审计①能说出3.2版本在写日志方面较之前版本有哪些改进。②能说出高性能模式和普通模式的区别。③能说出MYSQL改用存储引擎解决了什么问题。二、日志审计3.2之前版本日志审计3.2以前的版本由aclog直接写内置mysql数据库,通过insert命令逐条插入数据库的,如图,日志写入速度及同步速度比较慢。1、对比之前版本3.2版本日志审计AC3.2版本Aclog改变日志逐条地插入到数据库中的机制,而是生成日志文件(sync_file和load_file),再由日志导入模块(Loader)负责将日志批量导入到数据库中。解决以往版本由aclog直接将日志逐条插入数据库的效率低问题。1、对比之前版本(续)aclog将日志写到两个文件中:sync_file和load_file。sync_file是5分钟写一个文件,load_file间隔时间比较短(5s)。sync_file主要功能是:向外置数据中心同步数据或者恢复内置mysql。它里面保存的日志和内置mysql相同。load_file主要功能是:日志中转,实现批量向内置的mysql插入数据,而且它里面的日志在被loader导入完成后自动删除。1、对比之前版本(续)在客户日志量很大的情况下,为了提高AC数据同步性能,AC可以启用高性能模式,在高性模式下,aclog只会写sync_file下的文件,不会写load_file的文件,所以内置数据中心无日志记录,只进行外置数据日志同步。启用高性能模式如下图。2、高性能模式2、高性能模式(续)AC3.2版本采用日志批量导入数据库及日志损坏自动修复机制,分别由load和recover程序实现。解决了日志写入慢及日志库损坏无法修复的问题,loader和recover同样适用于外置数据中心。如上图3、日志导入及恢复机制3.1.Loader通过检测是否存在load_file文件(5S),如果存在则将load_file里面的日志导入数据库。3.2.Loader向MYSQL导入数据,正常结导入成功后,把load_file文件进行删除。3.3.如果Loader导入表失败并且自行修复表,则调用Recover进行修复。3.4.Revocer从sync_file中,把导入失败的表,进行重新还原导入。导入成功则返回给Loader。3.5.如果导入不成功,偿试三次都失败。则回复相应的错误给Loader,并且交还控制权给Loader。3、日志导入及恢复机制(续)AC3.2版本数据中心采用myisam数据库存储引擎,AC3.2之前版本采用innodb数据库存储引擎,innodb存储引擎存在以下两个问题:①无法释放数据库空间②某天或某几天的表损坏,可能导致整个数据库损坏,从而导致整个日志丢失。Myisam存储引擎有效地解决了上述两个问题4、数据库存储引擎myisamMyisam存储引擎特点是每天的每种表都是单独存储的,好处是某个表损坏了,还可以再重新load一次修复。这种方式的数据库会有很多文件,比如20101130的A表就会产生三个文件:A20101130.frm(结构表)、A20101130.MYI(索引表)、A20101130.MYD(日志表)。4、数据库存储引擎myisam(续)5.1、3.2日志审计不再由aclog直接写数据库。改成aclog直接把日志写到sync_file和load_file两个文件中。每隔一段时间,一次性导入一批日志记录,从而极大提高了效率。5.2、sync_file文件存在硬盘上,用于同步到外置数据中心和内置数据库恢复使用,每五分钟生成一个文件。Load_file用于导入到内置数据库中,导入成功后便删除,每5s左右导入一次。5.3、Sync_file与内置数据中心存放着相同的日志,所以产生一个问题,磁盘使用率降低一半。5.4、支持某一天的日志表坏了,可以直接从日志文件(sync_file)中恢复。只支持恢复当天的,暂时不支持内置数据库完全挂掉后,全盘恢复。但是可以使用外置数据中心,把日志文件中的日志导出。5.5、启用高性能模式的时候,aclog只写sync_file文件,内置数据中心无日志。5.6、MYSQL改myisam为存储引擎,解决数据库收缩问题。5、日志审计总结培训内容培训目的日志同步。①了解数据同步整体过程②了解外置数据日志导入load及日志恢复recover功能③能说出什么情况下建议用压缩算法三、日志同步3.2之前版本日志同步采用每条日志同步及每条日志写入外置数据中心mysql的方式缺点:同步速度慢,每天同步的日志大概2000w条左右,日志量比较大的客户,经常出现日志同步速度跟不上日志产生速度,同步滞后。3.2版本数据采用新的同步机制,内置数据中心每隔5分钟生成一个日志文件,日志同步时,直接将日志文件同步到外置数据中心,然后由我们的load程序批量load到数据库。优点:大大提高了同步效率,高端设备一天支持6000w的日志同步,解决了同步速度慢的问题。1、对比之前版本上图为日志同步的整体过程,同步过程中涉及三种表,配置表,日志表和附件,同步的先后顺序为:配置表日志表附件2、日志同步整体流程这里所说的配置表,指的是用户表,组织架构表及应用表等,如左图。2.1、配置表同步2.1、配置表同步(续)配置表的同步由同步客户端程序datasync将配置表同步至外置数据中心,然后由外置数据中心服务端程序调用load导入器,将配置表导入至mysql,完成配置表同步。每次启动同步都会进行配置表的同步,同步前先检验各配置表的md5值,如果md5不一样,则认为配置表发生改变,需要进行同步。2.1、配置表同步(续)配置表md5网关序号load2.2、日志表同步日志表指的是用户上网产生的真实日志,包括A,U,P,M,C,O,I,S,F,Q,T这些表。日志表的同步过程如下:2.2、日志表同步(续)①.aclog把实时日志写进日志文件sync_file下,如下图:日志文件的命名规则如下:例20101130_1515_5F86F7A5_Q.dat,20101130为日期,1515为时间,5F86F7A5网关序号,Q表的命名,从图中可以看出日志文件是每隔5分钟生成一次2.2、日志表同步(续)②.同步客户端直接从日志文件sync_file中读取日志文件并同步至外置数据中心,同步顺序为:A-U-P-M-C-O-I-S-F-Q-T③.外置数据同时调用load导入器将已同步过来的日志表导入至数据库。外置数据中心日志表同步如下图:2.3、附件同步完成当前5分钟日志表的同步后,需要进行当前5分钟附件的同步,直接由同步器将当前5分钟内的附件打包,同步至外置数据中心进行解包,便完成该5分钟附件的同步。外置数据中心附件同步日志如下图:附件在内置数据中心打包成20101209_1530_5F86F7A5_X.dat这种形式进行同步。外置数据中心同样具有load和recover机制,原理和内置数据中心一样,差别的是,内置数据中心load和recover一直在运行,而外置的load和recover只是在需要的时候才调用,如下图:3、外置数据中心日志导入及恢复功能3.1.Datacenter同步完成sync_file之后,会调用Loader.exe。3.2.Loader.exe把sync_file文件中相关日志,导入到MYSQL数据库中。导入成功后,Loader.exe程序退出工作,等待下一次datacenter对其进行调用。3.3.如果Loader在导入数据库表的时候出现错误,并且进行简单的repair还无法修复,则调用Recover.exe进行修复。3.4.Recover.exe被调用起来后,把无法修复的表进行drop,drop完之后,再从sync_file里面,把对面的表进行恢复。如果成功,则把控制权交还给Loader,并退出。3.5.如果Recover失败超过三次,刚返回给Loader相关错误信息,然后退出。3、外置数据中心日志导入及恢复功能(续)4、压缩算法同步日志使用压缩算法:LZO和LZMA,默认是LZO,使用LZMA压缩算法可以在界面上配置,可以将压缩比率提高1倍,但是同步时间并不一定会会因为压缩比率增加而缩短,因为压缩也会占用较长的时间了。注意:启用该算法有可能比不启用该算法更慢,因为压缩比较耗时,也在内网环境下不建议使用。在带宽不足的情况下,如通过vpn,多个分支向总部同步日志,可以启用。•5.1、内置到外置数据中心同步,每次传五分钟的sync_file内容和五分钟相关的附件。传输完成后,外置数据中心,立刻调用导入器(Loader)对日志文件进行导入。•5.2、同步日志的顺序为配置表-日志表-附件,其中日志表的同步顺序为,A-U-P-M-C-O-I-S-F-Q-T•5.3、LZMA算法,压缩比虽然提高,但是同步速度不一定提高。建议内网环境不启用,带宽不足时再启用。•5.4、内置数据中心Loader过的日志文件(load_file)会被删除,而外置数据中心Loader过的日志文件不会被删除。•5.5、Recover只能修复当天的数据库,无法修复整个数据库。•5.6、sync_file中的日志文件删除机制同数据库日志删除机制5、日志同步总结培训内容培训目的中间表能在进行日志统计,报表生成时合理利用中间表,以提高速度四、中间表随着审计日志量的增加,数据中心查询、统计、生成报表等速度越来越慢,为了满足客户使用数据中心可以在短时间内响应并给出结果的需求,提出中间表的实现机制。中间表由后台程序midtable实现,将原始表中具有求和意义的字段(流量,时间,行为等)按组、用户、IP、应用类型及具体应用做二次统计,一定程度上提高查询、统计的页面响应。1、为什么要引入中间表3.0之前的中间表直接从数据库中读取日志,每半个小时作为一个时间段,生成中间表。中间表使用有限,如果要统计四个小时的流量,则需要查询8次中间表。3.2版本较之前版本发生了变化,生成中间表的原始数据不是从数据库中读取,直接从sync_file下的文件中读取,另外也不仅仅是取半个小时内置的数据生成中间表,可以取半个小时,一个小时,4个小时内的数据生成相应的中间表,这样要统计四个小时内的流量,只需要查询一次中间表即可,提高了统计的速度2、对比之前版本3.2版本中间表程序会读取sync_file下的日志文件生成A、F、T、U四种原始表的中间表。不同类型日志的中间表有不同的时间段,如下,中间表一览:3、中间表一览中间表命名规则:如:MidFGA1H20101026其中Mid表示该表为中间表,F表示该表为流量表的中间表,GA分别表示“组”和“具体应用”,1H表示中间表为一张1小时的中间表,20101026表示中间表的生成时间。结合前面的中间表一览,如果需要统计某个用户13:00至17:00这段时间的流量情况,需要查几次中间表?3、中间表一览(续)培训内容培训目的日志精简了解日志精简对哪些应用做了精简。五、日志精简•其他应用: