Yearning和inception搭建MySQL审核平台

前言

采用开源Yearning和inception开源软件,搭建用于MYSQL审核及线上MYSQL语句更新的审核平台。

功能说明

Yearning: 基于Vue.js与Django的整套mysql-sql审核平台解决方案。提供基于Inception的SQL检测及执行,为Inception提供可视化。

Inception:是集审核、执行、回滚于一体的一个自动化运维系统,它是根据MySQL代码修改过来的,用它可以很明确的,详细的,准确的审核MySQL的SQL语句,它的工作模式和MySQL完全相同,可以直接使用MySQL客户端来连接,但不需要验证权限,它相对应用程序(上层审核流程系统等)而言,是一个服务器,在连接时需要指定服务器地址及Inception服务器的端口即可,而它相对要审核或执行的语句所对应的线上MySQL服务器来说,是一个客户端,它在内部需要实时的连接数据库服务器来获取所需要的信息,或者直接在在线上执行相应的语句及获取binlog等,Inception就是一个中间性质的服务。

操作系统及IP信息


编号


服务器名称


IP


操作系统


1


Centos_6


10.21.88.51 


CentOS release 6.8 (Final) 

各软件版本及安装路径


编号


软件


版本信息


安装路径


代码目录


1


python


3.6.6


/usr/local/python


2


Yearning


无(最新)


/opt/Yearning


3


Inception


2.1.50


/usr/local/inception


4


nginx


1.10.2


Yum安装


 /usr/share/nginx/html


5


mysql


5.7.21


/usr/local/mysql

安装过程

依赖包安装

yum -y install cmake bison  ncurses-devel gcc gcc-c++  openssl-devel

inception安装

cd /opt

wget https://github.com/mysql-inception/inception/archive/master.zipmkdir -p /usr/local/inception

mkdir -p /inception/{data,logs}

unzip master.zip -d /inception

cd /inception/inception-master

cmake -DWITH_DEBUG=OFF -DCMAKE_INSTALL_PREFIX=/usr/local/inception  -DMYSQL_DATADIR=/inception/data -DWITH_SSL=yes -DCMAKE_BUILD_TYPE=RELEASE -DWITH_ZLIB=bundled -DMY_MAINTAINER_CXX_WARNINGS="-Wall -Wextra -Wunused -Wwrite-strings -Wno-strict-aliasing  -Wno-unused-parameter -Woverloaded-virtual" -DMY_MAINTAINER_C_WARNINGS="-Wall -Wextra -Wunused -Wwrite-strings -Wno-strict-aliasing -Wdeclaration-after-statement"make && make install

配置

--编辑参数文件

vim /etc/inc.cnf

[inception]

general_log=1 #这个参数就是原生的MySQL的参数,用来记录在Inception服务上执行过哪些语句,用来定位一些问题等

general_log_file=/usr/local/inception/data/inception.log #设置general log写入的文件路径

port=6669   #Inception的服务端口

socket=/usr/local/inception/data/inc.socket #Inception的套接字文件存放位置

character-set-server=utf8 #mysql原生参数

#Inception 审核规则

inception_check_autoincrement_datatype=1 #当建表时自增列的类型不为int或者bigint时报错

inception_check_autoincrement_init_value=1 #当建表时自增列的值指定的不为1,则报错

inception_check_autoincrement_name=1 #建表时,如果指定的自增列的名字不为ID,则报错,说明是有意义的,给提示

inception_check_column_comment=1 #建表时,列没有注释时报错

inception_check_column_default_value=0 #检查在建表、修改列、新增列时,新的列属性是不是要有默认值

inception_check_dml_limit=1 #在DML语句中使用了LIMIT时,是不是要报错

inception_check_dml_orderby=1 #在DML语句中使用了Order By时,是不是要报错

inception_check_dml_where=1 #在DML语句中没有WHERE条件时,是不是要报错

inception_check_identifier=1 #打开与关闭Inception对SQL语句中各种名字的检查,如果设置为ON,则如果发现名字中存在除数字、字母、下划线之外的字符时,会报Identifier "invalidname" is invalid, valid options: [a-z,A-Z,0-9,_].

inception_check_index_prefix=1 #是不是要检查索引名字前缀为"idx_",检查唯一索引前缀是不是"uniq_"inception_check_insert_field=1  #是不是要检查插入语句中的列链表的存在性

inception_check_primary_key=1 #建表时,如果没有主键,则报错

inception_check_table_comment=0 #建表时,表没有注释时报错

