MySQL自动化运维工具

article/2025/10/14 12:37:02

数据字典DDM:查看DB表结构和字段的,应用开发人员使用的,参考设计时
数据执行:写SQL语句的dml ,数据库人员给开发人员使用,执行语句、线上调试,发现数据问题,技术支持, 数据查看工具。ctrip和gd都有,phpMyAdmin
数据DDL表结构评审和管理:提交给DBA进行审核,一般是ddl语句,一个集审核、执行、备份及生成回滚语句于一身的MySQL自动化运维工具。DBA自己开发的一个工具,给开发人员使用。

====================

 

  • Inception: 去哪儿网开源,提供SQL语句审核、执行、回滚功能 ,2015年
  • SQLAdvisor: 美团开源,提供分析SQL中的where条件、聚合条件、多表Join关系,输出索引优化建议,2017年
  • SOAR: 小米开源,提供SQL启发式算法的语句优化、多列索引优化等功能,2018年
  •  
  •  
  • =======================

 

https://github.com/jly8866/archer

https://github.com/cookieY/Yearning

 

======================

Yearning SQL审核平台

LICENSE LICENSE      

MYSQL web端 SQL审核平台。

Website 官网

www.yearning.io

Feature 功能

  • SQL查询
    • 查询工单
    • 导出
    • 自动补全,智能提示
    • 查询语句审计
  • SQL审核
    • 流程化工单
    • SQL语句检测与执行
    • SQL回滚
    • 历史审核记录
  • 推送
    • E-mail工单推送
    • 钉钉webhook机器人工单推送
  • 用户权限及管理
    • 拼图式权限划分
    • 组合式权限组
    • 支持限制邮箱后缀名的有限注册功能
  • 其他
    • todoList
    • LDAP登录
    • 动态配置

Install 安装及使用日志

使用及安装文档

=====================

Snapshot 效果展示

  • Login

login

  • Dashboard

  • 审核

  • SQL语法高亮及自动补全

  • 查询

  • 细粒度的权限分配 

  • 我的工单 

===============================

http://guide.yearning.io/

 

archer

基于inception的自动化SQL操作平台,支持工单、审核、定时任务、邮件、OSC等功能,还可配置MySQL查询、慢查询管理、会话管理等


目录

  • 主要功能
  • 设计规范
  • 在线体验
  • 安装
    • docker部署
    • 手动安装
  • 运行
  • 功能集成
    • 在线查询&脱敏查询
    • 慢日志管理
    • SQL优化工具
    • 阿里云rds管理
  • Q&A

开发语言和推荐环境

python3.4及以上  
django1.8.17  
mysql : 5.6及以上  
linux : 64位linux操作系统均可  

主要功能

  • 自动审核
    发起SQL上线,工单提交,由inception自动审核,审核通过后需要由审核人进行人工审核
  • 人工审核
    inception自动审核通过的工单,由其他研发工程师或研发经理来审核,DBA操作执行SQL
    为什么要有人工审核?
    这是遵循运维领域线上操作的流程意识,一个工程师要进行线上数据库SQL更新,最好由另外一个工程师来把关
    很多时候DBA并不知道SQL的业务含义,所以人工审核最好由其他研发工程师或研发经理来审核. 这是archer的设计理念
  • 回滚数据展示
    工单内可展示回滚语句,支持一键提交回滚工单
  • 定时执行SQL
    审核通过的工单可由DBA选择定时执行,执行前可修改执行时间,可随时终止
  • pt-osc执行
    支持pt-osc执行进度展示,并且可以点击中止pt-osc进程
  • MySQL查询
    库、表、关键字自动补全
    查询结果集限制、查询结果导出、表结构展示、多结果集展示
  • MySQL查询权限管理
    基于inception解析查询语句,查询权限支持限制到表级
    查询权限申请、审核和管理,支持审核流程配置,多级审核
  • MySQL查询动态脱敏
    基于inception解析查询语句,配合脱敏字段配置、脱敏规则(正则表达式)实现敏感数据动态脱敏
  • 慢日志管理
    基于percona-toolkit的pt_query_digest分析和存储慢日志,并在web端展现
  • 邮件通知
    可配置邮件提醒,对上线申请、权限申请、审核结果等进行通知
    对异常登录进行通知

设计规范

  • 合理的数据库设计和规范很有必要,尤其是MySQL数据库,内核没有oracle、db2、SQL Server等数据库这么强大,需要合理设计,扬长避短。互联网业界有成熟的MySQL设计规范,特此撰写如下。请读者在公司上线使用archer系统之前由专业DBA给所有后端开发人员培训一下此规范,做到知其然且知其所以然。
    下载链接 https://github.com/jly8866/archer/blob/master/src/docs/mysql_db_design_guide.md

