상세 컨텐츠

본문 제목

041. Raspberry Pi 라즈베리파이 - PostgreSQL(9.6) 데이터 위치 변경 (move to postgresql data directory)

raspberrypi/raspbian

by ZelKun 2019. 9. 8. 19:12

본문

반응형


[embedded/raspberrypi] - 039. Raspberry Pi 라즈베리파이 - PostgreSQL(9.6) 재설치

[embedded/raspberrypi] - Raspberry Pi 라즈베리파이 - PostgreSQL(9.6) 데이터 디렉토리 위치 변경 삽질기(Failed to move Postgres Data directory)

[embedded/raspberrypi] - 040. Raspberry Pi 라즈베리파이 - 외장하드 포맷하기(Using Raspberry Pi mkfs format)


postgressql 데이터 디렉토리 위치변경 삽질기 후 정리된 내용입니다

 

서비스 시작/정지

sudo systemctl start postgresql

sudo systemctl stop postgresql

sudo systemctl status postgresql

 

아니면

 

sudo service postgresql start

sudo service postgresql stop

 

 

 

  • 데이터 파일 위치 확인

show data_directory;

pi@rasp-dev:~ $ sudo su - postgres 

postgres@rasp-dev:~$ pwd

/var/lib/postgresql/

postgres@rasp-dev:~$ psql

psql (9.6.13)

도움말을 보려면 "help"를 입력하십시오.

 

postgres=# show data_directory;

        data_directory        

------------------------------

 /var/lib/postgresql/9.6/main

(1개 행)

 

postgres=# 

 

 

/var/lib/postgresql 에 위치해 있네요

근데 postgres 계정 디렉토리가 /var/lib/postgresql 이라는게 눈에 띄네요

 

  • 홈디렉토리 변경(선택사항)

postgres 계정은 /var/lib/postgresql 을 홈디렉토리로 쓰는데

심볼릭 링크를 쓰면 자동으로 외장하드를 홈디렉토리로 쓸테지만

설정파일을 수정하는 경우에는 없는 디렉토리를 바라보게됩니다

pi@rasp-dev:~ $ sudo usermod -d /mnt/db_file/postgresql/ postgres 

pi@rasp-dev:~ $

usermod 를 사용해서 디렉토리를 수정해주면 외장하드를 바라보게 할 수 있습니다

 

  • 데이터파일 복사

sudo rsync -av /var/lib/postgresql /mnt/db_file

 

pi@rasp-dev:~ $ sudo service postgresql stop

pi@rasp-dev:~ $ sudo rsync -av /var/lib/postgresql /mnt/db_file/

sending incremental file list

postgresql/

postgresql/9.6/

postgresql/9.6/main/

 

. . .

 

postgresql/9.6/main/pg_xlog/archive_status/

 

sent 38,921,698 bytes  received 16,709 bytes  11,125,259.14 bytes/sec

total size is 38,860,777  speedup is 1.00

pi@rasp-dev:~ $

pi@rasp-dev:~ $ ls -al /mnt/db_file/

합계 28

drwxr-xr-x 4 root     root      4096  9  8 15:13 .

drwxr-xr-x 6 root     root      4096  9  8 12:44 ..

drwx------ 2 root     root     16384  9  8 15:12 lost+found

drwxr-xr-x 3 postgres postgres  4096  9  8 03:46 postgresql

pi@rasp-dev:~ $ 

 

postgresql 서비스를 종료하고

외장하드에 postgresql 디렉토리를 복사해줍니다

복사후에 확인해보면 권한을 유지하고 복사된걸 확인할 수 있습니다

 

  • 심볼릭 링크(symbolic link)

sudo mv /var/lib/postgresql /var/lib/postgresql_

sudo ln -s /mnt/db_file/postgresql /var/lib/postgresql

pi@rasp-dev:~ $ ls -al /var/lib | grep post

drwxr-xr-x  3 postgres postgres 4096  9  8 03:46 postgresql

