如何彻底清空GitLab数据库及Prometheus指标库?
解决方案:GitLab 重置与 Prometheus 指标清理(ARM64 Ubuntu 22 + GitLab CE 15.3.3)
一、彻底重置GitLab数据(解决“幽灵用户”问题)
API删除数据容易遗漏关联记录(比如用户残留权限、审计日志),导致无法复用旧用户名。推荐直接清理核心存储与数据库,实现真正从零开始:
停止GitLab服务
sudo gitlab-ctl stop清理GitLab核心数据
- 删除所有仓库、项目文件:
sudo rm -rf /var/opt/gitlab/git-data/repositories/* sudo rm -rf /var/opt/gitlab/gitlab-rails/shared/* - 彻底重置PostgreSQL业务数据库:
sudo gitlab-ctl start postgresql sudo gitlab-psql -d gitlabhq_production -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;" sudo gitlab-ctl stop postgresql - 清空Redis缓存(清除残留会话、临时配置):
sudo gitlab-ctl start redis sudo gitlab-redis-cli FLUSHALL sudo gitlab-ctl stop redis
- 删除所有仓库、项目文件:
重新初始化GitLab
sudo gitlab-ctl reconfigure sudo gitlab-ctl start执行后GitLab会回到全新初始状态,之前用过的用户名可正常创建。
二、高效清理Prometheus指标数据库
直接删除文件前必须确保Prometheus完全停止,否则会导致数据损坏或清理不彻底,同时避免重启整个GitLab的耗时问题:
单独停止Prometheus服务
sudo gitlab-ctl stop prometheus彻底清理Prometheus数据目录
sudo rm -rf /var/opt/gitlab/prometheus/data/*直接删除整个data目录比单独删部分文件更彻底,不会遗漏WAL或检查点文件。
启动Prometheus服务
sudo gitlab-ctl start prometheus仅重启Prometheus比重启整个GitLab快数倍,不会影响其他服务运行。
三、自动化重置脚本(可选)
如果需要频繁执行重置,可编写一键脚本:
#!/bin/bash # 停止GitLab全服务 sudo gitlab-ctl stop # 清理GitLab文件存储 sudo rm -rf /var/opt/gitlab/git-data/repositories/* sudo rm -rf /var/opt/gitlab/gitlab-rails/shared/* # 重置PostgreSQL数据库 sudo gitlab-ctl start postgresql sudo gitlab-psql -d gitlabhq_production -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;" sudo gitlab-ctl stop postgresql # 清空Redis缓存 sudo gitlab-ctl start redis sudo gitlab-redis-cli FLUSHALL sudo gitlab-ctl stop redis # 清理Prometheus指标数据 sudo rm -rf /var/opt/gitlab/prometheus/data/* # 重新初始化并启动GitLab sudo gitlab-ctl reconfigure sudo gitlab-ctl start
保存为reset-gitlab.sh,赋予执行权限:chmod +x reset-gitlab.sh,每次运行前执行sudo ./reset-gitlab.sh即可。
内容的提问来源于stack exchange,提问作者FcoZ
相关产品推荐
相关产品推荐

