1. 程式人生 > >將GitLab數據庫從阿裏雲PostgreSQL RDS遷移至自建的PostgreSQL服務器

將GitLab數據庫從阿裏雲PostgreSQL RDS遷移至自建的PostgreSQL服務器

bsp 控制臺 創建 升級 postgresq pre 低版本 sse esql

阿裏雲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

將GitLab數據庫從阿裏雲PostgreSQL RDS遷移至自建的PostgreSQL服務器