pi@rasp-dev:~ $ sudo mv /var/lib/postgresql /var/lib/postgresql_

 

pi@rasp-dev:~ $ ls -al /var/lib | grep post

drwxr-xr-x  3 postgres postgres 4096  9  8 03:46 postgresql_

pi@rasp-dev:~ $ sudo ln -s /mnt/db_file/postgresql /var/lib/

pi@rasp-dev:~ $ ls -al /var/lib | grep post

lrwxrwxrwx  1 root     root       18  9  8 15:36 postgresql -> /mnt/db_file/postgresql

drwxr-xr-x  3 postgres postgres 4096  9  8 03:46 postgresql_

 

복사가 끝났으니 원본 디렉토리명을 바꿔서 백업해주고

외장하드에 복사된 디렉토리 링크를 생성해줍니다

 

  • 서비스 재시작

pi@rasp-dev:~ $ ps -ef | grep post

pi       15370 14955  0 15:39 pts/0    00:00:00 grep --color=auto post

pi@rasp-dev:~ $ sudo service postgresql start

pi@rasp-dev:~ $ ps -ef | grep post

postgres 15412     1  0 15:39 ?        00:00:00 /usr/lib/postgresql/9.6/bin/posgres -D /var/lib/postgresql/9.6/main -c config_file=/etc/postgresql/9.6/main/postgresql.conf

postgres 15414 15412  0 15:39 ?        00:00:00 postgres: 9.6/main: checkpointer process   

postgres 15415 15412  0 15:39 ?        00:00:00 postgres: 9.6/main: writer process   

postgres 15416 15412  0 15:39 ?        00:00:00 postgres: 9.6/main: wal writer process   

postgres 15417 15412  0 15:39 ?        00:00:00 postgres: 9.6/main: autovacuum launcher process   

postgres 15418 15412  0 15:39 ?        00:00:00 postgres: 9.6/main: stats collector process   

pi       15449 14955  0 15:42 pts/0    00:00:00 grep --color=auto post

pi@rasp-dev:~ $ 

서비스를 시작해주면 올라오는걸 확인할 수 있습니다

 

 

설정파일을 수정하는 방법도 해볼거에요

 

  • 설정파일 수정

pi@rasp-dev:~ $ sudo service postgresql stop 

pi@rasp-dev:~ $ sudo vim /etc/postgresql/9.6/main/postgresql.conf 

 

 32 

 33 

 34 #---------------------------------------------------------------------------    ---

 35 # FILE LOCATIONS

 36 #---------------------------------------------------------------------------    ---

 37 

 38 # The default values of these variables are driven from the -D command-line

 39 # option or PGDATA environment variable, represented here as ConfigDir.

 40 

 41

 42 data_directory = '/mnt/db_file/postgresql/9.6/main'         # use data in anothe    r directory

 43                                         # (change requires restart)

 44 hba_file = '/etc/postgresql/9.6/main/pg_hba.conf'       # host-based authent    ication file

 45                                         # (change requires restart)

 46 ident_file = '/etc/postgresql/9.6/main/pg_ident.conf'   # ident configuratio    n file

 47                                         # (change requires restart)

 48 

 49 # If external_pid_file is not explicitly set, no extra PID file is written.

:set nu                                                       42,1           4%

서비스를 종료한뒤

42번라인의 data_directory 를 외장하드 경로로 수정해줬습니다

원본은 /var/lib/postgresql/9.6/main 입니다

 

  • 서비스 재시작

pi@rasp-dev:~ $ ps -ef | grep post

pi       15570 14955  0 15:45 pts/0    00:00:00 grep --color=auto post

pi@rasp-dev:~ $ sudo service postgresql start

pi@rasp-dev:~ $ ps -ef | grep post

postgres 15612     1  2 15:45 ?        00:00:00 /usr/lib/postgresql/9.6/bin/posgres -D /mnt/db_file/postgresql/9.6/main -c config_file=/etc/postgresql/9.6/main/posgresql.conf

postgres 15614 15612  0 15:45 ?        00:00:00 postgres: 9.6/main: checkpointer process   

postgres 15615 15612  0 15:45 ?        00:00:00 postgres: 9.6/main: writer process   

postgres 15616 15612  0 15:45 ?        00:00:00 postgres: 9.6/main: wal writer process   

postgres 15617 15612  0 15:45 ?        00:00:00 postgres: 9.6/main: autovacuum launcher process   

postgres 15618 15612  0 15:45 ?        00:00:00 postgres: 9.6/main: stats collector process   

pi       15636 14955  0 15:45 pts/0    00:00:00 grep --color=auto post

pi@rasp-dev:~ $ 

서비스를 재시작 해주면

외장하드 경로를 포함하여 서비스가 잘올라오네요

 

그래도 psql을 이용해서 확인을 해줍니다

pi@rasp-dev:~ $ sudo su - postgres 

postgres@rasp-dev:~$ psql

psql (9.6.13)

도움말을 보려면 "help"를 입력하십시오.

 

postgres=# show data_directory;

       data_directory        

-----------------------------

 /mnt/db_file/postgresql/9.6/main

(1개 행)

 

postgres=# \q

postgres@rasp-dev:~$ 

이제 postgresql 데이터는 외장하드에 저장될테니

pi 용량걱정이 좀 줄어드네요

 

pi@rasp-dev:~ $ ls -al /var/lib/ | grep post

lrwxrwxrwx  1 root     root       18  9  8 15:36 postgresql -> /mnt/db/postgresql

drwxr-xr-x  3 postgres postgres 4096  9  8 03:46 postgresql_

pi@rasp-dev:~ $ sudo rm -rf /var/lib/postgresql /var/lib/postgresql_

pi@rasp-dev:~ $ 

이전 파일들은 과감히 삭제해주면 됩니다

설정으로 변경해놨기 때문에 링크도 삭제했습니다

 


관련글

[programing/GIS] - [El Capitan]postGis 외부 접속 허용하기 (mac os x)

[programing/GIS] - PostGIS Database 데이터베이스 생성 및 설정

[programing/GIS] - PostGIS 2.0 Shapefile and DBF Loader Exporter 기능 사용하기 (windows)

[programing/GIS] - PostgreSQL install PostgreSQL 설치 (mac os x)

[programing/GIS] - PostgreSQL install PostgreSQL 설치 (windows)

[programing/GIS] - PostgreSQL install PostgreSQL 설치 (ubuntu & raspbian)

[programing/GIS] - PostGis install PostGIS 설치 (mac os x, homebrew)

[programing/GIS] - PostGIS install PostGIS 설치 (widows)

[programing/GIS] - PostGIS install PostGIS 설치 (ubuntu & raspbian)

[OS/Utils] - 강추)다람쥐 SQL SQuirreL SQL 만능 DB 접속툴

[programing/GIS] - [macOS High Sierra] install PostgreSQL 10.4 포스트그레SQL 10.4 설치 (Postgre.app, PostGIS)

[programing/GIS] - [macOS High Sierra] install PostgreSQL 10.4 포스트그레SQL 10.4 설치 (PostgreSQL, PostGIS, pgJDBC, pgAdmin4)

[programing/GIS] - [macOS High Sierra] install pgAdmin4 v3.1

[embedded/raspberrypi] - Raspberry Pi 라즈베리파이 - PostgreSQL(9.6) 데이터 디렉토리 위치 변경 삽질기(Failed to move Postgres Data directory)

[embedded/raspberrypi] - 039. Raspberry Pi 라즈베리파이 - PostgreSQL(9.6) 재설치

[embedded/raspberrypi] - 041. Raspberry Pi 라즈베리파이 - PostgreSQL(9.6) 데이터 위치 변경 (move to postgresql data directory)


 

참고

https://www.digitalocean.com/community/tutorials/how-to-move-a-postgresql-data-directory-to-a-new-location-on-ubuntu-16-04

 

반응형

관련글 더보기

댓글 영역