본문 바로가기

업무

우분투 , RockyOS postgresql db 이관하기

 아주 오랜만에 포스팅이다.

계속되는 프로젝트 일정에 치여서 그동안 제대로 정리를 할 시간을 가지지 못한 것에 반성하고 있다.

이번 포스팅은 우분투 서버에 세팅되어있는 postgresql10버전의 데이터를 , 리눅스 기반의 RockyOS로 이관할 때

힘들었던 것과 방법을 정리해놓고자 작성한다.

검색을 해봤지만 내 스킬이 부족한지, 혹은 너무 간단하게만 작성돼있는 포스팅이 많아서 나름 자세히 정리하고자 한다.

 

환경1 (legacy) :
- ubuntu 20.04.5 LTS
- postgresql : 10

환경2 (new) :
- RockyOS 8
- postgresql : 10
- postgresql : 14

 

 

 서버를 운영하다보면 DB data나 server log 들 때문에 disk 용량이 부족한 경우가 있다.

postgresql 같은 경우에는 , db data directory가 기본적으로 / 하위 경로에 설치되기 때문에, disk의 용량이 부족하면

service 가 정상적으로 실행되지 않아서 db connection이 되질 않는다.

이것을 해결하고자 db data directory를 변경할 뿐 아니라, 

새로운 사양의 서버로 데이터를 이관하기 위해 글을 작성해 놓는다.

덧붙이자면 , 기존 서버는 postgresql 10을 단독으로 사용하고 있어서 문제가 없었는데..

새로 구축한 서버는 postgresql14를 이미 이용중이고 10을 추가로 서비스 해야하기 때문에 여기서 삽질을 많이 했다 ㅡ..

 

 

 

 먼저 legacy 서버의 데이터 백업부터 진행한다.

df -h 명령어로 확인해보니 , 기본으로 마운트 되어있는 sdb4 같은 경우 99% 를 사용하고 있어 ,

tar 파일로 압축을 할 때에도 다른 path를 지정해줘야할 것 같다. 다른 파티션인 sda1 혹은 sda2를 사용하면 될 것 같다. 

윈도우 기준에서는 현재 sdb4는 C드라이브로 할당한것이고, sda1은 D드라이브 , sda2는 E드라이브 정도로 생각하자.

맞는 설명은 아닐 수 있다.

 

 

즉 , C드라이브에 있는 data 파일을 D드라이브나 E드라이브에 옮기는 것인데, 나는 sda2로 tar 압축 파일을 생성할 것이다.

 

 

 

설치되어있는 postgresql 의 data 경로를 확인 한 후

postgres=# show data_directory;
       data_directory        
-----------------------------
 /var/lib/postgresql/10/main

 

 

 

ls 명령어로 확인을 해보면 , main 디렉토리가 존재할 것이다.

OS 따라 , 혹은 설치하는 패키지에 따라 해당 디렉토리가 main이 아닌 data 일 경우도 있다.

( RockyOS dnf 설치로는 data로 설치되었음 )

메인 디렉토리 안은 이렇게 생겼으니 본인 data 폴더와 형식이 같다면 ok

 

 

 

그 후 sudo tar cf /disk2/backup.tar -C /var/lib/postgresql/10/main

명령어를 사용하게 되면 , /disk2 경로에, backup.tar라는 이름으로, /var/lib/postgresql/10/main 에 있는 것들을 tar로 압축하게 된다.

해당 경로로 이동해보면 .tar 확장자의 파일이 생성 된 것을 확인 가능하다.

 

 

 

 

 이제 다음으로는 저 파일을 다른 서버로 옮겨줄 것인데, FileZilla 같은 FTP 툴을 사용해서 옮겨도 괜찮지만,

오래 걸릴 것 같기도 하고, 같은 망 내에서 쓰는 상태라서 SSH로 바로 전송하려고 한다.

명령어는 

 

scp /경로/파일명 new서버사용자명@new서버IP:/new서버경로

ex) scp /disk2/backup.tar devEden@192.168.0.111:/uesrData

 

이런식으로 작성하면 된다.

작성 후 엔터를 누르면

 

이런 문구가 뜰 수 있는데, 이는 SSH 공개키가 이전에 본 적이 없어서 발생하는 것이다.

보안상의 이유로 SSH가 호스트의 신원을 확인하려고 뜨는 것인데, yes를 타입하고 엔터를 누르면

해당 사용자로 인증하기 위해 패스워드를 입력하게 되는데 new 서버의 패스워드를 입력하게 되면

전송이 실행되고 진행% 과 속도 시간이 표시됨

 

 

 

new 서버에 접속해서 해당 경로에 이동해서 목록을 확인해보면

다음과 같이 backup.tar 파일이 이동된 것을 확인할 수 있다.

 

데이터는 옮겼으니, 다음 포스팅에서는 RockyOS8에서 postgresql10 버전과 postgresql14버전을 동시에 service하는 것과,

default data directory(postgresql 기본 data경로)를 변경 하는 것을 작성하겠다.