1. 数据库选型建议
CentOS上GitLab的首选数据库为PostgreSQL(GitLab 12.1及以上版本仅支持PostgreSQL作为后端存储)。PostgreSQL功能强大、支持复杂查询和高级特性(如触发器、分区、物化视图),适合处理GitLab的大型数据集(如代码仓库、CI/CD流水线数据),且稳定性与可扩展性优于其他选项(如MySQL/MariaDB、MongoDB)。
2. 数据库配置优化
yum安装PostgreSQL(sudo yum install -y postgresql-server postgresql-contrib),初始化数据库(sudo postgresql-setup initdb),启动并设置开机自启动(sudo systemctl enable --now postgresql);使用sudo -u postgres psql命令创建GitLab专用数据库(CREATE DATABASE gitlabhq_production;)和用户(CREATE USER gitlab WITH PASSWORD 'your_strong_password';),并授权(GRANT ALL PRIVILEGES ON DATABASE gitlabhq_production TO gitlab;)。/etc/postgresql/13/main/postgresql.conf),调整以下参数以提升性能:
listen_addresses = '*':允许远程连接(若需跨服务器访问);max_connections = 200:根据并发用户数调整(默认100可能不足);shared_buffers = 4GB:设置为系统内存的25%-40%(如16GB内存设为4GB);work_mem = 16MB:每个查询的工作内存(提升排序、哈希操作性能);maintenance_work_mem = 512MB:大型任务(如VACUUM、索引创建)的内存分配。3. 备份策略
gitlab-backup工具创建包含数据库、代码仓库、配置文件等的完整备份(sudo gitlab-backup create)。默认备份路径为/var/opt/gitlab/backups,文件名格式为<timestamp>_<gitlab_version>_gitlab_backup.tar。0 2 * * * /usr/bin/gitlab-backup create);定期清理过期备份(如删除30天前的备份:find /var/opt/gitlab/backups -type f -mtime +30 -exec rm -f {} \;)。4. 恢复流程
sudo gitlab-ctl stop unicorn、sudo gitlab-ctl stop sidekiq),避免数据冲突。cd /var/opt/gitlab/backups);sudo gitlab-backup restore BACKUP_NUMBER,BACKUP_NUMBER为备份文件名中的时间戳);/etc/gitlab目录复制回原位置(sudo cp -r /backup/etc/gitlab /etc/gitlab);sudo gitlab-ctl restart)。5. 安全管理
pg_hba.conf文件(/etc/postgresql/13/main/pg_hba.conf),限制GitLab用户的访问权限(如仅允许localhost访问:host all all 127.0.0.1/32 md5),避免未授权访问。gpg加密),防止数据泄露;GitLab配置文件(/etc/gitlab/gitlab.rb)和密钥文件(/etc/gitlab/gitlab-secrets.json)需妥善保管,避免泄露数据库密码等敏感信息。/var/opt/gitlab/backups)需设置为仅GitLab用户可访问(sudo chown -R git:git /var/opt/gitlab/backups),防止其他用户篡改备份文件。