开源SQL审核平台——Archery 安装、部署心得
v1.2.0 → v1.3.8
0.软件版本及项目地址
- python 3.6.5
- MySQL 5.7
- Inception 2.1.15(闭源前最后公布版本)
- 或分支https://github.com/hhyo/inception
- Percona Toolkit 3.0.13
- archery
- inception
- SQLAdvisor
- SOAR
- SQLTuning介绍
- SQLTuning 下载
1.安装python venv环境
1.1.安装 python36
yum install -y python36 python36-devel python-devel openldap-devel
cd /tmp
wget https://bootstrap.pypa.io/get-pip.py
python3.6 get-pip.py
1.2.创建 Python venv 环境(Python>=3.6.5,建议使用虚拟环境 )
# 创建 vevn
pip3 install virtualenv
cd /opt/
virtualenv venv4archery --python=python36
source /opt/venv4archery/bin/activate
which mysql_config #确认命令在 $PATH 中,否则安装包时报错
cd /opt
# 安装 gcc
yum install -y gcc
# 下载 archery 源码
wget https://github.com/hhyo/archery/archive/v1.3.8.tar.gz
tar -zxvf v1.3.8.tar.gz
cd archery138/
pip3 install -r requirements.txt -i https://mirrors.ustc.edu.cn/pypi/web/simple/
1.3.报错处理参考
1.3.1.mysql_config 找不到报错
1.3.2.openldap-devel 包未安装报错
2.组件安装配置
2.1.MySQL 安装、配置
MySQL 安装略
连接信息:
archery:
- ip:127.0.0.1
- port:3306
inception:
- ip:127.0.0.1
- port:3307
2.2.数据库账号授权
# 创建 archery 1.38 版本数据库
create database archery138 charset utf8mb4;
# 创建 archery 后台数据库账号
create user archery@'127.0.0.1' identified by 'xxxxxx';
grant all on archery138.* to archery@'127.0.0.1';
# 创建线上 v1.2.0 版本数据库恢复库
create database archery120to138 charset utf8mb4;
# 创建 inception 备份库连接账号
create user incep@'127.0.0.1' identified by 'xxxxxx';
grant all on *.* to incep@'127.0.0.1';
flush privileges;
2.3.inception 安装、配置、启动
inception 编译安装略
inception 配置文件
[inception]
general_log=1
general_log_file=inception.log
port=6669
socket=/tmp/inc.socket
character-set-client-handshake=0
character-set-server=utf8
inception_remote_system_password=123456
inception_remote_system_user=incep
inception_remote_backup_port=3306
inception_remote_backup_host=127.0.0.1
inception_support_charset=utf8,utf8mb4
inception_osc_on=ON
inception_osc_bin_dir=/usr/local/bin
inception_enable_nullable=0
inception_check_primary_key=1
inception_check_column_comment=1
inception_check_table_comment=1
inception_osc_min_table_size=1
inception_osc_chunk_time=0.1
inception_ddl_support=1
inception_enable_blob_type=1
inception_check_column_default_value=1
# 启动 inception
inception --defaults-file=incep.cnf &
2.4.Percona-toolkit 安装
cd /tmp
wget -r -np -nd --accept=gz --no-check-certificate https://www.percona.com/downloads/percona-toolkit/3.0.13/binary/tarball/percona-toolkit-3.0.13_x86_64.tar.gz
tar zxvf percona-toolkit-3.0.13_x86_64.tar.gz
cp percona-toolkit-3.0.13/bin/* /usr/local/bin/
2.5.Nginx 安装、配置
yum install -y nginx
vim /etc/nginx/conf.d/nginx.conf
server{
listen 9123; #监听的端口
server_name archery138;
proxy_read_timeout 600s; #超时时间与gunicorn超时时间设置一致,主要用于在线查询
location / {
proxy_pass http://127.0.0.1:8888;
proxy_set_header Host $host:9123; #解决重定向404的问题
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /static {
alias /opt/archery138/archery/common/static; #此处指向settings.py配置项STATIC_ROOT目录的绝对路径,用于nginx收集静态资源
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
2.6.上传 archery 第三方工具
cd /opt/
mkdir archery_tools
cd /opt/archery_tools
rz soar
2.7. SQLAdvisor 安装
git clone https://github.com/Meituan-Dianping/SQLAdvisor.git
yum install -y cmake libaio-devel libffi-devel glib2 glib2-devel gcc-c++ bison
yum install -y Percona-Server-shared-56 [ --enablerepo=Percona56 ]
# 如果不能安装 Percona-Server-shared-56 报错找不到包,那么需要执行下面语句
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
cd SQLAdvisor
cmake -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=debug -DCMAKE_INSTALL_PREFIX=/usr/local/sqlparser ./
make && make install
cd sqladvisor
cmake -DCMAKE_BUILD_TYPE=debug ./
make
cp /opt/archery_tools/SQLAdvisor/sqladvisor/sqladvisor /opt/archery_tools/
yes | rm /opt/archery_tools/SQLAdvisor -r
# 在本路径下生成一个sqladvisor可执行文件,这即是我们想要的。
/opt/archery_tools/sqladvisor --help
2.7.1.报错处理
- 安装 Percona-Server-shared-56 报错,与 MariaDB-common-10.1.37-1.el7.centos.x86_64 包有冲突
- 因为机器部署时使用的 MariaDB-common-10.1.37-1.el7.centos.x86_64 包安装的 zabbix-agent
- 解决办法:从测试环境拷贝 libmysqlclient.so.18.1.0 文件,再创建软链接文件
2.8. SchemaSync 安装
cd /opt/archery_tools/
virtualenv venv4schemasync --python=python2
source venv4schemasync/bin/activate
git clone https://github.com/hhyo/SchemaSync.git
git clone https://github.com/hhyo/SchemaObject.git
cd SchemaObject && python setup.py install
cd ../SchemaSync && python setup.py install
yum install -y python-devel
pip install mysql-python
schemasync --version
which schemasync
cd ..
ln -s /opt/archery_tools/venv4schemasync/bin/schemasync schemasync
3.安装 archery 环境
3.1. 1.2.步已下载源码,略过
3.2.修改 archery/settings.py 文件 DATABASES 配置项
vim /opt/archery138/archery/settings.py
# 该项目本身的mysql数据库地址
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'archery138', #archery信息库,执行py脚本生成
'USER': 'archery', #archery 特权登录用户,执行py脚本生成
'PASSWORD': 'xxx', #archery 特权登录用户密码
'HOST': '10.xx.xx.xx', #archery 数据库ip
'PORT': '3306', #archery 数据库端口
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
'charset': 'utf8mb4' #archery 数据库字符集,默认为utf8mb4
},
'TEST': {
'NAME': 'test_archery',
'CHARSET': 'utf8', #archery 数据库字符集,默认为utf8
},
}
}
# LDAP
ENABLE_LDAP = False # 测试时可以设置为 false,生产启用 LDAP 时开启
if ENABLE_LDAP:
import ldap
from django_auth_ldap.config import LDAPSearch
AUTHENTICATION_BACKENDS = (
'django_auth_ldap.backend.LDAPBackend', # 配置为先使用LDAP认证,如通过认证则不再使用后面的认证方式
'django.contrib.auth.backends.ModelBackend', # django系统中手动创建的用户也可使用,优先级靠后。注意这2行的顺序
)
AUTH_LDAP_SERVER_URI = "ldap://xx.xx.xx.com"
AUTH_LDAP_BIND_DN = "CN=auth,CN=Users,DC=xx,DC=xx,DC=com"
AUTH_LDAP_BIND_PASSWORD = "xxxxxxxxxxxxxxx"
AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=xxx,dc=xx,dc=xxx,dc=com",ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)")
AUTH_LDAP_ALWAYS_UPDATE_USER = True # 每次登录从ldap同步用户信息
AUTH_LDAP_USER_ATTR_MAP = { # key为archery.sql_users字段名,value为ldap中字段名,用户同步信息
"username": "xxxxxxxxxxxx",
"display": "cn",
"email": "mail"
}
3.3.数据库初始化
cd /opt/archery138/
python36 manage.py makemigrations sql #这一步如果遇到报错可忽略
python36 manage.py migrate
3.4.创建管理用户
cd /opt/archery138/
python3 manage.py createsuperuser
Username: archery_admin # 手动输入
Email address: dba-notice@ybm100.com
Password: xxxx #输入密码
Password (again): xxxxx #确认密码
Superuser created successfully.
3.5.调试启动(runserver 方式)
source /opt/venv4archery/bin/activate
python3 manage.py runserver 0.0.0.0:9123 --insecure &
3.6.安装gunicorn
- venv中已经安装,无需额外安装
3.7.gunicorn + nginx 启动(正式环境启动方式)
cd /opt/archery138/
source /opt/venv4archery/bin/activate
sh startup.sh &
3.8.一键启动脚本,启动 archery
#!/bin/bash
inception --defaults-file=/opt/inception/inc.cnf &
source /opt/venv4archery/bin/activate
cd /opt/archery138
python3 /opt/archery138/manage.py runserver 0.0.0.0:9123 --insecure &
sh /opt/archery138/startup.sh &
4.数据库升级
4.1.导出线上库
# 10.xx.xx.xx
sudo su -
mysqldump -S xx/mysql.sock --single-transaction --master-data=2 --set-gtid-purged=OFF db_ops > db_ops.sql
4.2.在目标实例上恢复数据
# 10.xx.xx.xx
sudo su -
mysql -S xx/mysql.sock db_ops <db_ops.sql
4.3.执行数据库升级脚本
# 10.xx.xx.xx
sudo su -
cd /opt/archery138/src/init_sql
mysql -h 10.xx.xx.xx -P3306 -uxx -p db_ops < v1.2.0_1.3.0.sql
mysql -h 10.xx.xx.xx -P3306 -uxx -p db_ops < v1.3.0_1.3.2.sql
mysql -h 10.xx.xx.xx -P3306 -uxx -p db_ops < v1.3.6_v1.3.7.sql
4.4.导出恢复库升级数据,并导入 archery 数据库
# 10.xx.xx.xx
sudo su -
mysqldump -S xx/mysql.sock --single-transaction --master-data=2 --set-gtid-purged=OFF --no-create-info db_ops > updated_db_data.sql.bak
mysql -h 10.xx.xx.xx -P3306 -uxx -p archery < updated_db_data.sql,bak
5.配置archery
“系统管理”-->“配置项管理”
Inception配置
——填写完成后点击测试,通过后保存
INCEPTION_HOST 10.xx.xx.xx
INCEPTION_PORT 6669
REMOTE_BACKUP_HOST 10.xx.xx.xx
REMOTE_BACKUP_PORT 3306
REMOTE_BACKUP_USER incep
REMOTE_BACKUP_PASSWORD xxxx
功能模块配置
SQL****查询
QUERY ON
SQL优化
SQLADVISOR_PATH /opt/archery_tools/sqladvisor
SOAR_PATH /opt/archery_tools/soar
SOAR_TEST_DSN xxx:xxx@10.xx.xx.xx:3306/archery
通知配置
——填写完成后点击测试,通过后保存
MAIL ON
MAIL_SSL ON
MAIL_SMTP_SERVER xxx
MAIL_SMTP_PORT xxx
MAIL_SMTP_USER xxx
MAIL_SMTP_PASSWORD xxx
DDL_NOTIFY_AUTH_GROUP dinglu@ybm100.com
DING ON
其他配置
SCHEMASYNC /opt/archery_tools/venv4schemasync/bin/schemasync
6.Bug修复
6.1. vim sql/instance.py
如果在archery平台上使用schemasync进行表对比的时候出现问题,可能是登录mysql的密码中出现了特殊字符,使得schemasync
无法识别这个密码,可以将含有特殊字符的密码改成不含有特殊字符的密码,问题就可以解决了,或者是修改instance.py 文件中的代码
修改前:
command = path + ' %s --output-directory=%s --tag=%s \
mysql://%s:%s@%s:%d/%s mysql://%s:%s@%s:%d/%s'
修改后:
command = path + " %s --output-directory=%s --tag=%s \
mysql://%s:'%s'@%s:%d/%s mysql://%s:'%s'@%s:%d/%s"
# 将其中的密码用单引号引起来就可以了
开源SQL审核平台——Archery 安装、部署心得的更多相关文章
- SQL审核平台-Yearning安装部署实践
相关文档: https://guide.yearning.io/ yearning简介 http://python.yearning.io/install/ yearning安装 Yearning ...
- SQL审核平台Yearning部署
SQL审核平台Yearning部署 Yearning优势: Yearning SQL 审计平台 基于Vue.js与Django的整套mysql-sql审核平台解决方案.提供基于Inception的S ...
- Yearning v1.3.0 发布,Web 端 SQL 审核平台
企业级MYSQL web端 SQL审核平台. Website 官网 www.yearning.io Feature 功能 数据库字典自动生成 SQL查询 查询工单 导出 自动补全,智能提示 查询语句审 ...
- 基于Inception搭建MySQL SQL审核平台Yearing
基于Inception搭建MySQL SQL审核平台Yearing Inception 1. Inceptionj简介 2. Inception安装 2.1 下载和编译 2.2 启动配置 Yearni ...
- SQL Server Compact免安装部署
原文:SQL Server Compact免安装部署 情况 应用程序中的EF使用了SQL Server Compact,打包部署到客户机器上后提示数据库连接异常,信息类似”配置节“.”Provider ...
- Entity Framework6使用SQL Server Compact免安装部署
原文:Entity Framework6使用SQL Server Compact免安装部署 使用Nuget安装以下包: EntityFramework.6.0.2 EntityFramework.Sq ...
- inception+archery SQL审核平台
关闭防火墙和selinux 宿主机安装mysql,创建archery数据库,并给所有权限,允许远程连接到该数据库 grant all privileges on *.* to 'root'@'%' i ...
- Yearning 介绍(SQL审核平台)
介绍 Yearning SQL 审计平台 基于Vue.js与Django的整套mysql-sql审核平台解决方案.提供基于Inception的SQL检测及执行. GitHub:https://gith ...
- sql审核工具调研安装-sqlAdvisor和soar
sql审核工具调研 基于soar的sql审核查询平台: https://github.com/beiketianzhuang/data-platform-soar 1.美团工具sqlAdvisor工 ...
随机推荐
- 简化网站开发:SiteMesh小工具
在一个站点的制备,几乎所有的页面将具有相同的部分.导航栏例如,顶,每一页都是一样的,在底部的版权声明,每一页还都是一样的. 因此,在顶部导航栏的准备.第一种方法是直接复制的所有导航栏的代码,这种方法是 ...
- windows添加本地文件托管到新增github库
新增repositoy.登录gitHub,并点击“New Reposoitory” 写入名字 之后点击“create resposity” \ 按照上图中的步骤可以完成.以下为完成步骤. 2. 在本 ...
- 精装友好联络算法实现借壳和RI
精装友好联络会 注册算法分析: 1. 许可证由三部分组成. 2. 的登记号的第一部分是顺序编号0x6d模 3. 登记代码的第二部分: 先将订单号与0XB25F1异或,将异或后的结果转换成十进制字符串 ...
- 在mac中如何清除.svn文件
有些时候在开发一个应用程序我们需要用到版本控制,它可以帮助我们很好的控制我们程序的代码,尤其在多人开发的时候,优点尤为突出. 但是在有些情况下我们又认为这些.svn真的很麻烦,那么我们怎么把他们一下子 ...
- Mvvm Light Toolkit 入门
原文:Mvvm Light Toolkit 入门 前言 之前学习UWP的时候就一直看到有关MVVM的资料但是一直没有系统的去学,最近正好有时间,特地来攻破这个点,顺便学习一下VS与GitHub的链接和 ...
- 数据绑定(二)把控件作为Binding源
原文:数据绑定(二)把控件作为Binding源 下面的代码把一个TextBox的Text属性关联在了Slider的Value属性上 <Window x:Class="WpfApplic ...
- ArchLinux 安装记录
主要步骤 下载镜像及刻录 开机安装 联网 编辑镜像站文件 分区 格式化分区并挂载 安装基本操作系统 配置基础操作系统 引导系统 用户管理 网络配置 安装Gonme桌面环境 其他优化 开始准备 下载镜像 ...
- kafka 遇到的错
D:\cluster\kafka_2.->.\bin\windows\kafka-topics.bat --create --zookeeper localhost: --replication ...
- C# ACCESS 修改表记录提示"UPDATE 语句语法错"问题
错误的sql 语句如下: sqlStr = "update tb_userInfo set passWord='" + pw + "' where userName=' ...
- Windows下libevent C++封装类实现
题记 windows平台下对于服务器高并发的网络模型选型中,使用libevent是个不错的选择. 本文的背景基于:国内博客对于libevent大多介绍linux实现,大多是c语言的实现,Windows ...