目录

v1.2.0 → v1.3.8

0.软件版本及项目地址

1.安装python venv环境

1.1.安装 python36

  1. yum install -y python36 python36-devel python-devel openldap-devel
  2. cd /tmp
  3. wget https://bootstrap.pypa.io/get-pip.py
  4. python3.6 get-pip.py

1.2.创建 Python venv 环境(Python>=3.6.5,建议使用虚拟环境 )

  1. # 创建 vevn
  2. pip3 install virtualenv
  3. cd /opt/
  4. virtualenv venv4archery --python=python36
  5. source /opt/venv4archery/bin/activate
  6. which mysql_config #确认命令在 $PATH 中,否则安装包时报错
  7. cd /opt
  8. # 安装 gcc
  9. yum install -y gcc
  10. # 下载 archery 源码
  11. wget https://github.com/hhyo/archery/archive/v1.3.8.tar.gz
  12. tar -zxvf v1.3.8.tar.gz
  13. cd archery138/
  14. 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.数据库账号授权

  1. # 创建 archery 1.38 版本数据库
  2. create database archery138 charset utf8mb4;
  3. # 创建 archery 后台数据库账号
  4. create user archery@'127.0.0.1' identified by 'xxxxxx';
  5. grant all on archery138.* to archery@'127.0.0.1';
  6. # 创建线上 v1.2.0 版本数据库恢复库
  7. create database archery120to138 charset utf8mb4;
  8. # 创建 inception 备份库连接账号
  9. create user incep@'127.0.0.1' identified by 'xxxxxx';
  10. grant all on *.* to incep@'127.0.0.1';
  11. flush privileges;

2.3.inception 安装、配置、启动

  • inception 编译安装略

  • inception 配置文件

  1. [inception]
  2. general_log=1
  3. general_log_file=inception.log
  4. port=6669
  5. socket=/tmp/inc.socket
  6. character-set-client-handshake=0
  7. character-set-server=utf8
  8. inception_remote_system_password=123456
  9. inception_remote_system_user=incep
  10. inception_remote_backup_port=3306
  11. inception_remote_backup_host=127.0.0.1
  12. inception_support_charset=utf8,utf8mb4
  13. inception_osc_on=ON
  14. inception_osc_bin_dir=/usr/local/bin
  15. inception_enable_nullable=0
  16. inception_check_primary_key=1
  17. inception_check_column_comment=1
  18. inception_check_table_comment=1
  19. inception_osc_min_table_size=1
  20. inception_osc_chunk_time=0.1
  21. inception_ddl_support=1
  22. inception_enable_blob_type=1
  23. inception_check_column_default_value=1
  24. # 启动 inception
  25. inception --defaults-file=incep.cnf &

