상세 컨텐츠

본문 제목

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

raspberrypi/etc

by ZelKun 2019. 9. 8. 18:21

본문

반응형


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

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

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


일전에 postgresql을 재설치하고보니

용량이 간당간당 하네요

 

pi@rasp-dev:~ $ df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/root       7.2G  5.9G  916M  87% /

devtmpfs        459M     0  459M   0% /dev

tmpfs           464M  4.0K  464M   1% /dev/shm

tmpfs           464M   19M  445M   4% /run

tmpfs           5.0M   12K  5.0M   1% /run/lock

tmpfs           464M     0  464M   0% /sys/fs/cgroup

/dev/mmcblk0p1   43M   23M   21M  53% /boot

/dev/sda1       100G  130M  100G   1% /mnt/db_file

tmpfs            93M     0   93M   0% /run/user/1000

pi@rasp-dev:~ $ 

db를 쓰다보면 용량부족이 생길것 같으니

데이터파일을 외장하드로 옮겨 보기로 했습니다

 

데이터 파일 위치를 확인하는 방법은

설정파일, psql 두가지 방법이 있습니다

위치를 변경하고서는 psql로 위치가 변경된걸 확인하면 됩니다

 

 

  • 데이터 파일 위치 확인

show data_directory;

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

postgres@rasp-dev:~$ pwd

/var/lib/postgresql/

postgres@rasp-dev:~$ ls

9.6

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 계정 홈디렉토리를 외장하드로 변경을 해줄거에요

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

설정파일을 수정하는 경우에는 없는 디렉토리를 바라보게 될테니깐요

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

pi@rasp-dev:~ $

이제 postgres 계정으로 변경하면 외장하드를 홈디렉토리로 사용합니다

 

 

  • 심볼릭 링크(symbolic link)

pi@rasp-dev:~ $ cd /var/lib/

pi@rasp-dev:/var/lib $ sudo cp -rf /var/lib/postgresql /mnt/db_file/

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

pi@rasp-dev:/var/lib $ sudo ln -s /mnt/postgre/postgresql .

pi@rasp-dev:/var/lib $ sudo service postgresql restart

pi@rasp-dev:/var/lib $ ps -ef | grep post

pi       12868 12551  0 16:12 pts/0    00:00:00 grep --color=auto post

pi@rasp-dev:/var/lib $ 

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

lrwxrwxrwx  1 root     root       23  9  7 16:12 postgresql -> /mnt/db_file/postgresql

 

pi@rasp-dev:/var/lib $ sudo su - postgres 

postgres@rasp-dev:~$ psql

psql: 서버에 연결할 수 없음: 그런 파일이나 디렉터리가 없습니다

로컬호스트에 서버가 가동 중인지,

"/var/run/postgresql/.s.PGSQL.5432" 유닉스 도메인 소켓 접근이 가능한지 살펴보십시오.

postgres@rasp-dev:~$ 

 

링크를 이용해보기위해 디렉토리를 외장하드에 복사하고 원본을 백업한뒤

하드링크를 걸어줬는데

막상 postgresql 서비스를 재실행하니 올라오질… 않네요

 

부들부들

 

검색을 해보니 postgresql.conf 를 수정해서

데이터 위치를 변경하면 된다는 니 따라해 봅니다

 

  • 설정파일

sudo vim /etc/postgresql/9.6/main/postgresql.conf

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

 

 27 # Memory units:  kB = kilobytes        Time units:  ms  = milliseconds

 28 #                MB = megabytes                     s   = seconds

 29 #                GB = gigabytes                     min = minutes

 30 #                TB = terabytes                     h   = hours

 31 #                                                   d   = days

 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 #data_directory = '/var/lib/postgresql/9.6/main'         # use data in anothe    r directory

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

 42                                         # (change requires restart)

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

 44                                         # (change requires restart)

@@@                                                                             

:set nu                                                       40,0-1         4%

설정파일을 열어보니 41 라인에 data_directory 라는 부분이 눈에 띄네요

data_directory = '/var/lib/postgresql/9.6/main'

이부분을 외장하드 경로로 수정해 줍니다

 

뭐지

역시나 서비스가 올라가질 않네요

 

