Archery部署
Docker安装
1、下载 Archery
本文档使用的版本是 Release v1.7.13。
下载地址:https://github.com/hhyo/archery/releases/
2、将下载好的 zip 压缩包上传至服务器某一目录下,并解压
上传文件:
命令格式:scp -r -P <服务器端口> <Archary zip 本地路径> <服务器用户名>@<服务器 IP>:<上传至服务器的路径>
命令示例:scp -r -P 22 /Users/sky/Downloads/Archery-1.7.13.zip Frozen@12.123.12.123:/home/Frozen/archery
解压:
unzip Archery-1.7.13.zip
3、进入解压后的文件夹,并进入 /src/docker-compose 文件夹
4、修改 docker-compose.yml 文件
vim docker-compose.yml
如果你的服务器上已存在 3306 端口的 MySQL 被其他项目使用,则可以将此 MySQL 的端口进行修改。
5、修改 my.cnf 文件
vim mysql/my.cnf
- 将 [mysqld_safe] 里的 socket 改为 /var/lib/mysql/mysqld.sock。
- 将 [mysqld] 里的 pid-file 改为 /var/lib/mysql/mysqld.pid。
- 将 [mysqld] 里的 socket 改为 /var/lib/mysql/mysqld.sock。
- 将 [mysqld] 里的 port 改为 docker-compose.yml 文件里 MySQL 的端口。
6、修改 settings.py 文件 (共 2 个)。
vim archery/settings.py
vim ../../archery/settings.py
- 将 ‘PASSWORD’ 改为 docker-compose.yml 文件里 MySQL 的密码。
- 将 ‘HOST’ 改为服务器内网 IP。
- 将 ‘POST’ 改为 docker-compose.yml 文件里 MySQL 的端口。
7、启动 Archary 相关容器
docker-compose -f docker-compose.yml up -d
如果遇到 docker-compose:未找到命令 则按顺序执行以下命令即可解决 (需要 root 权限):
cd /usr/local/bin
wget https://github.com/docker/compose/releases/download/1.14.0-rc2/docker-compose-Linux-x86_64
rename docker-compose-Linux-x86_64 docker-compose docker-compose-Linux-x86_64
chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose version
8、观察 Archary 相关容器是否都正常启动 (共 5 个)
docker ps
9、初始化 Archary 数据
# 进入 archary 容器。
docker exec -ti archery /bin/bash
# 表结构初始化。
cd /opt/archery
source /opt/venv4archery/bin/activate
python3 manage.py makemigrations sql
python3 manage.py migrate
# 数据初始化。
python3 manage.py dbshell<sql/fixtures/auth_group.sql
python3 manage.py dbshell<src/init_sql/mysql_slow_query_review.sql
# 创建管理员用户。
python3 manage.py createsuperuser
# 从 archary 容器退出,重启 archary 容器。
exit
docker restart archery
10、访问 Archary
http://127.0.0.1:9123/
(将 127.0.0.1 替换成服务器外网 IP,9123 为 docker-compose.yml 文件里配置的端口)
至此,Archary 部署完毕,使用前请仔细阅读《Arcahry 使用文档》。
其他
# 查看 docker 容器日志和问题排查。
docker logs archery -f --tail=10
# 日志所在目录。
logs/archery.log
# 删除 Archary 相关容器。
docker rm -f mysql
docker rm -f archery
docker rm -f goinception
docker rm -f inception
docker rm -f redis
Archery 部署教程 - 手动
【Part1 安装】
环境信息
1、os:CentOS Linux release 7.8.2003 (Core)
2、python:Python 3.6.5
3、redis:Redis server v=5.0.11
https://my.oschina.net/guiguketang/blog/3043486
4、mysql:mysql Ver 14.14 Distrib 5.7.33
https://my.oschina.net/guiguketang/blog/4966611
安装 Python 和 virtualenv
编译安装
# 安装依赖
yum install wget gcc make zlib-devel openssl openssl-devel
wget "https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz"
tar -xvJf Python-3.6.5.tar.xz
# 编译
cd Python-3.6.5
./configure prefix=/usr/local/python3
make && make install
ln -fs /usr/local/python3/bin/python3 /usr/bin/python3
ln -fs /usr/local/python3/bin/pip3 /usr/bin/pip3
# virtualenv
pip3 install virtualenv -i https://mirrors.ustc.edu.cn/pypi/web/simple/
ln -fs /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
# 编译安装python的使用
virtualenv venv4archery --python=python3
# 切换python运行环境到虚拟环境
source venv4archery/bin/activate
wget "https://github.com/hhyo/archery/archive/v1.8.0.tar.gz"
tar -xzvf v1.8.0.tar.gz
# 安装系统依赖
yum -y install gcc gcc-c++ python-devel mysql-devel openldap-devel unixODBC-devel gettext
# 安装依赖库
cd archery-1.8.0
pip3 install -r requirements.txt -i https://mirrors.ustc.edu.cn/pypi/web/simple/
# 如果使用yum安装的python3,安装mysqlclient可能提示提示缺少Python.h,可安装
yum -y install python36-devel
外网yum源配置
1.可以移除默认的yum仓库,也就是删除 /etc/yum.repos.d/底下所有的.repo文件(踢出国外的yum源)
2.下载centos7的yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3.清空旧的yum缓存
yum clean all
4.生成新的yum仓库缓存(这个缓存来自于阿里云的yum仓库,便于加速软件下载)
yum makecache
5.配置一个第三方的 额外仓库源 (epel源),这个源的作用是,如果阿里云源找不到这个软件,就在这里找
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
安装python-ldap报错
In file included from Modules/LDAPObject.c:8:0:
Modules/constants.h:7:18: 致命错误:lber.h:没有那个文件或目录
#include “lber.h”
解决方法:
yum -y install openldap-devel
安装pyodbc失败
#include
^
compilation terminated.
error: ``command` `'gcc'` `failed with ``exit` `status 1
解决方法:
yum -y install unixODBC-devel
安装mysqlclient失败
#include "Python.h"
^
compilation terminated.
error: command 'gcc' failed with exit status 1
解决方法:
yum -y install python36-devel
-
MySQL 推荐版本 >=5.6
手动创建 db,dbname 为 archerymy -h 127.0.0.1 -u root -p #输入密码后进入mysql,再允许以下内容创建数据库 create database archery default character set=utf8mb4;
-
Redis 提供任务队列和缓存
建议 MySQL 版本 5.6 以上
# 该项目本身的mysql数据库地址
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'archery',
'USER': 'root',
'PASSWORD': '123',
'HOST': '127.0.0.1',
'PORT': '3306',
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
'charset': 'utf8mb4'
},
'TEST': {
'NAME': 'test_archery',
'CHARSET': 'utf8mb4',
},
}
}
# Django-Q
Q_CLUSTER = {
'name': 'archery',
'workers': 4,
'recycle': 500,
'timeout': 60,
'compress': True,
'cpu_affinity': 1,
'save_limit': 0,
'queue_limit': 50,
'label': 'Django Q',
'django_redis': 'default',
'sync': False # 本地调试可以修改为True,使用同步模式
}
缓存使用 redis,可参考 django_redis 文档 http://django-redis-chs.readthedocs.io/zh_CN/latest/
# 缓存配置
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/0",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"PASSWORD": ""
}
},
"dingding": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"PASSWORD": ""
}
}
}
数据库初始化
# 数据库初始化
python3 manage.py makemigrations sql
python3 manage.py migrate
# 数据初始化
python3 manage.py dbshell<sql/fixtures/auth_group.sql
python3 manage.py dbshell<src/init_sql/mysql_slow_query_review.sql
# 创建管理用户
python3 manage.py createsuperuser
【Part2 插件安装】
goInception安装
安装go环境
- 下载源码
cd /opt
wget -c https://dl.google.com/go/go1.13.4.linux-amd64.tar.gz
- 解压源码
tar zxvf go1.13.4.linux-amd64.tar.gz
- 配置环境变量
echo "export PATH=$PATH:/opt/go/bin" >> /etc/profile
source /etc/profile
- 验证是否安装成功
go version
有版本号出现则表示成功 !
安装goInception
- 下载源码
方式一 链接: 百度网盘 请输入提取码 密码: aai2 放置/opt/goInception目录下
方式二
cd /opt
mkdir goInception
wget -c https://github.com/hanchuanchuan/goInception/releases/download/v1.1.5/goInception-linux-amd64-v1.1.5.tar.gz
- 解压源码
tar zxvf goInception-linux-amd64-v1.1.5.tar.gz -C /opt/goInception
- 重命名
cd goInception/config/
mv config.toml.default config.toml
- 修改配置
vi config.toml
英文输入状态下 按 i 进入insert模式 修改如下配置 其他保留默认配置
# IP地址
host = "127.0.0.1"
# 端口
port = 4000
backup_host = "127.0.0.1"
backup_port = 3306
backup_user = "root"
backup_password = "newpass"
- 启动
nohup /opt/goInception/goInception -config=/opt/goInception/config/config.toml >>/dev/null 2>&1 &
- 连接
mysql -h127.0.0.1 -P4000
7.如有断连问题 启动后运行以下命令
exit
SOAR安装
SOAR(SQL Optimizer And Rewriter)是一个对SQL进行优化和改写的自动化工具。 由小米人工智能与云平台的数据库团队开发与维护
下载源码
方式一 链接: https://pan.baidu.com/s/1r4aJNCvG_rL9BmQfVptvhA 密码: iwdj 放至/opt/soar目录下
方式二
cd /opt
mkdir soar
cd soar
wget -c https://github.com/XiaoMi/soar/releases/download/0.11.0/soar.linux-amd64
- 重命名
mv soar.linux-amd64 soar
- 添加权限
chmod a+x /opt/soar/soar
- 创建配置文件
touch /opt/soar/soar.yaml
添加如下配置 可参考: https://github.com/XiaoMi/soar/blob/dev/doc/config.md
# 线上环境配置
online-dsn:
addr: 127.0.0.1:3306
schema: test
user: root
password: newpass
disable: false
# 测试环境配置
test-dsn:
addr: 127.0.0.1:3306
schema: test
user: root
password: newpass
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: /opt/soar/soar.log
# 优化建议输出格式
report-type: markdown
ignore-rules:
- ""
# 黑名单中的 SQL 将不会给评审意见。一行一条 SQL,可以是正则也可以是指纹,填写指纹时注意问号需要加反斜线转义。
blacklist: /opt/soar/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
- 安装验证
echo 'select * from film' | ./soar
- 拓展- web界面显示.并且可以进行部分的sql优化显示(可忽略)
https://github.com/xiyangxixian/soar-web
2、inception
【Part3 管理系统配置】
此插件如果配置不成功,则无法提交上线 SQL
1、SQL 审计插件 goinception 配置参考 - 语法检测
step1: 安装
wget https://github.com/hanchuanchuan/goInception/archive/refs/tags/v1.2.4.tar.gz
tar -zxvf goInception-linux-v1.2.4-27-ga6c0cfa.tar.gz
step2: 修改配置文件
cp config/config.toml.default config/config.toml
配置文件要修改和自己环境相一致的配置,否则不能生效
[inc]
backup_host = "127.0.0.1"
backup_port = 3306
backup_user = "root"
backup_password = "123456..."
step3: 启动
./goInception -config /usr/local/src/goInception/config/config.toml &
【Part4 启动】
archery启动
archery 手动启动服务
runserver 启动(仅作为本地测试)
source /opt/venv4archery/bin/activate
#启动 Django-Q,需保持后台运行
python3 manage.py qcluster &
#启动服务
python3 manage.py runserver 0.0.0.0:9123 --insecure &
访问地址:
http://ip:9123
如果启动成功,但无法访问,看一下防火墙是不是处于开启状态。
以上就是手动安装 archery 的 quanguoc
生产环境启动
生产环境启动 - 使用守护进程方式启动
source /opt/venv4archery/bin/activate
bash startup.sh
本质使用的是:Gunicorn+Nginx 启动
1、在安装包中以及安装部署了supervisord
配置文件在/usr/local/Archery-1.8.5/supervisord.conf
其中已经启动了Gunicorn(后端)和qcluster(后台校验和写入数据库Django_Q)
所以后端已经启动只要nginx启动即可,重启服务器的话,因为supervisord是自动启动的,所以只要保证nginx没有问题即可。
通过supervisorctl可以查看网页相关内容
1.start nginx //启动nginx的命令。
2.nginx -s quit //此方式停止步骤是待nginx进程处理任务完毕进行停止。
3.nginx -s stop //此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。
4.nginx -s reload //重新加载配置文件:当 nginx的配置文件 nginx.conf 修改后,要想让配置生效需要重启 nginx,
使用-s reload不用先停止 nginx再启动 nginx 即可将配置信息在 nginx 中生效
2、nginx 配置
# archery的nginx配置
server{
listen 9123; # 监听的端口
server_name archery;
client_max_body_size 20M; # 处理Request Entity Too Large
proxy_read_timeout 600s; # 超时时间与Gunicorn超时时间设置一致,主要用于在线查询
location / {
proxy_pass http://127.0.0.1:8888;
proxy_set_header Host $host:9123; # 解决重定向404的问题,和listen端口保持一致,如果是docker则和宿主机映射端口保持一致
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 /usr/local/Archery-1.8.5/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 {
}
}
开启自启动脚本
----- 测试环境 ------
/usr/local/src/redis/redis-5.0.11/src/redis-server &
service mysqld start
cd /usr/local/src/archery
source venv4archery/bin/activate
cd Archery-1.8.0
python3 manage.py qcluster &
python3 manage.py runserver 0.0.0.0:9123 --insecure &
------- 生产环境 -----------
/usr/local/src/redis/redis-5.0.11/src/redis-server &
service mysqld start
cd /usr/local/src/archery
source venv4archery/bin/activate
cd Archery-1.8.0
sh startup.sh
【Part5 异常信息】
异常一、数据库初始化异常**
手动配置的话,需要自己创建数据库
执行 python3 manage.py migrate
出现数据库初始化异常
原因是数据库编码的问题,创建库的时候设置编码即可
mysql> show global variables like ‘%character%’;
mysql> drop database archery;
mysql> create database archery default character set utf8;
异常二、ModuleNotFoundError: No module named ‘Crypto’
解决:
pip3 uninstall crypto
pip3 uninstall pycrypto
pip3 install pycrypto
Archery使用
用户信息
redis数据库:redis
mysql数据库:root 密码 123
mongoDB:无
django管理员 admin Lux@diag
网址:http://10.53.19.51:9123/ 超级管理员:admin 密码 Lux@diag
其他用户:archery001 、archery002 、archery003 , 密码是Password@_
基本使用
添加资源组
资源这里的意思,其实指的是 " 数据库资源 ",那么资源组,就是说这个组与之相关联的数据库。创建资源组的时候,直接创建就好了,设置组名就好了,别的没什么信息要填写的了。
创建用户账号的时候必须指定这个账号 " 归属 " 的资源组,有些账号同时属于多个资源组,或者说这个账号是关联着多个资源组。这个是在创建用户账号或者修改用户账号时再制定。( 做过 Archery 和 Ldap " 打通 " 的,Ldap 所有账号都没有关联过资源组,所以后续必须有对要登录使用 Archery 的账号的指定相关资源组的这个操作 )。
Archery 平台刚部署之后,系统这里是没有任何资源组的,所以必须要手动添加资源组,依照要设定的审核流程,设置相应的资源组个数,本次实验审核流程有三步,故这里要添加三个资源组。
如果要使用 Archery 结合 DingDing ,在配置 Webhook 的过程中,要在相关资源组设置 Access_Token,才能够完成在整个审核流程中 DingDing 的通知提醒功能。或者是 Archery 结合飞书 、企业微信 ,都是在这里进行设置。
添加方式:
" 系统管理 " — " 资源组管理 " — " 添加组 " — " 组名称 " — " 保存 " 其余都不用填写;
示例:
创建三个资源组 — 测试组、开发组、运维组
权限组
权限组的意思就很简单明了,就是对用户账号的操作做权限限定,限定哪些用户账号能够干什么,哪些用户账号不能够干什么,具体在 Archery 平台上的体现就是,哪些账号只能提交审核,哪些账号可以审批已提交的审核,又哪些用户账号可以执行已提交的审核,等等例如这些。
创建用户账号的时候 , 必须指定这个账号所关联的权限组,一个账号只能够关联到一个权限组。( 做过 Archery 和 Ldap " 打通 " 的,Ldap 所有账号都没有关联过权限组,所以后续必须有对要登录使用 Archery 的账号的指定相关权限组的这个操作 )
Archery 平台刚部署之后,系统这里是有 五个系统自带的权限组 — RD 、PM 、QA 、DBA 、Default , 每个 组都有各自对应的权限。使用系统自带的组,就能够完成一个完整的审核流程。当然也可以自己定定义权限组,用一些比较有个性化的名字,然后设置相对应的权限,也是可以完成一个完整的审核流程的。
五个组权限的大小依次是 Default < QA < RD < PM < DBA , 下面简单的说明下 Default 和 RD 这两个权限组
配置方式:
" 系统管理 " — " 其他配置管理 " — " 权限组管理 " — 右上角的位置 " 增加 组 + " — “输入名称,以及权限可用的权限和按钮” — " 保存 "
示例:
默认存在一些组,可不用添加
添加用户
用户账号,就是登录 Archery 平台的账号了,用来操作、使用 Archery 平台,进行相关的审核操作。
创建用户账号的时候 , 必须指定这个账号所关联的权限组、资源组。一个用户账号只能关联一个权限组,但是可以关联到多个资源组,在审核流程中,除了提交SQL审核上线的那个用户账号,后面的账号必须是关联到多个资源组,也就是说后面的用户账号除了自身的资源组之外,还必须关联到前面一个用户账号所关联到的资源组。
用户账号的来源:一个是中 Archery 平台有管理员创建,第二是 Ldap 里面的账号,但是 Ldap 里面的用户账号必须登录过一次 Archery 平台 ,才能够中用户管理里面看得到,稍后再编辑这些账号并配置相关的 权限组、资源组。
添加方式:
" 系统管理 " — " 其他配置管理 " — " 用户管理 " — 右上角的位置 " 增加 用户管理 + " — " 认证信息(用户名、口令、口令确认)" — " 个人信息(显示中文名、电子邮件信息) " — " 权限信息(组,指的是从系统默认的五个权限组中选择一个、用户权限 这里不操作) " — " 资源组(选择一个或者多个资源组) " — " 保存 "
“用户权限” 这里不做任何的操作,因为用户权限这里由用户账号所属的权限组来限定,所有这里就先不指定了
示例:
创建三个测试账号:archery001 、archery002 、archery003 , 并指定组;密码是Password@_
archery001 加入到 RD 组 ,资源组为 测试组
archery002 加入到 PM 组 ,资源组为 测试组、开发组
archery003 加入到 DBA组,资源组为 测试组、运维组
说明:
第一,审核流程中除SQL审核提交人之外,后面的审核人,都必须关联到SQL提交人所在的资源组
第二,实例数据库和资源组及用户账号之间的关联关系,只能够是软件作者设计的那套流程,即用实例数据库下的数据库只关联到SQL审核提交人的资源组,而用户账号再关联到这个审核流程中自己所在组以及前面一个用户账号所在的资源组。
添加数据库实例和数据库
实例 ,指的就是哪个服务器上面的数据库管理系统 (通常大家称呼习惯了为数据库),而这里提到的数据库,才是真正的数据库,是这个数据库管理系统里面的各个数据库,是我们使用命令 " show databases 或者 show dbs " 得到的结果。
这里,我们要区别一下, 在没有接触使用 Archery 审核平台之前,我们接触到的 “实例” 这个概念。例如在我们服务器 (地址:172.16.1.10)上安装了一个 MYSQL 的数据库管理系统,并且部署好了两个实例,使用的端口分别是 3306、3308 ,那么一般都说这里是个多实例 MYSQL,每个实例下面有各自的数据库,这个没有毛病,老铁!结合 Archery 的实例描述起来,同样也是两个实例,比方说 实例 172.16.1.10_3306 实例 、172.16.1.10_3308 实例,这个并不冲突和矛盾。数据库呢,也就是两个实例里面各自包含的数据库。
添加方式:
" 实例管理 " — " 实例列表 " — " 添加实例 " — " 增加实例配置 (实例名称、实例类型、数据库类型、实例连接、端口、用户名、口令、数据库 、字符集(utf8) 、资源组、实例标签(支持上线、支持查询 都加上) ) " — " 保存 "
" 数据库管理 " — " 请选择实例 " — " 创建数据库 " — " 数据库名称 " — " 负责人 " — " 备注 " — " 创建 "
示例:
添加两个数据库实例和实例下的测试数据库 并 指定数据库对应的资源组,用户名:root 密码:123
MYSQL 数据库的实例 ( 名称为 :MYSQL129 ) ,数据库为 test1290
MONGODB 数据库的实例 ( 名称为 :MONGODB130 ) ,数据库为 test130;无密码(本人先单独安装mongodb)
以上两个数据库实例下的数据库 都指定资源组为 测试组
如果数据未创建成功,在" 数据库管理 " — " 请选择实例 " — " 创建数据库 " — " 数据库名称 " — " 负责人 " — " 备注 " — " 创建 "
系统配置
左边的操作 : " 系统管理 " — " 配置项管理 " — " 选择操作 " — " 配置项 ( 系统设置 ) "
右边的操作 : " Inception配置 " — " GO_INCEPTION_HOST " 填写 " 部署的IP(此处10.53.19.51)" 、" GO_INCEPTION_PORT " 填写 " 4000 " — 最下面点击 " 保存配置 "
定义工单审核流程
添加方式:
左边的操作 : " 系统管理 " — " 配置项管理 " — " 选择操作 " — " 配置项 ( 工单审核流配置 ) " — " 工单类型 ( SQL上线申请 ) " — " 组 (测试组) "
右边的操作 : " 操作 " — " 请选择审批权限组 " 下拉框 — 第一次选择 PM 组 ,第二次选择 DBA 组 — " 变更 "
我们设定工单审核流为 :RD —> PM —> DBA ( 使用 Archery 平台自带的权限组就可以了)
进行工单审核流程测试
1) archery001 的操作
insert into info(id,name,age,address) values(1001,“jack”,25,“USA”)
DB129SQL审核测试-001
" SQL审核 " — " SQL上线 " —" 提交SQL" — " 填写SQL、上线单名、选择组、选择实例、选择数据库 “— " SQL检查 " —” SQL提交"
报错:Can’t connect to MySQL server on ‘127.0.0.1’ (111)
1、首先看系统配置中的goInception是否正确
2、其次查看部署的服务器,mysql -h127.0.0.1 -P4000 是否能够成功。未开启的话,启动goInception(nohup /opt/goInception/goInception -config=/opt/goInception/config/config.toml >>/dev/null 2>&1 &)
检测结果
提交审核
2) archery002 的操作
点击审核通过
状态变动
3) archery003 的操作
在此环节, archery003 账号的操作其实有两个步骤的,截图这里没有第一个步骤的截图 ( 感觉没必要 )
第一个步骤:其实很上面的 archery002 一样的,也是有一个 "审核通过"的按钮的执行界面
第二个步骤:才是下面第二、三个截图里面的 “立即执行” 的界面,然后点击执行
**问题:**一直在排队中
原因: django-q的状态问题 ,查看(ps -ef |grep qcluster)
**解决:**可能是开了多个django-q,kill - 9 一个就行了;如下图后面的是正常的