DBA的日常工作往往是琐碎的,数据库不是每天都调整架构的。高可用集群搭建好之后,可能很长时间都不会去动它,一旦需要动它了那一定是出现大的故障或者有大的调整了。
数据库更新上线是最频繁的工作,也是最繁琐的。如果每次都是一台台的去登录数据库,每次去执行开发邮件发来的SQL脚本,其实挺崩溃的。
本期介绍一款自己正在使用的开源数据库自动化运维的工具,能够在线审核SQL、审批、上线、退回、授权开发查询指定数据库等功能。对于日常的数据库上线更新来说是非常解放DBA的,最重要的是开源产品,有能力的运维团队还可以进行二次开发。
正在使用的这款数据库的SQL审核查询平台是Archery
github地址:
https://github.com/hhyo/Archery
目前已经有5K多个Star
支持类型
支持多种数据库类型

主要功能介绍
Dashboard 总览

SQL审核上线

这里做了点改动,增加了工单号,更方便查找需要操作的工单。
后台是用Python开发的,有Python基础的DBA可以自己修改一些功能
大表的DDL操作支持gh-ost和pt-online-schema-change,避免DDL阻塞正常的sql。
支持自定义审批层级,可以一层或者多层审批。

上线SQL支持在线回滚,像update和delete这类SQL,上线时选择备份SQL,可以选择随时回滚操作。
SQL查询
可以给开发人员开通查询权限,对于一些有查询线上数据的需求来说,还是很方便的。同时,还保留了查询记录,用于审核。

功能依赖
服务端
Python3
Django
django-q
Mysql审核/执行/备份
goinception
大表DDL
gh-ost/pt-online-schema-change
快速部署
Docker快递安装部署
安装Docker
curl -fsSL https://get.docker.com -o get-docker.sh | sudo sh安装Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o usr/local/bin/docker-composesudo chmod +x usr/local/bin/docker-compose
配置文件
[root@xxxx docker-compose]# pwd/root/Archery-1.10.0/src/docker-compose[root@xxxx docker-compose]# tree.├── archery│ ├── docs.md│ ├── downloads│ │ ├── binlog2sql│ │ └── schemasync│ ├── keys│ ├── logs│ │ ├── archery.log│ │ ├── qcluster.log│ │ └── supervisord.log│ ├── settings.py│ ├── soar.yaml│ └── sql│ └── migrations├── docker-compose_archery.yml├── docker-compose.yml├── inception│ └── config.toml├── mysql│ └── my.cnf└── nginx└── nginx.conf
启动
下载 Releases文件,解压后进入archery/src/docker-compose文件夹
#启动docker-compose -f docker-compose.yml up -d#表结构初始化docker exec -ti archery bin/bashcd opt/archerysource opt/venv4archery/bin/activatepython3 manage.py makemigrations sqlpython3 manage.py migrate#数据初始化python3 manage.py dbshell<sql/fixtures/auth_group.sqlpython3 manage.py dbshell<src/init_sql/mysql_slow_query_review.sql#创建管理用户python3 manage.py createsuperuser#重启服务docker restart archery#日志查看和问题排查docker logs archery -f --tail=10logs/archery.log
访问
http://127.0.0.1:9123
具体的配置文件详解,请参照官方文档。
总之,这是解放DBA的一大利器。使得DBA可以抽身去关注比较重要的东西,不用每天都陷在上线更新这个事情上。




