码迷,mamicode.com
首页 > 数据库 > 详细

sequoiasql-mysql 部署审计插件

时间:2020-03-13 10:17:20      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:shel   port   出错   plugin   direct   密文   定时任务   red   mit   

本部署动作,均是在sdbadmin 用户下执行

增加审计功能

首先拷贝审计的 plugin 插件

cp /opt/sequoiasql/mysql/tools/lib/server_audit.so /opt/sequoiasql/mysql/lib/plugin/

获取当前的环境信息

获取当前机器的 sequoiasql-mysql 实例,并且确定其具体路径,例如

> sdb_sql_ctl listinst
NAME       SQLDATA                                  SQLLOG                                  
my1        /data/ssd/sdb/mysql/inst/3309            /opt/sequoiasql/mysql/my1.log  

这台服务器的sequoiasql-mysql 实例的具体路径就是 /data/ssd/sdb/mysql/inst/3309,对应这个实例的配置文件为 /data/ssd/sdb/mysql/inst/3309/auto.cnf。

Note:
my1 是作者当前服务器的sequoiasql-mysql 实例的名字,大家记住这个名字,后续启动停止重启都需要使用到这个 my1 名字

为sequoiasql-mysql 配置审计日志

在实例的数据目录下增加一个保存审计日志的目录

mkdir -p /opt/sequoiasql/mysql/database/auditlog/

打开 auto.cnf 配置文件,在 [mysqld] 参数下增加以下内容

# 加载审计插件
plugin-load=server_audit=server_audit.so
# 审计记录的审计,建议只记录需要同步的DCL和DDL操作
server_audit_events=CONNECT,QUERY_DDL,QUERY_DCL
# 开启审计
server_audit_logging=ON
# 审计日志路径及文件名
server_audit_file_path=/opt/sequoiasql/mysql/database/auditlog/server_audit.log
# 强制切分审计日志文件
server_audit_file_rotate_now=OFF
# 审计日志文件大小10MB,超过该大小进行切割,单位为byte
server_audit_file_rotate_size=10485760
# 审计日志保留个数,超过后会丢弃最旧的
server_audit_file_rotations=999
# 输出类型为文件
server_audit_output_type=file
# 限制每行查询日志的大小为100kb,若表比较复杂,对应的操作语句比较长,建议增大该值
server_audit_query_log_limit=102400

重启 sequoiasql-mysql 实例

sdb_sql_ctl restart my1

检查 /opt/sequoiasql/mysql/database/auditlog/ 路径是否生成了新的审计日志。如果没有生成 server_audit.log 审计日志,大家自己仔细梳理前面步骤。

配置解析审计日志及同步程序

本解析审计日志及同步程序,由Python 语言编写,兼容 Python 2.* 版本,暂时不支持Python 3.* 版本。

切换到工具所在路径 /opt/sequoiasql/mysql/tools/metaSync

cd /opt/sequoiasql/mysql/tools/metaSync

拷贝一个配置文件

cp config.sample config

修改config 配置文件里面的内容

[mysql]
# mysql节点主机名,只能填主机名
hosts = sdb1,sdb2,sdb3
# mysql服务端口
port = 3306
# 密码类型,0代表密码为明文,1代表密码为密文,初次使用配置为 0,密码使用明文,工具启动后会自动加密并更新此处配置
mysql_password_type = 0
# mysql用户
mysql_user = root
# mysql密码
mysql_password = mysql
# mysql安装目录
install_dir = /opt/sequoiasql/mysql
# 审计日志存储目录
audit_log_directory = /opt/sequoiasql/mysql/database/auditlog
# 审计日志文件名
audit_log_file_name = server_audit.log

[execute]
# 同步间隔,取值范围:[1-3600]
interval_time = 2
# 出错时是否忽略,如为 false,会一直重试
ignore_error = true
# 出错的情况下,忽略前的重试次数,取值范围:[1-1000]
max_retry_times = 5

直接拷贝程序 log 输出配置文件

cp log.config.sample log.config

启动程序

/usr/bin/python /opt/sequoiasql/mysql/tools/metaSync/meta_sync.py >/dev/null 2>&1 &

为系统设置一个周期性定时执行的任务,以防止程序宕机,或者服务器重启后审计日志解析及同步程序无法自动启动。

crontab -e

在里面增加以下内容

*/1 * * * * /usr/bin/python /opt/sequoiasql/mysql/tools/metaSync/meta_sync.py >/dev/null 2>&1 &

重置 metaSync 同步程序

如果因为一些特殊原因,例如通过连接 Keepalived + Nginx 虚拟IP 地址,然后再建表,会导致 metaSync 程序无法正常同步,并且会造成 metaSync 程序一直处于 ERROR 状态。
此时就需要对 metaSync 程序进行重置。

重置方式如下

1 暂时关闭系统的 crontab 定时任务

直接执行 crontab -e 命令,然后把启动 metaSync 程序的命令删除即可。

2 暂停 metaSync 程序

快速删除 metaSync 进程,可以使用以下命令

ps -ef | grep python | grep meta_sync.py | awk -F ' ' '{print $2}' | xargs kill -15

3 停止各个服务器上的 MySQL 实例,例如

sdb_sql_ctl stop my1

4 删除各个服务器上的 MySQL 实例上的审计日志,例如

rm -rf /opt/sequoiasql/mysql/database/auditlog/server_audit.log

5 删除各个服务器上的 metaSync 程序的状态文件,例如

rm -rf /opt/sequoiasql/mysql/tools/metaSync/sync.stat

6 删除metaSync 原来的运行日志

rm -rf /opt/sequoiasql/mysql/tools/metaSync/logs/run.log

7 以上步骤全部执行完毕后,就可以重新启动MySQL 实例,重启metaSync 程序。大家千万别忘记了设置 crontab -e 定时任务。

更多的详细信息,可以参考 /opt/sequoiasql/mysql/tools/metaSync/README.md 介绍文件。

sequoiasql-mysql 部署审计插件

标签:shel   port   出错   plugin   direct   密文   定时任务   red   mit   

原文地址:https://www.cnblogs.com/chenfool/p/sequoiasqlmysql-bu-shu-shen-ji-cha-jian.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!