inception_check_timestamp_default=0 #建表时,如果没有为timestamp类型指定默认值,则报错

inception_enable_autoincrement_unsigned=1 #自增列是不是要为无符号型

inception_enable_blob_type=0 #检查是不是支持BLOB字段,包括建表、修改列、新增列操作 默认开启

inception_enable_column_charset=0 #允许列自己设置字符集

inception_enable_enum_set_bit=0 #是不是支持enum,set,bit数据类型

inception_enable_foreign_key=0 #是不是支持外键

inception_enable_identifer_keyword=0 #检查在SQL语句中,是不是有标识符被写成MySQL的关键字,默认值为报警。

inception_enable_not_innodb=0 #建表指定的存储引擎不为Innodb,不报错

inception_enable_nullable=0 #创建或者新增列时如果列为NULL,不报错

inception_enable_orderby_rand=0 #order by rand时是不是报错

inception_enable_partition_table=0 #是不是支持分区表

inception_enable_select_star=0 #Select*时是不是要报错

inception_enable_sql_statistic=1 #设置是不是支持统计Inception执行过的语句中,各种语句分别占多大比例,如果打开这个参数,则每次执行的情况都会在备份数据库实例中的inception库的statistic表中以一录存储这次操作的统计情况,每次操作对应一条记录,这条记录中含有的信息是各种类型的语句执行次数情况。

inception_max_char_length=16 #当char类型的长度大于这个值时,就提示将其转换为VARCHAR

inception_max_key_parts=5 #一个索引中,列的最大个数,超过这个数目则报错

inception_max_keys=16 #一个表中,最大的索引数目,超过这个数则报错

inception_max_update_rows=10000 #在一个修改语句中,预计影响的最大行数,超过这个数就报错

inception_merge_alter_table=1 #在多个改同一个表的语句出现是,报错,提示合成一个

#inception 支持 OSC 参数

inception_osc_bin_dir=/user/bin #用于指定pt-online-schema-change脚本的位置,不可修改,在配置文件中设置

inception_osc_check_interval=5 #对应OSC参数--check-interval,意义是Sleep time between checks for --max-lag.

inception_osc_chunk_size=1000 #对应OSC参数--chunk-size

inception_osc_chunk_size_limit=4 #对应OSC参数--chunk-size-limit

inception_osc_chunk_time=0.1 #对应OSC参数--chunk-time

inception_osc_critical_thread_connected=1000 #对应参数--critical-load中的thread_connected部分

inception_osc_critical_thread_running=80 #对应参数--critical-load中的thread_running部分

inception_osc_drop_new_table=1 #对应参数--[no]drop-new-table

inception_osc_drop_old_table=1 #对应参数--[no]drop-old-table

inception_osc_max_lag=3 #对应参数--max-lag

inception_osc_max_thread_connected=1000 #对应参数--max-load中的thread_connected部分

inception_osc_max_thread_running=80 #对应参数--max-load中的thread_running部分

inception_osc_min_table_size=0 # 这个参数实际上是一个OSC的开关,如果设置为0,则全部ALTER语句都走OSC,如果设置为非0,则当这个表占用空间大小大于这个值时才使用OSC方式。单位为M,这个表大小的计算方式是通过语句:"select (DATA_LENGTH + INDEX_LENGTH)/1024/1024 from information_schema.tables where table_schema = 'dbname' and table_name = 'tablename'"来实现的

inception_osc_on=0 #一个全局的OSC开关,默认是打开的,如果想要关闭则设置为OFF,这样就会直接修改

inception_osc_print_none=1 #用来设置在Inception返回结果集中,对于原来OSC在执行过程的标准输出信息是不是要打印到结果集对应的错误信息列中,如果设置为1,就不打印,如果设置为0,就打印。而如果出现错误了,则都会打印

inception_osc_print_sql=1 #对应参数--print

#备份服务器信息,注意改成你的机器.用于回滚。

[email protected]

inception_remote_system_user=incep_rw

inception_remote_backup_port=3306inception_remote_backup_host=10.10.3.70inception_support_charset=utf8 #表示在建表或者建库时支持的字符集,如果需要多个,则用逗号分隔,影响的范围是建表、设置会话字符集、修改表字符集属性等

启动及检测

nohup /usr/local/inception/bin/Inception --defaults-file=/etc/inc.cnf  & netstat -tulpn | grep 6669       //inception的默认端口是6669/usr/local/inception/bin/mysql -uroot -h127.0.0.1 -P6669  //联接inception,和mysql一样的方式inception get variables;    //查看inception的所有参数

