将GitLab数据库从阿里云PostgreSQL RDS迁移至自建的PostgreSQL服务器
Posted dudu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将GitLab数据库从阿里云PostgreSQL RDS迁移至自建的PostgreSQL服务器相关的知识,希望对你有一定的参考价值。
阿里云RDS目前支持的是PostgreSQL 9.4,而gitlab支持的最低版本是PostgreSQL 9.6.1,不升级PostgreSQL,gitlab就无法升级,阿里云RDS短期内不进行升级,被迫无奈下只能改用自己用阿里云ECS搭建的PostgreSQL服务器。这篇随笔记录一下数据库迁移的主要步骤。
在ubuntu时安装好PostgreSQL之后,首先进入 /etc/postgresql/9.6/main 修改2个配置文件:
postgresql.conf
listen_addresses = \'127.0.0.1,内网IP\'
pg_hba.conf
host all all gitlab服务内网IP/32 trust
然后在阿里云ECS的数据盘创建专门用于存放gitlab数据库文件的文件夹
mkdir /data/gitlab-db cd /data/gitlab-db chown -R postgres:postgres .
接下来创建 tablespace (tablespace决定数据库文件的存放路径)
CREATE TABLESPACE gitlab_space LOCATION \'/data/gitlab-db’;
再接下来创建名为gitlab的数据库用户
create user gitlab password ‘xxxxx’;
创建gitlab数据库
CREATE DATABASE gitlabhq_production OWNER gitlab TABLESPACE gitlab_space;
将gitlab数据库授权给之前创建的gitlab用户
GRANT ALL PRIVILEGES ON DATABASE gitlabhq_production TO gitlab;
接下来迁移数据库时走了些弯路,开始采用的方式是恢复从阿里云RDS控制台下载的 .tar.gz 备份文件
psql -U gitlab -d gitlabhq_production -f xxxxx.tar.gz
但恢复时总是出现一堆伴随乱码的"Invalid command"错误。
后来一想,直接用 pg_dump 连到 RDS 上备份出 .sql 文件不就行了吗?
pg_dump -U 用户名 -h RDS实例地址 -p 3433 gitlabhq_production -f gitlabhq_production.sql
然后通过这个 .sql 备份文件轻松恢复。
psql -d gitlabhq_production -f gitlabhq_production.sql
【相关链接】
以上是关于将GitLab数据库从阿里云PostgreSQL RDS迁移至自建的PostgreSQL服务器的主要内容,如果未能解决你的问题,请参考以下文章
阿里云云中沙箱自助实验-从Gitlab数据库被删看数据备份的重要性!