数据字典DDM:查看DB表结构和字段的,应用开发人员使用的,参考设计时
数据执行:写SQL语句的dml ,数据库人员给开发人员使用,执行语句、线上调试,发现数据问题,技术支持, 数据查看工具。ctrip和gd都有,phpMyAdmin
数据DDL表结构评审和管理:提交给DBA进行审核,一般是ddl语句,一个集审核、执行、备份及生成回滚语句于一身的MySQL自动化运维工具。DBA自己开发的一个工具,给开发人员使用。
====================
https://github.com/jly8866/archer
https://github.com/cookieY/Yearning
======================
MYSQL web端 SQL审核平台。
使用及安装文档
=====================
===============================
基于inception的自动化SQL操作平台,支持工单、审核、定时任务、邮件、OSC等功能,还可配置MySQL查询、慢查询管理、会话管理等
1python3.4及以上
2django1.8.17
3mysql : 5.6及以上
4linux : 64位linux操作系统均可
5
6
发起SQL上线,工单提交,由inception自动审核,审核通过后需要由审核人进行人工审核
inception自动审核通过的工单,由其他研发工程师或研发经理来审核,DBA操作执行SQL
为什么要有人工审核?
这是遵循运维领域线上操作的流程意识,一个工程师要进行线上数据库SQL更新,最好由另外一个工程师来把关
很多时候DBA并不知道SQL的业务含义,所以人工审核最好由其他研发工程师或研发经理来审核. 这是archer的设计理念
工单内可展示回滚语句,支持一键提交回滚工单
审核通过的工单可由DBA选择定时执行,执行前可修改执行时间,可随时终止
支持pt-osc执行进度展示,并且可以点击中止pt-osc进程
库、表、关键字自动补全
查询结果集限制、查询结果导出、表结构展示、多结果集展示
基于inception解析查询语句,查询权限支持限制到表级
查询权限申请、审核和管理,支持审核流程配置,多级审核
基于inception解析查询语句,配合脱敏字段配置、脱敏规则(正则表达式)实现敏感数据动态脱敏
基于percona-toolkit的pt_query_digest分析和存储慢日志,并在web端展现
可配置邮件提醒,对上线申请、权限申请、审核结果等进行通知
对异常登录进行通知
下载链接 https://github.com/jly8866/archer/blob/master/src/docs/mysql_db_design_guide.md
git clone https://github.com/jly8866/archer.git
项目地址
1pip3 install virtualenv
2virtualenv venv4archer --python=python3.4
3
4
1source venv4archer/bin/activate
2pip3 install -r requirements.txt
3
4
使用src/docker/pymysql目录下的文件替换/path/to/python3/lib/python3.4/site-packages/pymysql/对应文件
原v1.1.1分支请使用v1.1.1->v2.0.sql变更
原master分支请使用master->v2.0.sql变更
全新安装请使用如下方式初始化
1python3 manage.py makemigrations sql
2python3 manage.py migrate
3
4
python3 manage.py createsuperuser
(1)用django内置runserver启动服务,建议不要在生产环境使用
bash debug.sh
(2)用gunicorn+nginx启动服务
安装模块pip3 install gunicorn==19.7.1
nginx配置示例
1server{
2 listen 9123; #监听的端口
3 server_name archer;
4 proxy_read_timeout 600s; #超时时间与gunicorn超时时间设置一致,主要用于在线查询
5
6 location / {
7 proxy_pass http://127.0.0.1:8888;
8 proxy_set_header Host $host:9123; #解决重定向404的问题
9 proxy_set_header X-Real-IP $remote_addr;
10 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
11 proxy_set_header X-Forwarded-Proto $scheme;
12 }
13
14 location /static {
15 alias /archer/static; #此处指向settings.py配置项STATIC_ROOT目录的绝对路径,用于nginx收集静态资源
16 }
17
18 error_page 404 /404.html;
19 location = /40x.html {
20 }
21
22 error_page 500 502 503 504 /50x.html;
23 location = /50x.html {
24 }
25 }
26
27
1 启动 bash startup.sh
2
使用上面创建的管理员账号登录http://X.X.X.X:port/login/
1yum -y install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
2yum -y install percona-toolkit.x86_64
3
4
1pip3 install aliyun-python-sdk-core==2.3.5
2pip3 install aliyun-python-sdk-core-v3==2.5.3
3pip3 install aliyun-python-sdk-rds==2.1.1
4
5
1patch python/site-packages/django/contrib/auth/views.py django_1.8.17_admin_secure_archer.patch
2
3
1yum install openldap-devel
2pip install django-auth-ldap==1.3.0
3
4
点击体验
管理员 archer archer 工程师 engineer archer 审核人 auditor archer DBA dba archer
/tmp/default.log & /tmp/archer.err
页面样式显示异常
settings里面关闭了debug,即DEBUG = False,需要在启动命令后面增加 –insecure,变成
nginx的静态资源配置不正确
1location /static {
2 alias /archer/static; #此处指向settings.py配置项STATIC_ROOT目录的绝对路径,用于nginx收集静态资源,一般默认为archer按照目录下的static目录
3 }
4
5
用户管理
采用nginx+gunicorn/startup.sh启动,多worker的部署可能出现,目前问题没有解决
检查用户is_active字段是否为1
SQL上线
archer会默认过滤一些系统数据库,过滤列表为’information_schema’, ‘performance_schema’, ‘mysql’, ‘test’, ‘sys’
没有为审核人/DBA角色的有效用户
archer的SQL上线流程为:工程师提交SQL->审核人审核->DBA执行,审核人只能审核归属自己审核的数据,DBA执行全部数据
检测SQL报错
调整pymysql使其兼容Inception版本信息,
使用src/docker/pymysql目录下的文件替换/path/to/python3/lib/python3.4/site-packages/pymysql/目录下的文件
inception用来审核的账号,密码不能包含*
python3的pymysql模块会向inception发送SHOW WARNINGS语句,导致inception返回一个”Must start as begin statement”错误被archer捕捉到报在日志里
使用src/docker/pymysql目录下的文件替换/path/to/python3/lib/python3.4/site-packages/pymysql/目录下的文件
inception检查不支持子查询
inception无法连接备份库
无法生成回滚语句
1— inception备份用户
2GRANT SELECT, INSERT, CREATE ON *.* TO 'inception_bak'
3— inception审核用户(主库配置用户,如果要使用会话管理需要赋予SUPER权限,如果需要使用OSC,请额外配置权限)
4GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER,REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'inception'
5— archer在线查询用户(从库配置用户)
6GRANT SELECT ON *.* TO 'archer_read'
7
8
脱敏规则未生效
脱敏规则配置参考
手机号 (.{3})(.)(.{4}) 2 保留前三后四 证件号码 (.)(.{4})$ 2 隐藏后四位 银行卡 (.)(.{4})$ 2 隐藏后四位 邮箱 (.)@(.*) 2 去除后缀
审核人看不到查询权限申请待审核工单
查询权限申请待办列表被隐藏至右上角的消息图标中,当有待审核信息时会显示图标,可以进入查看待办数据
慢日志不显示
定时任务未执行
QQ群524233225
======================
武松 see 宋江 see