主要配置文件

  • archer/archer/settings.py

采取docker部署

  • docker镜像,参考wiki
    • inception镜像: https://hub.docker.com/r/hhyo/inception
    • archer镜像: https://hub.docker.com/r/hhyo/archer
  • docker镜像制作感谢@小圈圈 提供

手动安装步骤

  1. 环境准备
  • 克隆代码到本地或者下载zip包
    git clone https://github.com/jly8866/archer.git
  • 安装inception
    项目地址
  1. 安装python3,版本号>=3.4(由于需要修改官方模块,请使用virtualenv或venv等单独隔离环境!)
    pip3 install virtualenv
    virtualenv venv4archer --python=python3.4
    
  2. 安装所需相关模块
    source venv4archer/bin/activate
    pip3 install -r requirements.txt
    
  3. pymysql模块兼容inception版本信息
    使用src/docker/pymysql目录下的文件替换/path/to/python3/lib/python3.4/site-packages/pymysql/对应文件

启动前准备

  1. 创建archer本身的数据库表
  • 修改archer/archer/settings.py所有的地址信息,包括DATABASES和INCEPTION_XXX部分
  • 通过model创建archer本身的数据库表,如果是现有版本升级请使用src/init_sql内的变更脚本变更数据库
    原v1.1.1分支请使用v1.1.1->v2.0.sql变更
    原master分支请使用master->v2.0.sql变更
    全新安装请使用如下方式初始化
    python3 manage.py makemigrations sql  
    python3 manage.py migrate 
    
  1. 创建admin系统root用户(该用户可以登录django admin来管理model)
    python3 manage.py createsuperuser
  2. 启动,有两种方式
    (1)用django内置runserver启动服务,建议不要在生产环境使用
    bash debug.sh
    (2)用gunicorn+nginx启动服务
    安装模块pip3 install gunicorn==19.7.1
    nginx配置示例
    server{listen 9123; #监听的端口server_name archer;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 /archer/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 {}} 
    
    启动 bash startup.sh
  3. 正式访问
    使用上面创建的管理员账号登录http://X.X.X.X:port/login/

其他功能集成

在线查询

  1. settings中QUERY改为True
  2. 到【后台数据管理】-【从库地址配置】页面添加从库信息
  3. 到【后台数据管理】-【工作流配置】页面配置审核流程
  4. 用户申请权限、审核通过后即可进行在线查询
  5. 如需要使用动态脱敏,请将settings中DATA_MASKING_ON_OFF改为True,并且到【后台数据管理】-【脱敏配置】页面配置脱敏规则和字段

慢日志管理

  1. settings中SLOWQUERY改为True
  2. 安装percona-toolkit(版本=3.0.6),以centos为例
    yum -y install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm 
    yum -y install percona-toolkit.x86_64 
    
  3. 使用src/script/mysql_slow_query_review.sql创建慢日志收集表到archer数据库
  4. 将src/script/analysis_slow_query.sh部署到各个监控机器,注意修改脚本里面的 hostname="${mysql_host}:${mysql_port}"与archer主库配置信息一致,否则将无法筛选到相关记录

SQLAdvisor优化工具

  1. 安装SQLAdvisor,项目地址
  2. 修改配置文件SQLADVISOR为程序路径,路径需要完整,如'/opt/SQLAdvisor/sqladvisor/sqladvisor'

阿里云rds管理

  1. 修改配置文件ALIYUN_RDS_MANAGE=True
  2. 安装模块
    pip3 install aliyun-python-sdk-core==2.3.5
    pip3 install aliyun-python-sdk-core-v3==2.5.3
    pip3 install aliyun-python-sdk-rds==2.1.1
    
  3. 在【后台数据管理】-【阿里云认证信息】页面,添加阿里云账号的accesskey信息,重新启动服务
  4. 在【后台数据管理】-【阿里云rds配置】页面,添加实例信息,即可实现对阿里云rds的进程管理、慢日志管理

admin后台加固,防暴力破解

  1. patch目录下,名称为django_1.8.17_admin_secure_archer.patch
  2. 使用命令
    patch  python/site-packages/django/contrib/auth/views.py django_1.8.17_admin_secure_archer.patch
    

集成ldap

  1. 修改配置文件ENABLE_LDAP=True,安装相关模块,可以启用ldap账号登录,以centos为例
    yum install openldap-devel
    pip install django-auth-ldap==1.3.0
    
  2. 如果使用了ldaps,并且是自签名证书,需要打开settings中AUTH_LDAP_GLOBAL_OPTIONS的注释
  3. settings中以AUTH_LDAP开头的配置,需要根据自己的ldap对应修改

系统体验

点击体验

角色账号密码
管理员archerarcher
工程师engineerarcher
审核人auditorarcher
DBAdbaarcher

部分问题解决办法

查看错误日志

/tmp/default.log & /tmp/archer.err

页面样式显示异常

  • runserver/debug.sh启动
    settings里面关闭了debug,即DEBUG = False,需要在启动命令后面增加 --insecure,变成
  • nginx+gunicorn/startup.sh启动
    nginx的静态资源配置不正确
    location /static {alias /archer/static; #此处指向settings.py配置项STATIC_ROOT目录的绝对路径,用于nginx收集静态资源,一般默认为archer按照目录下的static目录}
    

用户管理

  • 偶现添加用户报错
    采用nginx+gunicorn/startup.sh启动,多worker的部署可能出现,目前问题没有解决
  • 无法登录(确认用户名和密码正确)
    检查用户is_active字段是否为1

SQL上线

  • 集群不显示数据库
    archer会默认过滤一些系统数据库,过滤列表为'information_schema', 'performance_schema', 'mysql', 'test', 'sys'

  • 审核人不显示
    没有为审核人/DBA角色的有效用户

  • 审核通过后没有执行按钮
    archer的SQL上线流程为:工程师提交SQL->审核人审核->DBA执行,审核人只能审核归属自己审核的数据,DBA执行全部数据

检测SQL报错

  • invalid literal for int() with base 10:'Inception2'
    调整pymysql使其兼容Inception版本信息,
    使用src/docker/pymysql目录下的文件替换/path/to/python3/lib/python3.4/site-packages/pymysql/目录下的文件
  • invalid source infomation
    inception用来审核的账号,密码不能包含*
  • Must start as begin statement
    python3的pymysql模块会向inception发送SHOW WARNINGS语句,导致inception返回一个"Must start as begin statement"错误被archer捕捉到报在日志里
    使用src/docker/pymysql目录下的文件替换/path/to/python3/lib/python3.4/site-packages/pymysql/目录下的文件
  • Incorrect database name ''
    inception检查不支持子查询
  • Invalid remote backup information
    inception无法连接备份库

无法生成回滚语句

  • 检查配置文件里面inception相关配置
  • 检查inception审核用户和备份用户权限,权限参考
    — inception备份用户
    GRANT SELECT, INSERT, CREATE ON *.* TO 'inception_bak'
    — inception审核用户(主库配置用户,如果要使用会话管理需要赋予SUPER权限,如果需要使用OSC,请额外配置权限)
    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER,REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'inception'
    — archer在线查询用户(从库配置用户)
    GRANT SELECT ON *.* TO 'archer_read'
    
  • 检查binlog格式,需要为ROW,binlog_row_image为FULL
  • 检查DML的表是否存在主键
  • 检查语句是否有影响数据
  • 检查备份库是否开启autocommit
  • 检查是否为连表更新语句
  • 检查执行实例是否为mysql

脱敏规则未生效

  • 检查脱敏字段是否命中(是否区分大小写)
  • 检查脱敏规则的正则表达式是否可以匹配到数据,无法匹配的会返回原结果
  • 检查是否关闭了CHECK_QUERY_ON_OFF参数,导致inception无法解析的语句未脱敏直接返回结果
    脱敏规则配置参考
规则类型规则脱敏所用的正则表达式,表达式必须分组,隐藏的组会使用****代替需要隐藏的组规则描述
手机号(.{3})(.*)(.{4})2保留前三后四
证件号码(.*)(.{4})$2隐藏后四位
银行卡(.*)(.{4})$2隐藏后四位
邮箱(.*)@(.*)2去除后缀

审核人看不到查询权限申请待审核工单

查询权限申请待办列表被隐藏至右上角的消息图标中,当有待审核信息时会显示图标,可以进入查看待办数据

慢日志不显示

  • 检查脚本内的配置,hostname和archer主库配置内容保持一致,用于archer做筛选
  • 检查mysql_slow_query_review_history表收集的日志信息hostname_max是否和hostname一致

定时任务未执行

  • 检查django-apscheduler相关表是否有创建,可使用python3 manage.py migrate创建

联系方式

QQ群524233225

 

======================

See SQL审核平台

See SQL审核平台

         

API集成

  • Inception: 去哪儿网开源,提供SQL语句审核、执行、回滚功能
  • SQLAdvisor: 美团开源,提供分析SQL中的where条件、聚合条件、多表Join关系,输出索引优化建议
  • SOAR: 小米开源,提供SQL启发式算法的语句优化、多列索引优化等功能

功能简介

  • 目标库管理

    • 支持多场地/数据中心的数据库管理,集群方式归纳目标数据库
    • 支持目标数据库配置,库/表结构查询
  • SQL操作

    • 基于Inception
    • SQL语法检测
    • SQL语句执行
    • SQL回滚
    • 定时工单
    • 历史记录
  • SQL查询

    • 查询目标数据库的详细表结构
    • 查询表数据,对结果可导出文件
    • SQL语句优化(基于美团SQLAdvisor)
    • 多层次优化建议(基于小米SOAR)
  • 用户管理

    • 对用户/组的注册/注销/加组/授权等管理
  • 个性化设置

    • 管理员可以做SQL关键字拦截,平台的审批功能开关等设置
    • 用户可以订阅其常用的数据库,指定审批工单的经理,以简化审核时所需的操作
  • inception设置

    • inception服务连接信息
    • inception备份库连接信息
    • inception支持的参数释义及值
  • 人工审批功能

    • 流程开关
    • 开启流程,工单至少需双人确认(流程:提交人 -- inception自动审核 -- 经理审批 -- DBA上线)
    • 关闭流程,工单可由经理上线(流程:提交人 -- inception自动审核 -- 经理上线)
  • 用户权限

    • 基于RBAC的表级,对象级权限控制体系
    • 通过用户管理设置用户权限
    • 根据用户身份(组员/经理/总监)鉴权用户对SQL的审核/取消/执行/回滚等操作
  • 操作流程

    • 用户需要输入SQL,指定环境,执行人,数据库
    • inception自动审核SQL语法
    • 审批人做审批通过或驳回操作
    • 执行人做执行/撤销/回滚等操作
    • SQL列表界面提供SQL查询,操作等相关功能
  • API文档

    • 各接口生成自动化的API文档,对接外部需求
  • 登录

    • 支持see系统登录
    • 支持自定义公司统一认证中心(sso)登录
  • 通知

    • E-mail邮件推送
  • 其他

    • DashBoard数据报表展示

环境

  • Python 3.6

    • Django 2.0
    • Django Rest Framework 3.8
  • Vue.js 2.9

    • iview 2.8
    • iview-admin 1.3

平台使用

  • 在线访问 (下表为登录的用户/密码)
用户名密码
武松see
宋江see

安装文档

  • 安装文档

界面展示

  • 邮件提醒

image

  • SQL查询

image

  • 工单审核

image

  • 工单详情 1

image

  • 工单详情 2

image

  • 工单详情 3

image

  • 工单列表

image

  • 平台设置

image

  • 用户管理

image

  • Dashboard审计

image

交流学习

  • QQ群 630791951

License

  • Eclipse Public License - v 2.0

Copyright © 2018 See


http://chatgpt.dhexx.cn/article/tZNAp2Iq.shtml

相关文章

如何做自动化测试

这个话题比较大,相信大家也都有自己的想法,我在这里写一些我自己的看法,请大家指教。 什么叫做自动化测试工程师 首先,会使用自动化测试工具的测试人员不能够称之为完全的自动化测试人员,这类测试人员被称为『工具小…

【测试】自动化测试基本流程

下图是自动化测试的基本流程图,以及每个阶段的任务负责人,输出等。 1、制定测试计划 在展开自动化测试之前,最好做个测试计划,明确测试对象、测试目的、测试的项目内容、测试的方法、测试的进度要求,并确保测试所需的…

自动化测试如何管理测试数据

前段时间,知识星球里有同学问到:自动化case越多,测试数据越多,数据的管理成本也越来越高,是否需要一个数据池来专门管理测试数据?这是一个好问题,也是很多测试同学在自动化测试实践中必须面对的…

自动化测试如何准备测试数据

事实上,大多数类型的测试都需要准备测试数据。 手动测试:需要准备一些基础数据,比如配置数据等; 自动化测试:基础需要准备,已有数据,动态运行时产生的数据需要准备; 性能测试:类似于自动化测试…

自动化测试实施流程

在上篇文章中,我们已经介绍过Selenium的一些基础知识,以及是否能够开展自动化测试的情形,在这篇文章中,我们将主要介绍自动化测试的实施流程。 1、自动化测试流程图 2、主要过程描述 2.1、自动化测试的切入点 开展自动化测试的…

自动化测试之获取mysql中的数据

各位小伙伴们,大家好,今天给大家带来的是关自动化测试之获取mysql数据库中的数据方面的干货,技术含金量超高,有测开方面发展的小伙伴可以好好看看。 实施自动化获取mysql数据库中的数据的前提知识有: 1. 精通软件测试…

性能自动化测试整体流程

目录 1. 性能环境搭建介绍 1.1 配置Jenkins 1.2 配置Maven, JDK 1.3 安装Jenkins插件 1.4 Jenkins角色权限管理 1.5 Jenkins配置发送邮件 1.6 配置JMeter 1.7 安装和配置Tomcat 2. 分布式接口压测的Job设置 2.1 Jenkins上配置Job 2.2 配置JMeter分布式压测环境 2.3…

自动化测试(一)

利用测试自动化工具,更轻松地编写测试套件,减轻人为干预并提高测试ROI回报率。 业务关键测试用例,重复测试用例,功能测试用例 web自动化测试工具 : QTP一个商业化的功能测试工具,收费,支持web…

自动化测试-使用python控制MYSQL数据库(pymysql)

当需要对大量的数据进行处理并写入/读取数据库时,直接使用Linux显然会显得力不从心,即使是图形化的Navicat Premium在处理大批量数据时也难以招架,只能通过SQL语句结合导入导出来实现一些事情,本文分享使用python语言中的pymysql包…

自动化测试基本流程

下图是自动化测试的基本流程图,以及每个阶段的任务负责人,输出等。 1、制定测试计划 在展开自动化测试之前,最好做个测试计划,明确测试对象、测试目的、测试的项目内容、测试的方法、测试的进度要求,并确保测试所需的…

最完整的自动化测试流程

今天笔者就要归纳总结下一整套测试流程,从无到有,实现零突破,包括如何编写测试用例,定时执行测试用例,查找最新生成的测试报告文件,自动发送最新测试报告邮件,一整套完整的测试流程。以后各位只…

图解《字典学习》

PPT&代码链接 csdn:https://download.csdn.net/download/u012037852/10899017 github:https://github.com/longfeizhou2016/Dictionary-learning

python学习 字典

22-9-15 1.格式:大括号{} eg: 2.创建字典: 6种常用方法: 3.增: 1.formkeys: eg: 2: 用此种方法,若键值存在,则修改其value,若不存在,则新…

[转]字典学习/稀疏编码

本文转自https://zhuanlan.zhihu.com/p/26015351 机器学习——字典学习/稀疏编码学习笔记 Esquirrel 2 个月前 以下资料是小编学习字典学习/稀疏编码时,整理的高质量的网络博客,供大家参考。欢迎留言交流,批评指正理解不足。 最Highlight的地…

【零散知识】字典学习(Dictionary Learning)

前言: { 之前的神经网络实践还卡在硬件上,不过目前已经打算先使用云设备,下次应该就会继续进行多目标识别的调试。这次就先写一点零散知识。 在专利[1]中我遇到了新的观点——字典学习(Dictionary Learning)。 } 正…

Python-字典学习

这次主要学习了字典学习的相关知识以及选择分支结构,根据课程编写了下图一些代码:

Python中的字典学习笔记

字典的格式:{"key":"value"} key表示数据的含义,value表示对应的数据的值字典是一种可变的数据类型,从python3.7开始,字典是有序的。 字典创建的方式 1、通过{},要使用key:value的格式&#xff0c…

『ML笔记』字典学习3(Dictionary Learning,KSVD)

文章目录 一、字典学习数学模型1.1、数学描述1.2、求解问题1.3、字典学习算法实现 字典学习也是一种数据降维的方法,这里我用到SVD的知识,对SVD不太理解的地方,可以看看这篇博客: 奇异值分解SVD 一、字典学习数学模型 字典学习的…

字典学习日记

字典的创建 在定义字典时,每个元素都包含了两部分:键(key)和值(value),并且在“键”和“值”之间使用英文冒号分隔,相邻两个元素使用英文逗号分离,所有的元素都放…

Dictionary Learning(字典学习、稀疏表示以及其他)

第一部分 字典学习以及稀疏表示的概要 字典学习(Dictionary Learning)和稀疏表示(Sparse Representation)在学术界的正式称谓应该是 稀疏字典学习(Sparse Dictionary Learning)。该算法理论包含两个阶段&am…