jin5011 发表于 2018-1-11 22:32:31

将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
页: [1]
查看完整版本: 将GitLab数据库从阿里云PostgreSQL RDS迁移至自建的PostgreSQL服务器