rsync 를 사용해서 복사를 해보니

postgres@rasp-dev:/$ rsync -av /var/lib/postgresql /mnt/db_file/

sending incremental file list

rsync: chgrp "/mnt/database/postgresql" failed: Operation not permitted (1)

postgresql/

postgresql/.bash_history

postgresql/.psql_history

rsync: chgrp "/mnt/database/postgresql/9.6" failed: Operation not permitted (1)

rsync: chgrp "/mnt/database/postgresql/9.6/main" failed: Operation not permitted (1)

rsync: chgrp "/mnt/database/postgresql/9.6/main/base" failed: Operation not permitted (1)

rsync: chgrp "/mnt/database/postgresql/9.6/main/base/1" failed: Operation not permitted (1)

rsync: chgrp "/mnt/database/postgresql/9.6/main/base/12412" failed: Operation not permitted (1)

postgres@rasp-dev:/$ 

중간중간 실패되는게 확인되네요

명령을 허용하지 않음(failed: Operation not permitted) 이라니

 

cp 할때 옵션으로 로그를 안보게 했더니

복사가 실패된줄돌 몰랐네요

 

압축(tar)을 해보기로 했습니다

 

  • postgresql directory 압축

cd /var/lib

tar -zcvf postgresql.tar.gz ./postgresql

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

drwxrwxrwx  3 root    root    4096  9  7 19:16 postgresql

pi@rasp-dev:/var/lib $ sudo tar -zcvf postgresql.tar.gz ./postgresql

./postgresql/

./postgresql/9.6/

./postgresql/9.6/main/

./postgresql/9.6/main/pg_xlog/

./postgresql/9.6/main/pg_xlog/archive_status/

 

. . .

 

./postgresql/9.6/main/PG_VERSION

./postgresql/.psql_history

./postgresql/.bash_history

pi@rasp-dev:/var/lib $ 

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

drwxrwxrwx  3 root    root       4096  9  7 19:16 postgresql

-rw-r--r--  1 root    root    3892722  9  8 03:04 postgresql.tar.gz

pi@rasp-dev:/var/lib $

일단 에러는 없어보이니 외장하드로 이동하고 앞축을 풀거에요

 

  • 압축파일 이동 및 압축해제

pi@rasp-dev:/var/lib $ sudo mv postgresql.tar.gz /mnt/db_file/

pi@rasp-dev:/var/lib $ cd /mnt/db_file/

pi@rasp-dev:/mnt/db_file $ ls -al | grep post

-rwxrwxrwx 1 root root 3892722  9  8 03:04 postgresql.tar.gz

pi@rasp-dev:/mnt/db_file $ sudo tar -zxvf postgresql.tar.gz 

./postgresql/

./postgresql/9.6/

./postgresql/9.6/main/

./postgresql/9.6/main/pg_xlog/

./postgresql/9.6/main/pg_xlog/archive_status/

 

. . .

 

tar: postgresql/9.6/main: Cannot change ownership to uid 114, gid 120: 명령을 허용하지 않음

tar: postgresql/9.6: Cannot change ownership to uid 114, gid 120: 명령을 허용하지 않음

tar: postgresql: Cannot change ownership to uid 114, gid 120: 명령을 허용하지 않음

tar: Exiting with failure status due to previous errors

 

pi@rasp-dev:/mnt/db_file $ ls -al | grep post

drwxrwxrwx 1 root root  131072  9  7 19:16 postgresql

-rwxrwxrwx 1 root root 3892722  9  8 03:04 postgresql.tar.gz

pi@rasp-dev:/mnt/db_file $ 

pi@rasp-dev:/mnt/db_file $ du -hs ./postgresql

116M ./postgresql

pi@rasp-dev:/mnt/db_file $ du -hs /var/lib/postgresql

38M /var/lib/postgresql 

시스템 디렉토리에서 압축을 했던거라

sudo를 이용해서 압축을 풀어줍니다

근데 압축을 풀어도 명령을 헝용하지 않는다니..

 

부들부들

 

아무래도 외장하드가 exfat 라서 안되는듯 하네요

아무래도 포맷을 하고 다시 시도해봐야겠네요


관련글

[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

반응형

관련글 더보기

댓글 영역