GitLab在Linux上的数据库选择指南
PostgreSQL是GitLab官方默认且唯一官方支持的数据库(从GitLab 12.1版本起,不再支持MySQL作为后端存储)。其核心优势在于高度兼容GitLab的功能需求:支持复杂查询、事务完整性、高级数据类型(如JSONB),以及良好的扩展性(可通过扩展插件增强功能)。对于需要稳定、可靠且与GitLab深度集成的企业级部署,PostgreSQL是首选方案。
MySQL(及其分支MariaDB)是广泛使用的开源关系型数据库,具备高性能和稳定性,适合需要熟悉MySQL生态的场景。但需注意:GitLab已停止对其官方支持,使用时可能存在兼容性问题(如某些GitLab功能无法正常工作),仅建议在测试环境或对MySQL有强依赖的场景下考虑。
MongoDB等NoSQL数据库擅长处理非结构化数据,但GitLab的核心数据(如代码仓库、用户信息、CI/CD配置)均为结构化数据,NoSQL数据库无法满足其对事务、复杂查询的需求。因此,GitLab不推荐使用NoSQL数据库作为主数据库。
sudo yum install -y postgresql-server postgresql-contrib
sudo postgresql-setup initdb
sudo systemctl start postgresql
sudo systemctl enable postgresql
sudo -u postgres psql
CREATE DATABASE gitlabhq_production;
CREATE USER gitlab WITH PASSWORD 'your_password';
ALTER ROLE gitlab SET client_encoding TO 'utf8';
ALTER ROLE gitlab SET default_transaction_isolation TO 'read committed';
ALTER ROLE gitlab SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE gitlabhq_production TO gitlab;
\q
/etc/gitlab/gitlab.rb
,添加以下内容:gitlab_rails['db_host'] = "localhost"
gitlab_rails['db_port'] = 5432
gitlab_rails['db_user'] = "gitlab"
gitlab_rails['db_password'] = "your_password"
gitlab_rails['db_name'] = "gitlabhq_production"
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
以上步骤可确保PostgreSQL与GitLab正确集成,满足企业级部署需求。