1.Archery 数据库管理系统背景与介绍
背景
Archery 是一款开源的数据库管理平台,主要用于帮助用户更高效地管理和监控数据库,尤其是针对大规模分布式数据库的管理。Archery 的名字来源于传统的射箭运动,象征着精准与控制,正如它在数据库管理中的目标——为开发者和运维团队提供精准、稳定的数据库管理体验。它最初由阿里巴巴团队开发,旨在提供一个灵活、易扩展的数据库管理平台,支持多种数据库类型,包括 MySQL、PostgreSQL、SQL Server 和更多。
随着企业数据量和复杂度的增加,传统的数据库管理工具往往无法满足高效性、可扩展性和操作简便性的需求。Archery 通过提供智能化的管理功能,帮助团队快速识别和解决数据库相关问题,提高了运维效率和系统的稳定性。
介绍
Archery 主要通过 Web 界面为用户提供数据库管理和监控功能。它集成了多个数据库管理模块,包括但不限于:
1. 数据库连接管理:支持多种类型的数据库连接,允许用户通过统一的界面访问和管理不同类型的数据库。
2. SQL 执行和优化:提供 SQL 执行界面和性能分析工具,帮助用户优化查询,提升数据库性能。
3. 监控与报警:对数据库的各项指标(如响应时间、查询执行情况、资源消耗等)进行实时监控,并能够根据设定的阈值自动触发报警,提醒管理员及时处理潜在问题。
4. 备份与恢复:支持数据库的自动备份与恢复功能,确保数据安全。
5. 权限管理:为不同角色的用户设置合适的数据库访问权限,提升系统的安全性和操作的合规性。
6. 审计日志:记录所有数据库操作的日志,确保系统的可追溯性,方便后期审计。
Archery 提供了用户友好的界面,使得数据库的日常操作更加直观和易于管理,同时也具备足够的灵活性,能够满足大规模企业的数据库运维需求。
作用
1. 简化数据库管理:Archery 提供了集中的 Web 界面,整合了多种数据库管理功能,使得数据库的日常操作更加简单和高效。通过统一的平台,用户可以减少多个工具之间的切换,提升管理效率。
2. 增强数据库监控能力:通过对数据库的全面监控,Archery 可以帮助运维团队及时发现系统瓶颈或异常,避免数据库出现故障,确保系统的高可用性。实时的监控和报警功能能够最大限度地减少潜在的数据库风险。
3. 提升性能优化:提供的 SQL 执行分析和性能优化工具,有助于开发者识别慢查询、锁表等性能瓶颈,通过优化数据库查询和执行过程,提高系统整体的响应速度和处理能力。
4. 提高安全性和合规性:Archery 具有细粒度的权限管理功能,帮助企业设置不同角色的访问权限,保障数据的安全性。同时,审计日志记录所有操作,增强系统的可审查性,确保数据库操作符合企业的合规性要求。
5. 自动化备份与恢复:通过自动化的数据库备份功能,Archery 帮助企业实现数据的定期备份和灾难恢复计划,提高了数据的安全性和容灾能力。
6. 支持团队协作:对于需要多人共同管理数据库的团队,Archery 提供了用户权限分配与协作功能,帮助不同的团队成员进行高效协作和操作分工。
数据库 | 查询 | 审核 | 执行 | 备份 | 数据字典 | 慢日志 | 会话管理 | 账号管理 | 参数管理 | 数据归档 |
---|---|---|---|---|---|---|---|---|---|---|
MySQL | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
MsSQL | √ | × | √ | × | √ | × | × | × | × | × |
Redis | √ | × | √ | × | × | × | × | × | × | × |
PgSQL | √ | × | √ | × | × | × | × | × | × | × |
Oracle | √ | √ | √ | √ | √ | × | √ | × | × | × |
MongoDB | √ | √ | √ | × | × | × | √ | √ | × | × |
Phoenix | √ | × | √ | × | × | × | × | × | × | × |
ODPS | √ | × | × | × | × | × | × | × | × | × |
ClickHouse | √ | √ | √ | × | × | × | × | × | × | × |
Cassandra | √ | × | √ | × | × | × | × | × | × | × |
Doris | √ | × | √ | × | × | × | × | × | × | × |
2.搭建开始:
本次搭建我们选择用docker-compose
首先你需要本地有docker-compose的环境:
curl -fsSL https://get.docker.com -o get-docker.sh | sudo sh
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
如果你docker-compose拉不下来,可以用梯子去github(https://github.com/docker/compose/releases)上下载后传入/usr/local/bin目录再给权限哦
Archery项目:https://github.com/hhyo/Archery
docker-compose参考 https://github.com/hhyo/archery/wiki/docker
1.首先把github项目拉到服务器本地
git clone https://github.com/hhyo/Archery.git
这个命令涉及github的账号登录等等,这个自己去注册就行了。
2.docker-compose启动:
cd /安装目录/archery/Archery/src/docker-compose
安装目录就是你git命令的位置
这里面有个docker-compose.yml文件,很重要,最好是检查一下有没有这个,如果没有重新拉github。
# 启动
docker-compose -f docker-compose.yml up -d# 表结构初始化
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# 退出容器
exit# 日志查看和问题排查
docker logs archery -f --tail=50
docker-compose -f docker-compose.yml up -d的时候出现了一个问题,意思是yaml文件里depends_on问题,建议改成:
archery:
image: hhyo/archery:v1.11.3
container_name: archery
restart: always
depends_on:
- redis
- mysql
启动启动就行了,如果遇到其他问题可以在评论区讨论
3.nginx转发,加域名
nginx:
需要自己写域名、证书、转发的ip
server {
listen 80;
server_name 域名;# HTTP -> HTTPS 重定向
return 301 https://$host$request_uri;
}server {
listen 443 ssl;
server_name 域名;# SSL 配置
ssl_certificate /etc/nginx/ssl/证书.pem; # 替换为你的证书路径
ssl_certificate_key /etc/nginx/ssl/证书.key; # 替换为你的私钥路径
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers off;# SSL 加密传输
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;# 转发请求到本地 9123 端口
location / {
proxy_pass http://ip:9123; # 转发 9123 端口
proxy_set_header Host $host;
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;
}
}
/archery/Archery/src/docker-compose/archery/settings.py
打开这个文件,写入:
CSRF_TRUSTED_ORIGINS=['https:/域名']
回到docker-compose目录
关闭并删除:docker-compose down -v
启动:docker-compose up -d
docker ps 查看你的服务id
docker exec -it 服务id /bin/bash
cd archery 下有个load_setting.py
看下这里面有没有,如果有你刚刚配置的CSRF_TRUSTED_ORIGINS=['https:/域名']那么就ok了。去用域名登录吧!
4.论坛
https://github.com/hhyo/Archery/discussions?discussions_q=
5.Django CSRF问题
如果上面的你也做了,but还不行,建议参考官网文档
Settings | Django documentation | Django
总结
Archery 数据库管理系统是一款功能强大且易于使用的数据库管理工具,旨在提升数据库的可管理性、可监控性和安全性。无论是在数据库日常维护、性能优化,还是在团队协作、数据备份等方面,Archery 都能有效提高工作效率,确保系统的高可用性和稳定性。对于企业级应用,Archery 无疑是数据库管理和运维的理想选择。