提示
X
本案例来自tskb,请前往tskb修改源内容:立即前往
'>

检查二次开发配置是否正确

|

问题描述

二次开发配置是否正确

有效排查步骤

一、外置数据中心与MySql数据库关联
1.1配置数据库的连接信息

修改\ldb\bin\mapreduce\task\load_db\conf\sql.conf配置文件
(以笔者的外置数据中心安装路径为例:sql.conf文件在DataCenter目录下
C:\Program Files\Sangfor\DataCenter\ldb\bin\mapreduce\task\load_db\conf)
情景一:当外置数据中心和MySql服务器安装在同一台服务器上:db_host地址是127.0.0.1



情景二:当外置数据中心和MySql服务器安装分别在不同服务器上:db_host地址填写MySQL数据库服务器地址(案例中为10.2.13.22),前提保障两台服务器可以正常通讯。



db_host:MySql服务器地址
db_user:之前创建的具有写入权限的用户名
db_password:之前创建的具有写入权限用户的密码
db_name:创建的数据库名
db_port:连接MySql数据库的接口
db_type:数据库类型
1.2开启二次开发接口
在路径(安装目录\ldb\bin)下创建load_db_mode文件,文件名为load_db_mode,不带任何文件类型后缀。只有创建了这个文件,二次开发接口才会运行,才会将数据导入到数据库。
(以笔者安装路径为例:C:\Program Files\Sangfor\DataCenter\ldb\bin)
注意:
1.导入数据的编码格式:utf8编码;
2.可以存储ipv4和ipv6格式IP;
前32位为0xFFBF0000 表示存储的是ipv4,ipv4存储的位置是:最末的32位;其它的二进制表示ipv6;
3.只负责创建表和导入数据,删除表和删除数据,需要二次开发的人员自己处理;
4.确保外置数据中心存在日志,才会有数据导入到数据库,如果关联的是一个新安装尚未同步日志的外置数据中心,是无法看到任何数据表的。

二、已经导入的日志,如何删除表重新导入操作
第一步,删除已经导入到mysql数据的表文件(因为mysql删除操作方法各有不同,此处不列出)
第二步,删除深信服日志中心导入完成标记文件夹,重启所有服务
标记文件……\log_data\dc\devid_00000000\日期\A\load_db_action
各个表文件夹里面 load_db_XXXXX文件夹都是导入进度标记文件



系统会自动检测最近300天内没有导入标记时间的日志文件,再次导入

三、如何只导入部分表
导入日志的类别是按照dat的类别分类的,不做相关调整,默认是导入所有类别的日志。如果只需要导入部分日志到数据库中,请参照如下方式操作:
1、停掉日志中心所有服务
2、删除相关php文件
安装目录\ldb\bin\mapreduce\task\load_db下删除不需要表所对应的php文件:



比如不需要flux表,则删除table_flux.php文件。
注意:load_db_build.php和load_db_job.php为 接口文件,不能删除。
这样在MySql服务器上能够看到只需转换了需要的表,其他表不会转换,减轻了外置数据中心的转换压力和MySql服务器的存储负荷。
下面介绍每个php对应的内容
load_db_build.php和load_db_job.php为接口文件,不能删除;
table_action.php是支持导入行为日志-邮件、聊天、访问网站、post内容等表的php文件;
table_channel.php是支持导入通道流量日志表的php文件;
table_custom_log.php是支持导入操作日志,登录注销日志,在线用户日志,风险终端日志,网关杀毒日志,共享接入日志,移动终端管理日志等表的php文件;
table_domain_flux.php是支持导入域名流量日志表的php文件;
table_domain_time_count.php是支持导入域名时长日志表的php文件;
table_flux.php和table_flux_webapp.php是支持导入基本流量日志表的php文件;
table_group_flux.php和table_group_flux_webapp.php是支持导入基本的组的流量日志---相对于基本流量日志来说,就是不具体记录用户的信息,只记录到组表的php文件;
table_httptype_flux.php是支持导入协议维度的流量日志表的php文件;
table_ips.php是支持导入被入侵(被攻击)日志表的php文件;
table_singress.php是支持导入准入访问日志表的php文件;
table_time_count.php和table_time_count_webapp.php是支持导入基本上网时长日志表的php文件。
3、启动日志中心所有服务

解决方案

如上

操作影响范围

重启mysql,会短暂影响连接mysql,如果存在业务,建议在无业务的时候操作

建议与总结

为了避免由于MySQL配置导致的一些问题,建议在搭建MySQL时就调整my.ini配置文件:
修改MySql打开文件数限制参数
MySql的日志表采用了分区表,日志量越大分区数就越多,就有可能出现mysql错误号24,文件句柄限制报错:

(errcode: 24)"out of resources when opening file ./XXX.MYD"和(error: 24)"can`t creat file ./XX.frm"

导致日志表不能正常同步到mysql服务器,所以建议先修改下mysql配置,放大open_files_limit限制。

提示:不同版本的mysql修改配置可能不一样,可以在网上搜索open_files_limit具体的配置修改方法,修改结果根据show VARIABLES like "open_files_limit"进行进一步确认。

由于不同mysql版本修改参数方法不同,笔者介绍两种修改方法,仅供参考,如有其它方法欢迎分享:

方法一:编辑my.ini文件(linux下文件名是my.cnf ),在[mysqld]下添加open_files_limit 参数
[mysqld]
open_files_limit = 100000

重启数据库服务 service mysqld restart 。

查看服务器的打开文件数设定的值(用ulimit -n命令查看)


方法二:根据实际打开的文件数修改打开文件数的限制数
修改my.ini文件里的max_connections和table_open_cache的值,然后重起mysql 服务。可以通过命令行( show variables like '%open_files_limit%' )查看,
max_connections 和 table_open_cache 与 open_files_limit 的关系:
max_1 = 10 + max_connections + table_cache * 2;
max_2 = max_connections * 5;
max_3 = max_os_open_files;//操作系统单个进程最大允许打开文件句柄(文件描述符)。
open_files_limit = max( max_1, max_2 ) > max_3 ? max_3 : max ( max_1, max_2);
1)修改 max_connections = 8 ;table_open_cache = 1; 重起mysql 服务后,得出 open_files_limit = 40
2)使用命令行执行 select * from table_1, table_2, table_3, table_4, table_5,table_6, table_7, table_8, table_9, table_10,table_11, table_12, table_13, table_14, table_15,table_16, table_17, table_18, table_19, table_20, table_21; #每个table要足够大,使得这条语句可以执行一段时间。
这时在打开另外的命令行:show status like '%Open_files%';
就会显示 Open_files = 42
Open_files(42) 已经超过了open_files_limit(40)
3)运行一个应用程序(主要是准备表,插入数据操作),就会提示error:24的错误。
4)重新修改 max_connections = 100 ;table_open_cache = 512; 重起mysql 服务后得出 open_files_limit = 1134
5)重复第3步。不会出现error。
测试说明了通过修改这两个参数达到增加打开文件数的限制数。

AC11.0以上版本数据中心二次开发手册_20170217.doc

1.29 MB, 下载次数: 26

我要分享
文档编号: 216725
作者: admin
更新时间: 2023-01-05 17:29
适用版本: