리눅스 PostgreSQL 데이터 경로 변경 방법

처음에 설치한 경로에서 영원히 쓰면 좋겠지만 DB 경로를 바꿔야 될 수도 있다. 물론 기존 데이터도 옮겨야 된다.

운영 환경에서 PostgreSQL 데이터 경로를 변경한다면 꽤 부담스럽게 느껴질 수 있을텐데 실제로 해보면 역시나 부담스럽다.

왜냐하면 DB 라는 게 시간이 지날수록 끝도 없이 무거워지기 때문에 사용량이 그리 많지 않은 환경에서도 가랑비에 옷 젖듯 1TB 가 쌓이기도 한다. 이런거 옮길 생각 하면 골 아프다.

여담이었고… PostgreSQL에서 데이터를 옮기는 과정 자체는 크게 복잡한 건 없기 때문에 옮기는 용량이 크지 않다면 의외로 쉽다고 느낄 수도 있다.

PostgreSQL 데이터 경로 변경

우선 현재 데이터를 쌓고 있는 경로를 확인한다. 설치할 때 따로 만진 게 없으면 보통 /var/lib/pgsql 쪽을 보고 있을 거다.

postgres=# show data_directory;
     data_directory
------------------------
 /var/lib/pgsql/12/data
(1 row)

postgresql 서비스를 종료한다.

[root@localhost data]# systemctl stop postgresql-12

기존 데이터를 통째로 변경할 경로로 복사한다. cp 보다는 소유권과 권한 정보까지 그대로 복사해주는 rsync를 쓰는 걸 추천한다.

[root@localhost data]# rsync -av /var/lib/pgsql/12/data /home/postgres
postgresql 데이터 이동

data 상로도 소유자와 소유그룹을 postgres:postgres 로 권한은 700으로 지정해준다.

[root@localhost home]# chown postgres:postgres /home/postgres
[root@localhost home]# chmod 700 /home/postgres

postgresql.conf 의 data_directory 값을 신규 경로로 수정하고 저장한다.

[root@localhost data]# vim postgresql.conf
data_directory = '/home/postgres/data'
postgresql conf 변경

이후엔 postgresql-12.service 의 PGDATA 경로를 변경한다.

[root@localhost data]# vim /usr/lib/systemd/system/postgresql-12.service
Environment=PGDATA=/home/postgres/data/
postgresql service

설정을 저장한 뒤엔 아래의 명령어로 reload를 해줘야 반영된다.

[root@localhost data]# systemctl daemon-reload

다시 postgresql 서비스를 시작한다.

[root@localhost data]# systemctl start postgresql-12

이때 해야할 것을 빼먹었거나 이런 저런 이유로 postgresql 시작이 안 될 수도 있는데 침착하게 로그 보면서 원인을 찾으면 해결 가능하다.

정상적으로 시작되었으면 경로가 잘 변경되었는지 확인한다.

postgres=# show data_directory;
   data_directory
---------------------
 /home/postgres/data
(1 row)

댓글 남기기