安装PYTHON

cd /usr/local/src

tar -xvf Python-3.6.6.tgz

mkdir -p /usr/local/python/3.6.6/lib

./configure --enable-shared --prefix=/usr/local/python/3.6.6 LDFLAGS="-Wl,-rpath /usr/local/python/3.6.6/lib"make && make install

 

软连接

cp /usr/bin/python /usr/bin/python2.6.6ln -fs /usr/local/python/3.6.6/bin/python3.6 /usr/bin/python

ln -fs /usr/local/python/3.6.6/bin/pip3 /usr/bin/pip

python -v

Yum修改

vi /usr/bin/yum

将头部 #!/usr/bin/python 修改为 #!/usr/bin/python2.6.6

Yearning安装

cd /opt

git clone https://github.com/cookieY/Yearning.git

编辑 Yearning/src/deploy.conf

[mysql]

db = 所创建的库名

address = 数据库地址

port = 数据库端口

password = 数据库密码

username = 数据库用户

 

[host]

ipaddress = 服务器ip地址   (消息推送时显示平台地址)

由于Inception 并不原生支持pymysql,所以需更改pymysql相关源码 注: 在install 文件夹下已经修改的connections.py 和 cursors.py 直接替换即可

pip3 install -r requirements.txt  #安装相应python依赖库

python3 manage.py makemigrations core && python3 manage.py migrate core #初始化数据库

echo "from core.models import Account;Account.objects.create_user(username='admin', password='Yearning_admin', group='admin',is_staff=1)" | python manage.py shell #添加初始化用户

echo "from core.models import grained;grained.objects.get_or_create(username='admin', permissions={'person': [], 'ddl': '1', 'ddlcon': [], 'dml': '1', 'dmlcon': [], 'dic': '1', 'diccon': [], 'dicedit': '0', 'user': '1', 'base': '1', 'dicexport': '0', 'query': '1', 'querycon': []})" | python manage.py shell #初始化权限

echo "from core.models import globalpermissions; globalpermissions.objects.get_or_create(authorization='global', inception={'host': '', 'port': '', 'user': '', 'password': '', 'back_host': '', 'back_port': '', 'back_user': '', 'back_password': ''}, ldap={'type': '', 'host': '', 'sc': '', 'domain': '', 'user': '', 'password': ''}, message={'webhook': '', 'smtp_host': '', 'smtp_port': '', 'user': '', 'password': '', 'to_user': '', 'mail': False, 'ding': False}, other={'limit': '', 'con_room': ['AWS', 'Aliyun', 'Own', 'Other'], 'foce': '', 'multi': False, 'query': False, 'sensitive_list': [], 'sensitive': ''})" | python manage.py shell #初始化动态配置信息

