DB/PostgreSQL

[PostgreSQL - DBA] wsl에 PostgreSQL 설치하기(pg_dumpall로 백업하기) (pg_Hint 2/3)

Kang_hobin 2023. 10. 25. 18:05

부제 : PostgreSQL Hint 사용하기 - 2

https://holog.tistory.com/80

 

[PostgreSQL - DA] PostgreSQL Hint 사용하기

오늘은 PostgreSQL에서 힌트를 사용하는 것을 연습해보려 한다. 일단 PostgreSQL은 Hint를 사용하려면 pg_hint_plan을 Extension 해야한다. 이게 무슨말이냐.. 하면.. PostgreSQL은 외부 lib를 추가하듯이 pg_hint_plan

holog.tistory.com

이전에 위에 글을 작성할때 보면 내가 로컬에 설치할 때 윈도우에 설치해서 Hint 사용에 실패했었다.

그래서 드디어 위에 글을 이어서 작성하기 위해... 힌트를 써보기 위해.. 윈도우에 wsl를 설치하여 ubuntu를 설치하고 거기에 postgreSQL을 설치하려 한다. 

순서는 아래와 같이 되겠다.

1. 윈도우에 wsl 설치(ubuntu)

2. wsl에 postgreSQL 설치

3. 기존 윈도우에 깔려있는 postgreSQL 덤프떠서 가져오기 


1. 윈도우에 wsl 설치(ubuntu)

너무나도 쉽다.

PowerShell을 관리자 모드로 실행해 준 후

wsl --install

을 입력한다.

끝임.

 

다시 시작하면 된다니 재시작 해보자.

 

계정명 만들고 비밀번호 지정하니 끝~

 

2. wsl에 postgreSQL 설치

이제 postgreSQL을 우분투에 깔아보자.

먼저 apt show postgresql로 설치 가능한 버전을 확인해본다.

14+238 이라네.. 난 16을 설치하고 싶으니 apt update를 조지자.

난 패키지 구성 생성과 저장소 키 추가를 먼저 해주고 나서 update를 했다. 

(아래 더보기에서 2번과 3번)

update 하고 나서 show 해보면 16 버전이 보인다!


더보기
PostgreSQL 16을 Ubuntu에 설치하는 방법은 다음과 같습니다.

1. 패키지 업데이트:
   ```
   sudo apt update
   ```

2. PostgreSQL APT 저장소 추가:
   ```
   sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
   ```

3. PostgreSQL 저장소 키 추가:
   ```
   wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
   ```

4. 패키지 목록 업데이트:
   ```
   sudo apt update
   ```

5. PostgreSQL 16 설치:
   ```
   sudo apt install postgresql-16
   ```

6. PostgreSQL 서비스 시작:
   ```
   sudo service postgresql start
   ```

7. PostgreSQL 서비스 자동 시작 구성 (옵션):
   ```
   sudo systemctl enable postgresql
   ```

이제 PostgreSQL 16이 Ubuntu 시스템에 설치되었습니다. 필요한 경우, 데이터베이스를 생성하고 사용자를 추가하려면 `createdb`와 `createuser` 명령을 사용할 수 있습니다.

apt도 update 했으니 이제 설치를 해보자

명령어는 다음과 같다.

sudo apt install postgresql-16

쭉~ Y 하면 설치된다.

물론 포트나 이런 설정은 다 기본으로 설정된....다. 아 맞다 난 기본 포트가 이미 5432로 16버전이 깔려 있었다.

아래에서 변경해주자.

그 전에 먼저 postgresql 실행 종료 명령어는 아래와 같다.

service가 자동으로 생성 되어 있으니 저걸 enable하면 .. 서버 킬 때 자동으로 올라오겠지만

난 그냥 수동으로 하는게 맘이 편하니까 패스.

# postgresql 실행
$ sudo service postgresql start

# postgresql 상태 확인
$ sudo service postgresql status

# postgresql 종료
$ sudo service postgresql stop

 

아까 말한 port 라던지.. 접근 ip 허용이라던지.. 변경하려면 pg_hba.conf 파일을 수정해야 한다.

vi로 열러서 변경해주자

 

IPv4 local connections: 아래 부분을 주석하고 변경해줬다!!! 자세한 건 아래 더보기를 참고~

더보기

