본문 바로가기
  • A space that records me :)
DataBase/PostgreSQL

[PostgreSQL] PGDATA 경로 변경

by yjkim_97 2021. 11. 21.

PostgreSQL 기본 데이터 경로인 /var/lib 로 세팅했다가 디렉토리 용량 문제가 우려되어 경로를 변경하게 되었다.

 

경로 변경하기로 결정되기 전에 이미 Pgpool과 Watchdog 세팅까지 모두 마친 상태였기 때문에 Pgpool, Watchdog의 일부 설정값들을 동시에 수정해야 했다.

변경사항은 그다지 많지 않았고, 깔끔하게 끝났다.

 

변경할 경로

PGDATA : /data/postgresql/data/

 

1. 경로 생성 

mkdir -p /data/postgresql/
mv /var/lib/pgsql/13/data /data/postgresql/

mkdir -p /data/postgresql/archive/
 

 

2. PostgreSQL 설정 변경

2.1.  postgres 명령어 실행시 옵션 변경

/usr/pgsql-13/bin/postgres "-D" "/data/postgresql/data" 내용으로 변경한다.

vi /data/postgresql/data/postmaster.opts

 

2.2.  서비스 실행시 상수값 변경

Environment=PGDATA의 값을 /data/postgresql/data/로 변경한다.

Environment=PGDATA=/data/postgresql/data/

vi /usr/lib/systemd/system/postgresql-13.service
 

 

2.3.  postgresql.conf의 설정값 변경 

기본경로 ( /var/lib/pgsql/13/data )로 되어 있는 부분들 모두 새 경로로 변경한다.
vi /data/postgresql/data/postgresql.conf​
 
 
 

3.  Pgpool 설정 변경

기본경로 ( /var/lib/pgsql/13/data )로 되어 있는 부분들 모두 새 경로로 변경한다.

vi /etc/pgpool-II/pgpool.conf
 
 
 

4.  스크립트 내용 변경

Pgpool의 failover, failback을 위한 스크립트를 만들어주었고 안의 내용도 함께 변경해 주었다.
vi /data/*/script/*.sh​
 
 

5.  systemctl 리로딩 후 재시작

PostgreSql의 시스템 설정을 변경해주었기 때문에 리로딩 해주어야한다.
systemctl daemon-reload
systemctl start postgresql-13
 

6.  확인

Postgresql이 재시작되면 아래 명령어를 통해 데이터 경로가 변경되었는지 확인한다.
> 데이터경로 변경 확인
sudo -u postgres psql -c "show data_directory"

> pgpool 변경 확인
sudo -u postgres psql -c "SELECT * FROM pg_stat_replication"
sudo -u postgres psql -h 192.168.0.222 -p 9999 -U postgres postgres -c "show pool_nodes"
sudo -u postgres psql -h 192.168.0.218 -p 5432 -U postgres postgres -c "select * from pg_stat_replication" -x​

경로 설정한 후 pgpool에서 복제 슬롯을 생성하지 못하는 문제가 발생했다.

 

원인은 pgpool 스크립트에서 명령어의 실행 권한이였다.

새로 설정한 데이터 경로의 소유는 root 계정이였고 postgres 계정의 소유인 명령어를 사용하려고 하니 문제가 발생한 것이였다.

 

데이터 경로의 소유를 postgres로 변경하려고 하였지만 다른 쪽에서 접근 권한 문제가 발생하여서 스크립트에서 명령어 실행시 postgres 계정으로 실행하도록 변경하였다.