cp -rf Yearning/webpage/dist/* $NGINX_HOME/html/   #复制编译好的静态文件到nginx html目录下(如自行更改Nginx静态路径地址则将静态文件复制到对应静态文件目录下)

systemctl start nginx  #启动nginx

$PYTHON_HOME/bin/gunicorn  settingConf.wsgi:application -c gunicorn.conf #启动django

默认账号: admin  密码:Yearning_admin

使用说明

需要先行创建用户(Yearning的权限分为管理员及使用人两个选项,缺省只有admin管理员账号,用于审核,请创建:使用人账号用于提交的MYSQL审核),输入用户名密码登录:

用户
登录后点击“管理”,如下图红色圆圈部分

点击“用户”进行用户 添加。(例:如下添加了一个appuser使用人用户)


数据库设置
(配置用于连接审核的数据库信息,如下设置了一个测试连接)


设置
(inception相关设置,其它设置略)

如上相关“管理”下的“用户”“数据库”“设置”后,就可以进行数据审核操作了。

工单的提交和审核

工单提交

采用使用者登录后创建工单,如下图:(信息填写好后,先检测无误后提交)

审核(采用管理员账户登录,进入如下界面审核)

点击待审核对应工单的“操作”进入如下界面:

执行操作既完成审核操作。

回滚操作:(管理员执行,且必须进行inception备份服务器的相关设置)

工单审批后,在如下图位置有“查看回滚语句”,进入如下界面后点击提交工单,再次审批既完成回滚操作。

    以上为Yearning和inception搭建的MySQL审核平台,及简单使用介绍,关于Yearning的详细使用可以参考其官方文档。

原文地址:http://blog.51cto.com/iiiii/2152276

时间: 2024-10-31 10:28:18

Yearning和inception搭建MySQL审核平台的相关文章

MySQL集群---②Windows平台搭建MySQL CLUSTER集群

本文将通过两台电脑来简单介绍一下Windows平台如何搭建MySQL集群. MySQL集群支持多台电脑,本文搭建的MySQL集群以两台机子为例,其中一台(IP为192.168.24.33)部署管理节点.数据节点和SQL节点,另一台(IP为192.168.24.82)部署数据节点和SQL节点. 实际应用中,不要将管理节点跟数据节点部署到一台机子上,因为如果数据节点宕机会导致管理节点不可用,同时整个MySQL群集也就都不可用了.所以一个MySQL群集理想情况下至少有三台服务器,将管理节点单独放到一台

在CentOS6.5上搭建RSYSLOG & MySQL & LogAnalyzer平台

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正.如有不明白的地方,愿可一起探讨. 安装apache 在CentOS6.5上默认情况下,已经安装了Apache.如果没有安装,进行如下步骤进行安装: # yum -y install httpd 启动httpd服务 # service httpd start 设置httpd服务开机启动 # chkconfig httpd on 测试httpd 在浏览器中键入你服务器的IP地址,如得到下面结果证明测试成功 安装MySQL 安装mys

MySQL Pk10平台搭建数据库常用命令

MySQL Pk10平台搭建[企鹅21717-93408]是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一. MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性

window平台如何搭建Mysql集群

为了提高系统的可用性实现系统7*24小时运行的目标,我们的项目搭建了一个mysql集群来增加系统的可靠性,下面说一下项目中mysql集群的搭建过程. 先谈谈对于搭建各种集群.分布式.负载均衡的理解,一个高可用.高性能.伸缩性强的分布式系统并不是一蹴而就,一下搭出这样的架构也有点不可能,至少个人觉得对于系统的运行状况没有一个可靠地保证,你不能保证架构中不会出现什么纰漏之处,因此架构师也是一点一点成长起来的,在小的架构解决不了目前的问题时.在不断的高并发.每年的双十一等这样的问题中成长起来的. 在我

使用python一步一步搭建微信公众平台(一)

最近无聊,想玩玩微信的公众平台,后来发现乐趣无穷啊~ 使用的工具,python 新浪SAE平台,微信的公众平台 你需要先在微信的公众平台与新浪SAE平台上各种注册,微信平台注册的时候需要你拍张手持身份证的照片,还有几天的审核期 微信公众平台:http://mp.weixin.qq.com 新浪SAE:http://sae.sina.com.cn/ 等待微信公众审核通过后,登录公众平台后,点击高级功能.将会看到需要提供一个接入信息: 微信接口配置 那么我们需要一个网址作为接口(这时就需要SAE上搭

【译文】用Spring Cloud和Docker搭建微服务平台

by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-microservices.html This blog series will introduce you to some of the foundational concepts of building a microservice-based platform using Spring Cloud

搭建mysql主主

实验环境 192.168.137.11 (lamp) 和192.168.137.12(mysql) 先搭建主从,在搭建主主. 1.搭建环境 根据auto_lamp.tar 里面的安装包和脚本来搭建. 192.168.137.11  运行脚本auto_lamp_3.0.sh 选择7自动安装lamp平台. 192.168.137.11  运行脚本auto_lamp_3.0.sh 选择4自动安装mysql平台. 2.配置mysql主从. a.    在192.168.137.11上. [[email 

CentOS6.5 搭建phpMyAdmin管理平台

实验需求:在服务器本机搭建mysql图形管理工具 1.简单部署LAMP平台 # yum -y install httpd mysql mysql-server php php-mysql php-pdo # rpm -ivh php-mbstring-5.3.3-26.el6.x86_64.rpm       //此包安装光盘没有,需自己下载 2.修改httpd配置文件,启动服务 # vim /etc/httpd/conf/httpd.conf -- ServerName  localhost.

源码包编译搭建LNMP+FastCGI平台

源码包编译搭建LNMP+FastCGI平台 搭建环境: CentOS 6.5 软件包版本: nginx-1.2.0.tar.gz mysql-5.5.13.tar.gz php-5.4.9.tar.gz PHP依赖包: mhash-0.9.9.9.tar.gz libiconv-1.13.tar.gz libmcrypt-2.5.8.tar.gz libevent-2.0.21-stable.tar.gz IP地址设置: server:10.21.1.80 client:10.21.1.81 一