提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
archery等sql审核工具来说,对DBA非常的重要,今天记录下archery的安装
uname -r
yum update
yum remove docker docker-common docker-selinux docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 国外镜像一般很难访问,建议配置阿里云镜像、
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
# 安装指定版本的docker
yum install docker-ce-20.10.6 docker-ce-cli-20.10.6 containerd.io
systemctl start docker
systemctl enable docker
docker version
curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
git clone https://github.com/hhyo/Archery.git
#进入docker-compose文件夹
#启动
docker-compose -f docker-compose.yml up -d
# 如果有新加的容器,直接更改docker-compose.yml,然后运行上面的命令即可,已经启动的容器会跳过
注:从docker-compose.yml中可以看到goinception或者inception的配置文件地址./inception/config.toml,如果想更改审核规则需要在这个配置文件里进行更改,然后重启
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 compilemessages
#数据初始化
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
docker logs archery -f --tail=10
/downloads/log/archery.log
http://127.0.0.1:9123/
默认配置:
https://github.com/hhyo/Archery/blob/master/src/docker-compose/docker-compose.yml
默认是几个插件都安装,不过一般会把redis和mysql拿下去进行独立的安装
# 直接修改方案
docker exec -ti archery /bin/bash
cd /opt/archery/archery
vi settings.py
# 因为docker将文件映射了出来,所以可以直接修改Archery/src/docker-compose下的内容即可,初步需要修改的文件为
# 初步主要修改的文件包含以下两项
vim docker-compose/archery/settings.py
vim docker-compose/inception/config.toml
# (主要是备份的数据库和审核规则,这里不改会报错bad connection问题)
2.1 修改settings.py对应的mysql,redis内容
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'archery',
'USER': '*****', # 这四项改成自己的mysql的用户名,密码,IP,端口
'PASSWORD': '*****',
'HOST': '*******',
'PORT': '***',
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
'charset': 'utf8mb4'
},
'TEST': {
'NAME': 'test_archery',
'CHARSET': 'utf8mb4',
},
}
}
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://*****:6379/0", # 这里改成自己的redis的IP
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"PASSWORD": "******" # 这里改成自己的redis密码
}
},
"dingding": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"PASSWORD": ""
}
}
}
2.2 修改config.toml中goinception备份所使用的链接(避免bad connection)
# 修改之后重启goinception,这里需要注意的是arhcery前端界面的配置是不起作用的,一定要修改config.toml的配置,不然就会出现不备份可以执行成功,但是备份执行不成功的情况
[inc]
backup_host = ""
backup_port = 3306
backup_user = "archery"
backup_password = "****"
# 这里要从刚刚的环境退出去,即在容器外操作
docker-compose|docker stop archery
docker-compose|docker stop goinception
docker-compose -f docker-compose.yml down
# 将docker-compose.yml文件中的redis和mysql相关部分删除掉,并把archery的mysql,redis相关部分换成自己的mysql,redis的IP,然后启动容器
eg:
dockerize -wait tcp://****:3306 -wait tcp://****:6379 -timeout 60s /opt/archery/src/docker/startup.sh
docker-compose -f docker-compose.yml up -d
接下来正常操作即可
6.1 1.9.1的版本开始用环境变量配置,位置是
/archery/src/docker-compose/.env
6.2 配置:配置域名访问报错:Forbidden (Origin checking failed - ***** does not match any trusted origins.): /authenticate/
配置CSRF_TRUSTED_ORIGINS=具体的域名
docker ps -a
# 格式:docker commit -m '镜像描述' -a '制作者' 容器名 镜像名
docker commit -m 'archery_use' -a 'dba' archery archery_dba_use
3.应用本地镜像
# 为了模拟,我们需要把之前的容器先下掉,然后查看本地镜像
docker images
# 从中找到我们要使用的镜像,然后启动
# 格式:docker run -dit --name=容器名 镜像 id /bin/bash
docker run -dit --name=archery 6c68f8c7a2d6 /bin/bash
docker rmi 2c9028880e58 #(镜像id)
docker rm 2c9028880e58 #(容器id)