[pg_hba.conf]  설정 파일의 Method 옵션은 아래와 같고, PostgreSQL 공식 문서를 참고하였습니다.

  • trust : 무조건 접속을 허용합니다. 이 방법을 사용하면 PostgreSQL 데이터베이스 서버에 연결할 수 있는 모든 사람이 암호나 다른 인증 없이 원하는 PostgreSQL 사용자로 로그인할 수 있습니다.
  • reject : 무조건 연결을 거부합니다. 이것은 그룹에서 특정 호스트를 “ 필터링 “reject 하는 데 유용합니다. 예를 들어 한 라인은 특정 호스트의 연결을 차단할 수 있고 나중 라인은 특정 네트워크의 나머지 호스트가 연결할 수 있도록 합니다.
  • scram-sha-256 : SCRAM-SHA-256 인증을 수행해 사용자의 암호를 확인합니다.
  • md5 : SCRAM-SHA-256 또는 MD5 인증을 수행해 사용자의 암호를 확인합니다.
  • password : 클라이언트가 인증을 위해 암호화되지 않은 암호를 제공하도록 요구합니다. 암호는 네트워크를 통해 일반 텍스트로 전송되기 때문에 신뢰할 수 없는 네트워크에서는 사용해서는 안 됩니다.
  • gss : GSSAPI를 사용해 사용자를 인증합니다. 이것은 TCP/IP 연결에만 사용할 수 있습니다. GSSAPI 암호화와 함께 사용할 수 있습니다.
  • sspi : SSPI를 사용해 사용자를 인증합니다. 이것은 Windows에서만 사용할 수 있습니다.
  • ident : 클라이언트의 ident 서버에 연결하여 클라이언트의 운영 체제 사용자 이름을 얻고 요청한 데이터베이스 사용자 이름과 일치하는지 확인합니다. ID 인증은 TCP/IP 연결에서만 사용할 수 있습니다. 로컬 연결에 대해 지정된 경우 피어 인증이 대신 사용됩니다.
  • peer : 운영 체제에서 클라이언트의 운영 체제 사용자 이름을 가져와서 요청한 데이터베이스 사용자 이름과 일치하는지 확인합니다. 이것은 로컬 연결에만 사용할 수 있습니다.
  • lda : LDAP 서버를 사용해 인증합니다.
  • radius : RADIUS 서버를 사용해 인증합니다.
  • cert : SSL 클라이언트 인증서를 사용해 인증합니다.
  • pam : 운영 체제에서 제공하는 PAM(Pluggable Authentication Modules) 서비스를 사용해 인증합니다.
  • bsd : 운영 체제에서 제공하는 BSD 인증 서비스를 사용해 인증합니다.

참고 : https://backendcode.tistory.com/265

그리고 listen_address = 부분을 '0.0.0.0' (모두 허용) 으로 열어주고,

port를 5555로 변경해줬다. (중간 부분에 있으니 참고~)

변경해줬으니 한번 확인해보자.

난 아직 postgreSQL을 실행 하지 않아서 그냥 실행만 시켰는데, 혹시 떠있었다면 재시작 하시길 바란다.

 

접속할때마다 유저 이름 치기 싫으면 이렇게 우분투 접속 계정을 바꿔서 접속해도 된다.

자 이제 접속을 해보자.

psql -h 127.0.0.1 -p 5555 -U postgres -W

옵션은 뭐 딱 봐도 보일테니 굳이 설명하지 않겠다.. 

성공~

혹시나 방화벽 확인 해봤는데 이미 열려있어서 패스~

방화벽은 이미 inactive 였군


3. 기존 윈도우에 깔려있는 postgreSQL 덤프떠서 가져오기 

 

이제 디비 덤프를 떠보자.

먼저 윈도우에 깔려있는 postgreSQL에 접속하기 위해 cmd 창을 킨 후에 pg_dumpall로 백업을 받으려 했다.

근데 환경변수가 15꺼로 잡혀있어있나.. 버전이 다르다고 한다. 버전 다르다고 백업이 안되네. 바꿔주자..

아씨 환경변수가 예전 15꺼로 잡혀있나보다

다시 시작..

pg_dumpall 의 옵션들은 아래와 같다.

pg_dumpall -d {DB_NAME} -U {사용자이름} > {db backup 파일명}

왜 암호를 3번이나 치지?
성공~

 

이제 이걸 우분투쪽에 다시 리스토어 해보자

먼저 우분투에 파일을 옮겨놓고~ (윈도우에서 편하게 옮기기 가능)

드래그 드랍 개꿀
옮겨진 파일을 우분투에서 확인! 잘 있다.

 

그럼 이제 아래 명령어로 sql 형식으로 받아져 있는 db_dumpall의 결과파일을 실행하자!!

pg_dumpall은 유저나 롤도 가져오기 때문에 postgres가 이미 있다는 문구도 나온다.
끝!!

 

다 끝났으니 잘 가져와 졌는지 확인해보자.

전 글에서 만들어본 temp_user나 temp_schema.. 그리고 default privileges 등등 다 잘 백업 된 걸 볼 수 있다.~!!!!

 

 

아 근데 그러고 보니 hint 를 쓸라고 이짓을 한거였지...

다음은 힌트 패키지를 extension 해보도록 해야겠다.

너무 길어졌으니 이번 글에서는 여기까지..

 

 

다음글 : 

2023.11.06 - [DB/PostgreSQL] - [PostgreSQL - DBA] pg_hint_plan 설치하기 (pg_Hint 3/3)

 

[PostgreSQL - DBA] pg_hint_plan 설치하기 (pg_Hint 3/3)

pg_hint_plan 1탄 .. : 2023.10.13 - [DB/PostgreSQL] - [PostgreSQL - DA] PostgreSQL Hint 사용하기 (pg_Hint 1/3) [PostgreSQL - DA] PostgreSQL Hint 사용하기 (pg_Hint 1/3) 오늘은 PostgreSQL에서 힌트를 사용하는 것을 연습해보려 한다.

holog.tistory.com