sql自动化检查和分析工具 之soar和soar-web 安装和使用体验

2020-04-07 20:04:25 来源:易采站长站 作者:王旭

为了研究一下sql自动化检查和分析工具,是否有网上介绍的好用,我在本地进行soarsoar-web的安装和使用。

初步的实验结果,总结如下:

1. 安装相对来说较为麻烦,特别是soar-web的依赖包安装,涉及到python pip相关组件的下载安装。

2. 启动soar-web会遇到一些奇怪问题,提示 “ImportError: No module named xxx“ 没有安装,但是通过python -m pip list检查是有安装成功的。

3. soar-web的启动脚本run.sh,不能正常启动;但是使用python./soar-web.py install却可以正常启动。

4. 数据库类型,只支持MySQL一种

后续:

最后,综合感觉,soar-web的功能,距离自动化SQL检查和优化,还有很大空间。接下来,我将继续调研和对比剩下两个工具:see 和 Yearning

1.see 工具

https://github.com/myide/see

2. Yearning 工具

https://github.com/cookieY/Yearning

一 、soar主要步骤,如下:

step 1: 下载安装包

# prepare dir and install
mkdir -p /opt/soft/soar && mkdir -p /opt/install/soar/{log,conf}
wget -O /opt/soft/soar/soar -c https://github.com/XiaoMi/soar/releases/download/0.11.0/soar.linux-amd64

step 2: 复制和安装文件

# install server
mv /opt/soft/soar/soar /opt/install/soar
 
# 目录介绍:
# 配置文件为yaml格式。一般情况下只需要配置online-dsn, test-dsn, log-output等少数几个参数。即使不创建配置文件SOAR仍然会给出基本的启发式建议。
# 默认文件会按照/etc/soar.yaml, ./etc/soar.yaml, ./soar.yaml顺序加载,
# 找到第一个后不再继续加载后面的配置文件。如需指定其他配置文件可以通过-config参数指定。
# 关于数据库权限online-dsn需要相应库表的SELECT权限,test-dsn需要root最高权限。
 
# 修改默认配置参数,如下
# 参考
# # 1. 修改soar.conf的基本参数
root >> cat > /opt/install/soar/conf/soar.yaml << EOF
# 线上环境配置
online-dsn:
 addr: CNT7XMYSQLD01:13306
 schema: sakila
 user: root
 password: 1t'sB1g3rt
 disable: false
# 测试环境配置
test-dsn:
 addr: CNT7XMYSQLD01:13307
 schema: test
 user: root
 password: 1t'sB1g3rt
 disable: false
# 是否允许测试环境与线上环境配置相同
allow-online-as-test: true
# 是否清理测试时产生的临时文件
drop-test-temporary: true
# 语法检查小工具
only-syntax-check: false
sampling-statistic-target: 100
sampling: false
# 日志级别,[0:Emergency, 1:Alert, 2:Critical, 3:Error, 4:Warning, 5:Notice, 6:Informational, 7:Debug]
log-level: 7
log-output: ${SOAR_LOG_DIR}/soar.log
# 优化建议输出格式
report-type: markdown
ignore-rules:
- ""
# 黑名单中的 SQL 将不会给评审意见。一行一条 SQL,可以是正则也可以是指纹,填写指纹时注意问号需要加反斜线转义。
blacklist: ${SOAR_CONF_DIR}/soar.blacklist
# 启发式算法相关配置
max-join-table-count: 5
max-group-by-cols-count: 5
max-distinct-count: 5
max-index-cols-count: 5
max-total-rows: 9999999
spaghetti-query-length: 2048
allow-drop-index: false
# EXPLAIN相关配置
explain-sql-report-type: pretty
explain-type: extended
explain-format: traditional
explain-warn-select-type:
- ""
explain-warn-access-type:
- ALL
explain-max-keys: 3
explain-min-keys: 0
explain-max-rows: 10000
explain-warn-extra:
- ""
explain-max-filtered: 100
explain-warn-scalability:
- O(n)
query: ""
list-heuristic-rules: false
list-test-sqls: false
verbose: true
root >> EOF
 step 3: 准备环境变量

# env parameter and path
echo '' >> /etc/profile && 
echo 'SOAR_HOME=/opt/install/soar' >> /etc/profile && 
echo 'SOAR_CONF_DIR=$SOAR_HOME/conf' >> /etc/profile && 
echo 'SOAR_LOG_DIR=$SOAR_HOME/log' >> /etc/profile && 
echo 'PATH=$PATH:$SOAR_HOME' >> /etc/profile && 
source /etc/profile
 step 4: 文件赋予权限

chmod -R 777 $SOAR_HOME/soar
 step 5: 检查soar全局配置生效

# 查看版本
soar -version
 
# 打印所有的启发式规则
soar -list-heuristic-rules
 
# 打印支持的报告格式
soar -list-report-types
            




              

微信扫一扫

易采站长站微信账号