2.4.Percona-toolkit 安装

  1. cd /tmp
  2. 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
  3. tar zxvf percona-toolkit-3.0.13_x86_64.tar.gz
  4. cp percona-toolkit-3.0.13/bin/* /usr/local/bin/

2.5.Nginx 安装、配置

  1. yum install -y nginx
  2. vim /etc/nginx/conf.d/nginx.conf
  1. server{
  2. listen 9123; #监听的端口
  3. server_name archery138;
  4. proxy_read_timeout 600s; #超时时间与gunicorn超时时间设置一致,主要用于在线查询
  5. location / {
  6. proxy_pass http://127.0.0.1:8888;
  7. proxy_set_header Host $host:9123; #解决重定向404的问题
  8. proxy_set_header X-Real-IP $remote_addr;
  9. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  10. proxy_set_header X-Forwarded-Proto $scheme;
  11. }
  12. location /static {
  13. alias /opt/archery138/archery/common/static; #此处指向settings.py配置项STATIC_ROOT目录的绝对路径,用于nginx收集静态资源
  14. }
  15. error_page 404 /404.html;
  16. location = /40x.html {
  17. }
  18. error_page 500 502 503 504 /50x.html;
  19. location = /50x.html {
  20. }
  21. }

2.6.上传 archery 第三方工具

  1. cd /opt/
  2. mkdir archery_tools
  3. cd /opt/archery_tools
  4. rz soar

2.7. SQLAdvisor 安装

  1. git clone https://github.com/Meituan-Dianping/SQLAdvisor.git
  2. yum install -y cmake libaio-devel libffi-devel glib2 glib2-devel gcc-c++ bison
  3. yum install -y Percona-Server-shared-56 [ --enablerepo=Percona56 ]
  4. # 如果不能安装 Percona-Server-shared-56 报错找不到包,那么需要执行下面语句
  5. yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
  6. cd SQLAdvisor
  7. cmake -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=debug -DCMAKE_INSTALL_PREFIX=/usr/local/sqlparser ./
  8. make && make install
  9. cd sqladvisor
  10. cmake -DCMAKE_BUILD_TYPE=debug ./
  11. make
  12. cp /opt/archery_tools/SQLAdvisor/sqladvisor/sqladvisor /opt/archery_tools/
  13. yes | rm /opt/archery_tools/SQLAdvisor -r
  14. # 在本路径下生成一个sqladvisor可执行文件,这即是我们想要的。
  15. /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 安装

  1. cd /opt/archery_tools/
  2. virtualenv venv4schemasync --python=python2
  3. source venv4schemasync/bin/activate
  4. git clone https://github.com/hhyo/SchemaSync.git
  5. git clone https://github.com/hhyo/SchemaObject.git
  6. cd SchemaObject && python setup.py install
  7. cd ../SchemaSync && python setup.py install
  8. yum install -y python-devel
  9. pip install mysql-python
  10. schemasync --version
  11. which schemasync
  12. cd ..
  13. ln -s /opt/archery_tools/venv4schemasync/bin/schemasync schemasync

3.安装 archery 环境

3.1. 1.2.步已下载源码,略过

3.2.修改 archery/settings.py 文件 DATABASES 配置项

  1. vim /opt/archery138/archery/settings.py
  1. # 该项目本身的mysql数据库地址
  2. DATABASES = {
  3. 'default': {
  4. 'ENGINE': 'django.db.backends.mysql',
  5. 'NAME': 'archery138', #archery信息库,执行py脚本生成
  6. 'USER': 'archery', #archery 特权登录用户,执行py脚本生成
  7. 'PASSWORD': 'xxx', #archery 特权登录用户密码
  8. 'HOST': '10.xx.xx.xx', #archery 数据库ip
  9. 'PORT': '3306', #archery 数据库端口
  10. 'OPTIONS': {
  11. 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
  12. 'charset': 'utf8mb4' #archery 数据库字符集,默认为utf8mb4
  13. },
  14. 'TEST': {
  15. 'NAME': 'test_archery',
  16. 'CHARSET': 'utf8', #archery 数据库字符集,默认为utf8
  17. },
  18. }
  19. }
  20. # LDAP
  21. ENABLE_LDAP = False # 测试时可以设置为 false,生产启用 LDAP 时开启
  22. if ENABLE_LDAP:
  23. import ldap
  24. from django_auth_ldap.config import LDAPSearch
  25. AUTHENTICATION_BACKENDS = (
  26. 'django_auth_ldap.backend.LDAPBackend', # 配置为先使用LDAP认证,如通过认证则不再使用后面的认证方式
  27. 'django.contrib.auth.backends.ModelBackend', # django系统中手动创建的用户也可使用,优先级靠后。注意这2行的顺序
  28. )
  29. AUTH_LDAP_SERVER_URI = "ldap://xx.xx.xx.com"
  30. AUTH_LDAP_BIND_DN = "CN=auth,CN=Users,DC=xx,DC=xx,DC=com"
  31. AUTH_LDAP_BIND_PASSWORD = "xxxxxxxxxxxxxxx"
  32. AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=xxx,dc=xx,dc=xxx,dc=com",ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)")
  33. AUTH_LDAP_ALWAYS_UPDATE_USER = True # 每次登录从ldap同步用户信息
  34. AUTH_LDAP_USER_ATTR_MAP = { # key为archery.sql_users字段名,value为ldap中字段名,用户同步信息
  35. "username": "xxxxxxxxxxxx",
  36. "display": "cn",
  37. "email": "mail"
  38. }

3.3.数据库初始化

  1. cd /opt/archery138/
  2. python36 manage.py makemigrations sql #这一步如果遇到报错可忽略
  3. python36 manage.py migrate

3.4.创建管理用户

  1. cd /opt/archery138/
  2. python3 manage.py createsuperuser
  3. Username: archery_admin # 手动输入
  4. Email address: dba-notice@ybm100.com
  5. Password: xxxx #输入密码
  6. Password (again): xxxxx #确认密码
  7. Superuser created successfully.

3.5.调试启动(runserver 方式)

  1. source /opt/venv4archery/bin/activate
  2. python3 manage.py runserver 0.0.0.0:9123 --insecure &

3.6.安装gunicorn

  • venv中已经安装,无需额外安装

3.7.gunicorn + nginx 启动(正式环境启动方式)

  1. cd /opt/archery138/
  2. source /opt/venv4archery/bin/activate
  3. sh startup.sh &

3.8.一键启动脚本,启动 archery

  1. #!/bin/bash
  2. inception --defaults-file=/opt/inception/inc.cnf &
  3. source /opt/venv4archery/bin/activate
  4. cd /opt/archery138
  5. python3 /opt/archery138/manage.py runserver 0.0.0.0:9123 --insecure &
  6. sh /opt/archery138/startup.sh &

4.数据库升级

4.1.导出线上库

  1. # 10.xx.xx.xx
  2. sudo su -
  3. mysqldump -S xx/mysql.sock --single-transaction --master-data=2 --set-gtid-purged=OFF db_ops > db_ops.sql

4.2.在目标实例上恢复数据

  1. # 10.xx.xx.xx
  2. sudo su -
  3. mysql -S xx/mysql.sock db_ops <db_ops.sql

4.3.执行数据库升级脚本

  1. # 10.xx.xx.xx
  2. sudo su -
  3. cd /opt/archery138/src/init_sql
  4. mysql -h 10.xx.xx.xx -P3306 -uxx -p db_ops < v1.2.0_1.3.0.sql
  5. mysql -h 10.xx.xx.xx -P3306 -uxx -p db_ops < v1.3.0_1.3.2.sql
  6. mysql -h 10.xx.xx.xx -P3306 -uxx -p db_ops < v1.3.6_v1.3.7.sql

4.4.导出恢复库升级数据,并导入 archery 数据库

  1. # 10.xx.xx.xx
  2. sudo su -
  3. mysqldump -S xx/mysql.sock --single-transaction --master-data=2 --set-gtid-purged=OFF --no-create-info db_ops > updated_db_data.sql.bak
  4. mysql -h 10.xx.xx.xx -P3306 -uxx -p archery < updated_db_data.sql,bak

5.配置archery

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

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

Inception配置

——填写完成后点击测试,通过后保存

  1. INCEPTION_HOST 10.xx.xx.xx
  2. INCEPTION_PORT 6669
  3. REMOTE_BACKUP_HOST 10.xx.xx.xx
  4. REMOTE_BACKUP_PORT 3306
  5. REMOTE_BACKUP_USER incep
  6. REMOTE_BACKUP_PASSWORD xxxx

功能模块配置

SQL****查询
  1. QUERY ON
SQL优化
  1. SQLADVISOR_PATH /opt/archery_tools/sqladvisor
  2. SOAR_PATH /opt/archery_tools/soar
  3. SOAR_TEST_DSN xxx:xxx@10.xx.xx.xx:3306/archery

通知配置

——填写完成后点击测试,通过后保存

  1. MAIL ON
  2. MAIL_SSL ON
  3. MAIL_SMTP_SERVER xxx
  4. MAIL_SMTP_PORT xxx
  5. MAIL_SMTP_USER xxx
  6. MAIL_SMTP_PASSWORD xxx
  7. DDL_NOTIFY_AUTH_GROUP dinglu@ybm100.com
  8. DING ON

其他配置

SCHEMASYNC /opt/archery_tools/venv4schemasync/bin/schemasync

6.Bug修复

6.1. vim sql/instance.py

  • 如果在archery平台上使用schemasync进行表对比的时候出现问题,可能是登录mysql的密码中出现了特殊字符,使得schemasync

  • 无法识别这个密码,可以将含有特殊字符的密码改成不含有特殊字符的密码,问题就可以解决了,或者是修改instance.py 文件中的代码

修改前:

  1. command = path + ' %s --output-directory=%s --tag=%s \
  2. mysql://%s:%s@%s:%d/%s mysql://%s:%s@%s:%d/%s'

修改后:

  1. command = path + " %s --output-directory=%s --tag=%s \
  2. mysql://%s:'%s'@%s:%d/%s mysql://%s:'%s'@%s:%d/%s"
  3. # 将其中的密码用单引号引起来就可以了

开源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. 简化网站开发:SiteMesh小工具

    在一个站点的制备,几乎所有的页面将具有相同的部分.导航栏例如,顶,每一页都是一样的,在底部的版权声明,每一页还都是一样的. 因此,在顶部导航栏的准备.第一种方法是直接复制的所有导航栏的代码,这种方法是 ...

  2. windows添加本地文件托管到新增github库

    新增repositoy.登录gitHub,并点击“New Reposoitory” 写入名字  之后点击“create resposity” \ 按照上图中的步骤可以完成.以下为完成步骤. 2. 在本 ...

  3. 精装友好联络算法实现借壳和RI

    精装友好联络会 注册算法分析: 1.  许可证由三部分组成. 2. 的登记号的第一部分是顺序编号0x6d模 3. 登记代码的第二部分: 先将订单号与0XB25F1异或,将异或后的结果转换成十进制字符串 ...

  4. 在mac中如何清除.svn文件

    有些时候在开发一个应用程序我们需要用到版本控制,它可以帮助我们很好的控制我们程序的代码,尤其在多人开发的时候,优点尤为突出. 但是在有些情况下我们又认为这些.svn真的很麻烦,那么我们怎么把他们一下子 ...

  5. Mvvm Light Toolkit 入门

    原文:Mvvm Light Toolkit 入门 前言 之前学习UWP的时候就一直看到有关MVVM的资料但是一直没有系统的去学,最近正好有时间,特地来攻破这个点,顺便学习一下VS与GitHub的链接和 ...

  6. 数据绑定(二)把控件作为Binding源

    原文:数据绑定(二)把控件作为Binding源 下面的代码把一个TextBox的Text属性关联在了Slider的Value属性上 <Window x:Class="WpfApplic ...

  7. ArchLinux 安装记录

    主要步骤 下载镜像及刻录 开机安装 联网 编辑镜像站文件 分区 格式化分区并挂载 安装基本操作系统 配置基础操作系统 引导系统 用户管理 网络配置 安装Gonme桌面环境 其他优化 开始准备 下载镜像 ...

  8. kafka 遇到的错

    D:\cluster\kafka_2.->.\bin\windows\kafka-topics.bat --create --zookeeper localhost: --replication ...

  9. C# ACCESS 修改表记录提示"UPDATE 语句语法错"问题

    错误的sql 语句如下: sqlStr =  "update tb_userInfo set passWord='" + pw + "' where userName=' ...

  10. Windows下libevent C++封装类实现

    题记 windows平台下对于服务器高并发的网络模型选型中,使用libevent是个不错的选择. 本文的背景基于:国内博客对于libevent大多介绍linux实现,大多是c语言的实现,Windows ...