目录

v1.2.0 → v1.3.8

0.软件版本及项目地址

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

访问 http://10.xx.xx.xx:9123

“系统管理”-->“配置项管理”

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 安装、部署心得的更多相关文章

  1. SQL审核平台-Yearning安装部署实践

    相关文档: https://guide.yearning.io/ yearning简介 http://python.yearning.io/install/  yearning安装 Yearning ...

  2. SQL审核平台Yearning部署

    SQL审核平台Yearning部署  Yearning优势: Yearning SQL 审计平台 基于Vue.js与Django的整套mysql-sql审核平台解决方案.提供基于Inception的S ...

  3. Yearning v1.3.0 发布,Web 端 SQL 审核平台

    企业级MYSQL web端 SQL审核平台. Website 官网 www.yearning.io Feature 功能 数据库字典自动生成 SQL查询 查询工单 导出 自动补全,智能提示 查询语句审 ...

  4. 基于Inception搭建MySQL SQL审核平台Yearing

    基于Inception搭建MySQL SQL审核平台Yearing Inception 1. Inceptionj简介 2. Inception安装 2.1 下载和编译 2.2 启动配置 Yearni ...

  5. SQL Server Compact免安装部署

    原文:SQL Server Compact免安装部署 情况 应用程序中的EF使用了SQL Server Compact,打包部署到客户机器上后提示数据库连接异常,信息类似”配置节“.”Provider ...

  6. Entity Framework6使用SQL Server Compact免安装部署

    原文:Entity Framework6使用SQL Server Compact免安装部署 使用Nuget安装以下包: EntityFramework.6.0.2 EntityFramework.Sq ...

  7. inception+archery SQL审核平台

    关闭防火墙和selinux 宿主机安装mysql,创建archery数据库,并给所有权限,允许远程连接到该数据库 grant all privileges on *.* to 'root'@'%' i ...

  8. Yearning 介绍(SQL审核平台)

    介绍 Yearning SQL 审计平台 基于Vue.js与Django的整套mysql-sql审核平台解决方案.提供基于Inception的SQL检测及执行. GitHub:https://gith ...

  9. sql审核工具调研安装-sqlAdvisor和soar

    sql审核工具调研  基于soar的sql审核查询平台: https://github.com/beiketianzhuang/data-platform-soar 1.美团工具sqlAdvisor工 ...

随机推荐

  1. 编写可移植C/C++程序的要点(12条)

    1.分层设计,隔离平台相关的代码.就像可测试性一样,可移植性也要从设计抓起.一般来说,最上层和最下层都不具有良好的可移植性.最上层是GUI,大多数GUI都不是跨平台的,如Win32 SDK和MFC.最 ...

  2. Python 实现 淘宝秒杀 聚划算 自己主动提醒 源代码

    说明 本实施例可以监视一起购买的成本button,当警报济济一堂花费时间整点到达(音频文件自定义位置)而自己主动跳出页面(URL习惯). 同一时候还能够通过命令行參数自己定义刷新间隔时间(默认0.1s ...

  3. C#彩色艺术化二维码样式设计(仅说思路)

    原文:C#彩色艺术化二维码样式设计(仅说思路) 仅讲思路,想要源码的请绕道.   一.样式 1.先看各种二维码的样式吧: (1)最简单的样式--黑白样式,如下图: 图1  最平常见到的二维码样式(如果 ...

  4. DataTable转换为Entity(反射&&泛型)

    public static IEnumerable<T> Parse<T>(IEnumerable<DataRow> rows) where T : class, ...

  5. OnPropertyChanged的使用

    #region INotifyPropertyChanged         public event PropertyChangedEventHandler PropertyChanged;     ...

  6. DOM解析xml实现读、写、增、删、改

    qt提供了三种方式解析xml,不过如果想实现对xml文件进行增.删.改等操作,还是DOM方式最方便. 项目配置 pro文件里面添加QT+=xml include <QtXml>,也可以in ...

  7. WPF MVVM+EF增删改查 简单示例(二) 1对1 映射

    WPF MVVM+EF增删改查 简单示例(一)实现了对学生信息的管理. 现在需求发生变更,在录入学生资料的时候同时需要录入学生的图片信息,并且一名学生只能有一张图片资料.并可对学生的图片资料进行更新. ...

  8. qt下的时钟程序(简单美丽,继承自QWidget的Clock,用timer调用update刷新,然后使用paintEvent作画就行了,超详细中文注释)good

    最近抽空又看了下qt,发现用它来实现一些东西真的很容易比如下面这个例子,绘制了个圆形的时钟,但代码却清晰易懂[例子源自奇趣科技提供的例子]因为清晰,所以就只写注释了,吼吼其实也就这么几行代码头文件 / ...

  9. WPF 使用Trigger遇到的问题

    1. 在style中使用trigger无效的场景 原因是直接在对象上设置值将导致style中的值无效,去掉TextBlock对象的Foreground后,Trigger将正常工作 <TextBl ...

  10. Survey Report on Data Skew in Big Data

    1 Introduction 信息时代产生了大量的数据,运用和使用数据已经成为一个公司乃至一个国家核心实力的重要组成部分.当代大数据一般指的是:数据量巨大,需要运用新处理模式才能具有更强的决策力.洞察 ...