PostgreSQL

PostgreSQL 백업 및 복구 - Tool 사용

남용2 2019. 11. 22. 14:52

이 문서에서는 툴을 사용해 PostgreSQL의 데이터를 백업 및 복구에 대해 설명한다.

이와 관련된 툴에 대해 조사를 하고, 이 툴들을 비교한 내용을 작성한다.

조사된 툴에 대해 상세 설명을 추가하고, 실행한 예제를 작성한다.

 

관련 툴 목록

github 검색에 "PostgreSQL backup"이라고 입력해서 찾는다.

툴명 최신 릴리즈 구현 언어 회사 라이선스 문서 및 Github github star 수
wal-e 2017년11월4일, v1.1.0 Python   BSD-3 https://github.com/wal-e/wal-e 2546
wal-g 2018년5월8일, v0.1.9 Go   Apache-2.0 https://github.com/wal-g/wal-g 617
PGHoard 2018년2월9일, v1.7.0 Python   Apache-2.0 https://github.com/ohmu/pghoard 435
Barman 2017년9월5일, v2.3 Python 2ndQuadrant GPL-3.0 https://www.pgbarman.org/documentation/ https://github.com/2ndquadrant-it/barman 309
pgBackRest 2018년5월7일, v2.02 C   MIT http://www.pgbackrest.org https://github.com/pgbackrest/pgbackrest 245
OmniPITR 2017년11월13, v2.0.0 Perl OHMU  

https://github.com/omniti-labs/omnipitr/tree/master/doc

https://github.com/omniti-labs/omnipitr 147
pg_rman 2018년1월30일, v1.3.6 C OmniTI   http://ossc-db.github.io/pg_rman/index.html https://github.com/ossc-db/pg_rman 82
pgBackMan 2017년6월13일, v1.2.0 Python   GPL-3.0 https://einstein.e-mc2.net/pgbackman/1.2.0/docs/pgbackman-manual-1.2.0.html https://github.com/rafaelma/pgbackman 32

pgAdmin4

2018년4월13일, v3.0 Python   postgresql licence https://www.pgadmin.org/docs/pgadmin4/dev/backup_and_restore.html https://github.com/postgres/pgadmin4 104

 

기능 비교

툴명 PostgreSQL 지원 버전 GUI/CLI PITR

스토리지 지원

wal-e >= 8.4 CLI O

AWS S3, Azure, Google Cloud, OpenStack Swift, File System

wal-g   CLI   AWS S3
PGHoard >= 9.2 CLI O AWS S3, Azure, Google Cloud, OpenStack Swift, Ceph
Barman >= 8.3 CLI O File System
pgBackRest >= 8.3 CLI   AWS S3, File System
OmniPITR   CLI O File System
pg_rman >= 8.4 CLI O File System
pgBackMan

>= 9.0 and <= 9.6

>= 9.2 for the pgbackman database

CLI X File System

pgAdmin4

>= 9.2 GUI

확인필요

https://www.pgadmin.org/docs/pgadmin4/dev/add_restore_point_dialog.html#add-restore-point-dialog

File System

 

조사된 툴에 대해 상세 설명은 해당 문서를 참고한다.

 

예제로 사용할 툴은 wal-e와 pgAdmin4이다.

다음은 fedora 27 환경에서 실행되었다. 다른 환경을 사용한다면 실행 및 결과가 달라질 수 있다.

 

wal-e에 대한 예제는 다음과 같다. 


우리는 wal-e 예제에서 몇가지 wal-e 명령어를 사용할 것이다.

여기서 사용할 명령어는 backup-push, backup-fetch, wal-push, wal-fetch이다.

backup-push: data 백업

backup-fetch: data 복구

wal-push: wal 백업

wal-fetch: wal 복구

여기서 사용하지는 않지만 추가적으로 backup-list, delete 명령어가 있다.

backup-list: wal-e 명령어로 만든 백업을 목록으로 볼 때 사용

delete: wal-e 명령어로 만든 백업을 삭제할 때 사용

 

이 예제에서 참고한 자료는 다음과 같다.

wal-e 참고 문서: https://github.com/wal-e/wal-e#file-system

wal-e 예제 참고 문서: https://gist.github.com/elithrar/8682235

pyenv 설치 참고 문서: https://tuwlab.com/ece/26135

 

PostgreSQL 데이터를 wal-e 툴을 사용하여 PITR을 할 수 있다. 

wal-e 툴을 사용하기 위해 pyenv와 envdir, pv 툴이 필요하다.

  • wal-e는 python 3.4 이상이 필요하다. 만약 python 3.4 이전 버전이 설치되어 있다면 python 버전을 스위칭 하면서 사용할 수 있는 pyenv 툴을 사용한다.
  • wal-e는 secret data를 환경변수에 등록하지 않는 것을 추천하기 때문에 필요한 환경 변수를 설정하기 위해 envdir 툴을 사용한다.

 

wal-e를 이용해 PostgreSQL DB 데이터를 백업 및 복구하는 예제는 다음과 같다.

  1. pyenv, python 3.5, envdir, wal-e 툴을 설치한다.
  2. wal-e에서 사용할 환경 변수를 설정한다.
    • 테스트를 위해 File System(AWS S3, Azure, Google Storage, Swift 등이 있음)을 사용한다.
  3. 백업은 data 백업과 wal 백업을 나눠서 한다.
    • data 백업 
      • backup-push 명령어 예: envdir /etc/wal-e.d/env wal-e backup-push <data 폴더 절대 경로>
    • wal 백업
      • postgresql.conf 파일의 다음 옵션을 설정한다.
        • wal-level = archive
        • archive_mode = on
        • archive_command = 'envdir /etc/wal-e.d/env wal-e backup-push %p'
        • archive_timeout = 60
  4. 복구는 data 복구와 wal 복구를 나눠서 한다.
    1. data 복구
      •  backup-fetch 명령어 예: envdir /etc/wal-e.d/env wal-e backup-fetch <새롭게 사용할 data 폴더 절대 경로> LATEST
        • LATEST는 backup-list 명령어를 통해 나열된 마지막 백업 이름으로 대체된다.
    2. wal 복구는 <새롭게 사용할 data 폴더 절대 경로>에 recovery.conf 파일을 생성하고, 이 파일에 restore_command와 recovery_target_time 옵션을 추가해 PIRT 복구가 가능하다.
      1. restore_command 옵션 예: restore_command = 'envdir /etc/wal-e.d/env wal-e wal-fetch %f %p'
      2. recovery_target_time 옵션 예: recovery_target_time = '2018-05-14 16:31:00'

 

다음은 위 시나리오에 대한 실행 결과이다.

  1. pyenv, python 3.5, envdir, wal-e 툴을 설치한다.

    pyenv

    --사전 설치

    $ dnf install lzop pv

     

    --pyenv 설치

    $ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

      

    -- .bashrc에 다음을 추가한다.

    export PATH="$HOME/.pyenv/bin:$PATH"

    eval "$(pyenv init -)"

    eval "$(pyenv virtualenv-init -)"

     

     

    -- .bashrc 적용

    $ source .bashrc

    python 3.5

    --python 3.5.0 버전 설치

    $ pyenv install 3.5.0

     

    --만약 설치중 다음과 같은 오류가 발생하면 compat-openssl10-devel 설치

    ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

     

    $ dnf remove openssl-devel

    $ dnf install compat-openssl10-devel

     

    --사용할 버전 변경

    $ pyenv global 3.5.0

     

     

    --버전 확인

    $ pyenv versions

      system

    * 3.5.0 (set by /home/bylee/.pyenv/version)

    envdir

    --envdir 설치

    $ pip install envdir

    Collecting envdir

      Downloading https://files.pythonhosted.org/packages/75/dd/817dc77edf4807fc2c29e28046ab83aa7ccfe27e79d24ca37d7aaa1e36bb/envdir-1.0.1-py2.py3-none-any.whl

    Installing collected packages: envdir

    Successfully installed envdir-1.0.1

    You are using pip version 7.1.2, however version 10.0.1 is available.

    You should consider upgrading via the 'pip install --upgrade pip' command.

    wal-e

    --wal-e 설치

    $ pip install wal-e

    Collecting wal-e

      Downloading https://files.pythonhosted.org/packages/d6/73/b210a8900d4fc8ef4e5b919f96358cdddcb2b909fcd81bf673b3c7f08aa6/wal-e-1.1.0.tar.gz (92kB)

        100% |████████████████████████████████| 94kB 509kB/s

    Collecting gevent>=1.1.1 (from wal-e)

      Downloading https://files.pythonhosted.org/packages/1b/92/b111f76e54d2be11375b47b213b56687214f258fd9dae703546d30b837be/gevent-1.2.2.tar.gz (3.1MB)

        100% |████████████████████████████████| 3.1MB 220kB/s

    Collecting greenlet>=0.4.10 (from gevent>=1.1.1->wal-e)

      Downloading https://files.pythonhosted.org/packages/13/de/ba92335e9e76040ca7274224942282a80d54f85e342a5e33c5277c7f87eb/greenlet-0.4.13.tar.gz (58kB)

        100% |████████████████████████████████| 61kB 2.3MB/s

    Installing collected packages: greenlet, gevent, wal-e

      Running setup.py install for greenlet

      Running setup.py install for gevent

      Running setup.py install for wal-e

    Successfully installed gevent-1.2.2 greenlet-0.4.13 wal-e-1.1.0

    You are using pip version 7.1.2, however version 10.0.1 is available.

    You should consider upgrading via the 'pip install --upgrade pip' command.

  2. wal-e에서 사용할 환경 변수를 설정한다.
    1. 테스트를 위해 File System(AWS S3, Azure, Google Storage, Swift 등이 있음)을 사용한다.

      환경 설정

      --envdir의 File System 설정 예

      --file://localhost/home/bylee/dev/stolon-test/backup/wal-e/ 경로에 AG data 백업와 AG wal 백업이 저장된다.

      $ sudo mkdir -p /etc/wal-e.d/env

      $ sudo echo 'file://localhost/home/bylee/test/wal-e/'  /etc/wal-e.d/env/WALE_FILE_PREFIX

      $ sudo chown -R bylee:bylee /etc/wal-e.d

  3. 백업은 data 백업 후 wal 백업을 한다.
    1. data 백업: wal-e의 backup-push 명령어를 사용해여 백업 
    2. wal 백업: postgresql.conf 파일을 설정하여 백업 

      --wal 백업

      $ initdb

      $ vi $PGDATA/postgresql.conf

      wal-level = archive

      archive_mode = on

      archive_command = 'envdir /etc/wal-e.d/env wal-e backup-push %p'

      archive_timeout = 60

      $ pg_ctl start

      $ psql -d postgres

       

      --wal 백업 확인

      $ cd /home/bylee/test/wal-e

      $ ll

      ...

      drwxrwxr-x. 2 bylee bylee 4096  5월 14 14:16 wal_005

       

      --data 백업

      $ envdir /etc/wal-e.d/env wal-e backup-push /home/bylee/install/pg/data/

      wal_e.main   INFO     MSG: starting WAL-E

              DETAIL: The subcommand is "backup-push".

              STRUCTURED: time=2018-05-14T07:27:39.540365-00 pid=25011

      wal_e.operator.backup INFO     MSG: start upload postgres version metadata

              DETAIL: Uploading to file://localhost/home/bylee/test/wal-e/basebackups_005/base_000000010000000000000002_00000040/extended_version.txt.

              STRUCTURED: time=2018-05-14T07:27:49.320101-00 pid=25011

      wal_e.operator.backup INFO     MSG: postgres version metadata upload complete

              STRUCTURED: time=2018-05-14T07:27:49.321561-00 pid=25011

      wal_e.worker.upload INFO     MSG: beginning volume compression

              DETAIL: Building volume 0.

              STRUCTURED: time=2018-05-14T07:27:49.346325-00 pid=25011

      wal_e.worker.upload INFO     MSG: begin uploading a base backup volume

              DETAIL: Uploading to "file://localhost/home/bylee/test/wal-e/basebackups_005/base_000000010000000000000002_00000040/tar_partitions/part_00000000.tar.lzo".

              STRUCTURED: time=2018-05-14T07:27:49.610067-00 pid=25011

      wal_e.worker.upload INFO     MSG: finish uploading a base backup volume

              DETAIL: Uploading to "file://localhost/home/bylee/test/wal-e/basebackups_005/base_000000010000000000000002_00000040/tar_partitions/part_00000000.tar.lzo" complete at 38896.8KiB/s.

              STRUCTURED: time=2018-05-14T07:27:49.724792-00 pid=25011

       

       

      --data 백업 확인 1

      $ cd /home/bylee/test/wal-e

      $ ll

      drwxrwxr-x. 3 bylee bylee 4096  5월 14 16:27 basebackups_005

       

       

      --data 백업 확인 2

      $ envdir /etc/wal-e.d/env wal-e backup-list

      wal_e.main   INFO     MSG: starting WAL-E

              DETAIL: The subcommand is "backup-list".

              STRUCTURED: time=2018-05-14T07:34:12.082096-00 pid=28562

      name    last_modified   expanded_size_bytes wal_segment_backup_start    wal_segment_offset_backup_start wal_segment_backup_stop wal_segment_offset_backup_stop

      base_000000010000000000000002_00000040  2018-05-14T07:27:50.822055      000000010000000000000002    00000040   

  4. 복구는 data 복구 후 wal 복구한다.
    1. data 복구는 backup-fetch 명령어로 복구가 가능하다.
      1.  backup-fetch 명령어 예: envdir /etc/wal-e.d/env wal-e backup-fetch /home/bylee/test/wal-e/data LATEST
        • LATEST는 backup-list 명령어를 통해 나열된 마지막 백업 이름으로 대체된다.
    2. wal 복구는 /home/bylee/test/wal-e/data에 recovery.conf 파일을 추가하고, 이 파일에 restore_command와 recovery_target_time 옵션을 추가해 PIRT 복구가 가능하다.
      1. restore_command 옵션 예: restore_command = 'envdir /etc/wal-e.d/env wal-e wal-fetch %f %p'
      2. recovery_target_time 옵션 예: recovery_target_time = '2018-05-14 16:31:00'

      --시점 복구를 위해 데이터 삽입

      $ psql -d postgres

       

       

      --data 복구

      $ envdir /etc/wal-e.d/env wal-e backup-fetch /home/bylee/test/wal-e/data LATEST

      wal_e.main   INFO     MSG: starting WAL-E

              DETAIL: The subcommand is "backup-fetch".

              STRUCTURED: time=2018-05-14T06:11:50.725530-00 pid=13245

      wal_e.worker.file.file_worker INFO     MSG: beginning partition download

              DETAIL: The partition being downloaded is part_00000000.tar.lzo.

              HINT: The absolute file key is home/bylee/test/wal-e/basebackups_005/base_000000010000000000000017_00000040/tar_partitions/part_00000000.tar.lzo.

              STRUCTURED: time=2018-05-14T06:11:50.832706-00 pid=13245

       

       

      --wal 복구

      $ cat recovery.conf

      restore_command = 'envdir /etc/wal-e.d/env wal-e wal-fetch %f %p'

      recovery_target_time = '2018-05-14 16:31:00'

       

      --PostgreSQL 시작

      $ pg_ctl -D /home/bylee/test/wal-e/data start

      waiting for server to start.... done

      server started

       

      -- wal 복구 확인

      $ psql -d postgres

 

pgadmin4에 대한 예제는 다음과 같다. 

이 예제는 pgadmin4 설치부터 시작한다.

설치가 완료가 되면 백업 및 복구를 설명한다.

 

pgadmin4 설치

다운로드 링크: https://www.pgadmin.org/download/

위 다운로드 링크에 가면 설치 방법이 다양하게 있으며,

여기서는 https://www.pgadmin.org/download/pgadmin-4-python-wheel/에서 설명하는 방법으로 설치를 진행한다.

postgresql rpm 설치를 해야 pgadmin4를 rpm으로 설치할 수 있는 것처럼 보인다.

여기서는 postgresql 설치가 필요하지 않기 때문에 rmp 설치가 아닌 다른 방법으로 pgadmin4를 설치한다.

pgadmin4 rpm 설치 파일이 없어서 python-wheel 사용한다.

--root 접속

$ su -

 

 

--python 버전 확인

[root@bylee5 ~]# python --version

Python 2.7.14

 

 

--pgadmin4 설치전에 다음 프로그램이 설치가 되어 있어야 한다.

[root@bylee5 ~]# dnf install redhat-rpm-config

[root@bylee5 ~]# dnf install python2-devel

 

 

--pgadmin4 다운로드

[root@bylee5 ~]# wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v3.0/pip/pgadmin4-3.0-py2.py3-none-any.whl

--2018-05-14 18:42:54--  https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v3.0/pip/pgadmin4-3.0-py2.py3-none-any.whl

Resolving ftp.postgresql.org (ftp.postgresql.org)... 174.143.35.246, 204.145.124.244, 217.196.149.55, ...

Connecting to ftp.postgresql.org (ftp.postgresql.org)|174.143.35.246|:443... connected.

HTTP request sent, awaiting response... 200 OK

Length: 72901847 (70M) [application/octet-stream]

Saving to: 'pgadmin4-3.0-py2.py3-none-any.whl'

 

pgadmin4-3.0-py2.py3-none-any.whl 100%[============================================================>]  69.52M  4.69MB/s    in 20s    

 

2018-05-14 18:43:16 (3.49 MB/s) - 'pgadmin4-3.0-py2.py3-none-any.whl' saved [72901847/72901847]

 

 

--pgadmin4 설치

[root@bylee5 ~]# pip install ./pgadmin4-3.0-py2.py3-none-any.whl

...

  Running setup.py install for pycrypto ... done

  Running setup.py install for WTForms ... done

  Running setup.py install for speaklater ... done

  Running setup.py install for Flask-BabelEx ... done

  Running setup.py install for Flask-Principal ... done

  Running setup.py install for Flask-Mail ... done

  Running setup.py install for Flask-Login ... done

  Running setup.py install for importlib ... done

  Running setup.py install for pyrsistent ... done

  Running setup.py install for htmlmin ... done

  Running setup.py install for Flask-HTMLmin ... done

Successfully installed Babel-2.5.3 Flask-BabelEx-0.9.3 Flask-Gravatar-0.5.0 Flask-HTMLmin-1.3.2 Flask-Login-0.3.2 Flask-Mail-0.9.1 Flask-Principal-0.4.0 Flask-Security-3.0.0 Flask-WTF-0.14.2 WTForms-2.1 argparse-1.4.0 backports.csv-1.0.5 extras-1.0.0 fixtures-3.0.0 html5lib-1.0.1 htmlmin-0.1.12 importlib-1.0.4 linecache2-1.0.0 passlib-1.7.1 pgadmin4-3.0 pycrypto-2.6.1 pyrsistent-0.14.2 python-mimeparse-1.6.0 pytz-2018.3 speaklater-1.3 sqlparse-0.2.4 testtools-2.3.0 traceback2-1.4.0 unittest2-1.1.0 webencodings-0.5.1

You are using pip version 9.0.1, however version 10.0.1 is available.

You should consider upgrading via the 'pip install --upgrade pip' command.

 

--pgadmin4 설치 경로 확인

[root@bylee5 ~]# cd /

[root@bylee5 /]# find . -wholename "*pgadmin4/config.py"

./usr/lib/python2.7/site-packages/pgadmin4/config.py

find: './run/user/1000/gvfs': Permission denied

 

 

--pgadmin4 시작

[root@bylee5 /]# cp /usr/lib/python2.7/site-packages/pgadmin4/config.py /usr/lib/python2.7/site-packages/pgadmin4/config_local.py

[root@bylee5 /]# python  /usr/lib/python2.7/site-packages/pgadmin4/pgAdmin4.py

NOTE: Configuring authentication for SERVER mode.

 

Enter the email address and password to use for the initial pgAdmin user account:

 

Email address: bylee@bitnine.net

Password:

Retype password:

pgAdmin 4 - Application Initialisation

======================================

 

Starting pgAdmin 4. Please navigate to http://127.0.0.1:5050 in your browser.

 

pgadmin4 로그인

웹브라우저의 주소창에 http://127.0.0.1:5050라고 입력하면 다음과 같은 로그인 화면이 나타난다.

<사진>

 

로그인이 정상적으로 되었다면 다음과 같은 화면이 나타난다.

<사진>

 

위 화면과 같이 보인다면 PostgreSQL 서버에 연결을 시도해 본다.

연결하기 위해 왼쪽 영역에서 있는 Server 항목을 우클릭하여 create > server... 선택한다.

<사진>

 

Create - Server 화면이 나타나면 General 탭의 Name 항목에 이름을 설정하고, Connection 탭의 Host, Port, Maintenance database, Username을 알맞게 입력한 다음에 Save 버튼을 누른다.

이에 대한 예제 결과 화면은 다음과 같다.

<사진>

 

백업 및 복구 관련 명령어를 사용하기 위해 PostgreSQL의 바이너리 경로를 설정해야 한다.

설정은 File > Preferences > Paths > Binary paths로 이동해 PostgreSQL Binary Path 항목에 입력한다.

이에 대한 예제 결과 화면은 다음과 같다.

 

테스트 데이터 생성

질의를 입력할 수 있는 창을 만들기 위해 Tools > Query Tool 클릭하여 생성한다.

다음과 같이 명령어를 입력한다.

select 1;

이에 대한 예제 결과 화면은 다음과 같다.

<사진>

 

pgadmin4 백업 및 복구

백업 및 복구 테스트는 pgadmin4의 backup 기능을 이용해 postgres 데이터베이스를 백업하고, pgadmin4의 restore 기능을 이용해 복구한다.

백업시 텍스트 포맷은 콘솔의 psql 명령어로만 복구가 가능하다.

백업시 비 텍스트 포맷은 restore 명령어로만 복구가 가능하다.

따라서 pgadmin4에서는 psql 명령어를 사용할 수 없고, restore 명령어만 제공하기 때문에 비 텍스트 포맷으로만 백업을 한다.

 

백업

백업은 pgadmin4 화면의 Browser 영역에서 백업하고 싶은 데이터베이스명을 우클릭하여 backup... 항목을 선택으로 가능하다.

Backup (database: postgres)이라는 화면이 나타나고, 이 화면에서 세부적인 백업 설정을 할 수 있다.

이 예제에서는 General 탭의 Filename과 Format 항목만 설정하고 Backup 버튼을 누른다. 나머지 항목들은 기본값을 사용한다.

Format은 Custom 또는 Jar을 선택한다. 다른 것으로 선택하면 restore를 할 수 없고, psql을 사용해야 한다.

예제 결과는 다음과 같다.

 

 

백업이 정상적으로 성공되었다면 다음과 같은 화면이 보일 것이다.

 

위 화면에서 Click here for details 링크를 클릭하면 다음과 같은 상세 과정이 보인다.

 

 

위 화면에 통해 백업 파일이 저장된 경로를 확인할 수 있다. --file 옵션에 경로가 있다.

/var/lib/pgadmin/storage/bylee 경로로 이동하면 backup 파일이 생성된 것을 확인할 수 있다.

[root@bylee5 pgadmin]# cd /var/lib/pgadmin/storage/bylee

[root@bylee5 bylee]# ll

-rw-r--r--. 1 root root  8478  5월 15 12:00  backup

 

복구

복구하기 위해 새로운 데이터베이스를 다음과 같이 선택해 생성한다. 

 

 

backup이라는 데이터베이스를 다음과 같이 생성한다.

 

backup 데이터베이스를 우클릭하여 restore... 항목을 선택한다. 결과는 다음과 같다.

 

 

Restore (Database: backup) 화면이 나타나고, 이 화면에서 세부적인 복구 설정을 할 수 있다.

이 예제에서는 General 탭의 Format, Filename 항목만 설정하고 Restore 버튼을 누른다. 나머지 항목들은 기본값을 사용한다.

예제 결과는 다음과 같다.

 

 

복구가 정상적으로 성공되었다면 다음과 같은 화면이 보일 것이다.

 

 

위 화면에서 Click here for details 링크를 클릭하면 다음과 같은 상세 과정이 보인다.

 

 

데이터 확인

Tools > Query Tool 클릭해 질의를 입력할 수 있는 창을 만든다.

다음 명령어를 입력하고, 실행한다.

select 1;

결과 화면은 다음과 같다.

<사진>

 

서버명 > Backup Globals... 백업은 가능하지만, Format이 Plain이라서 pgadmin4의 restore로 복구할 수 없다.

콘솔의 psql 명령어를 사용해야 하기 때문에 여기서는 다루지 않는다.

 

부록


 

개별적으로 wal 파일을 백업하기

  • wal 백업 명령어 예: envdir /etc/wal-e.d/env wal-e wal-push <data 폴더 절대 경로>/pg_wal/00000001000000000000001C
    • 00000001000000000000001C는 wal 파일이다.

      [bylee@bylee5 pg_wal]$ envdir /etc/wal-e.d/env wal-e wal-push /home/bylee/install/agensgraph/data/pg_wal/000000010000000000000004

      wal_e.worker.upload INFO     MSG: begin archiving a file

              DETAIL: Uploading "/home/bylee/install/agensgraph/data/pg_wal/000000010000000000000004" to "file://localhost/home/bylee/test/wal-e/wal_005/000000010000000000000004.lzo".

              STRUCTURED: time=2018-05-14T07:06:46.956190-00 pid=12597 action=push-wal key=file://localhost/home/bylee/test/wal-e/wal_005/000000010000000000000004.lzo prefix=home/bylee/test/wal-e/ seg=000000010000000000000004 state=begin

      wal_e.worker.upload INFO     MSG: completed archiving to a file

              DETAIL: Archiving to "file://localhost/home/bylee/test/wal-e/wal_005/000000010000000000000004.lzo" complete at 290605KiB/s.

              STRUCTURED: time=2018-05-14T07:06:47.068667-00 pid=12597 action=push-wal key=file://localhost/home/bylee/test/wal-e/wal_005/000000010000000000000004.lzo prefix=home/bylee/test/wal-e/ rate=290605 seg=000000010000000000000004 state=complete

 

envdir의 S3 설정 예

$ mkdir -p /etc/wal-e.d/env

$ echo "YOUR_AWS_ACCESS_KEY" > /etc/wal-e.d/env/AWS_ACCESS_KEY_ID

$ echo "YOUR_AWS_SECRET" > /etc/wal-e.d/env/AWS_SECRET_ACCESS_KEY

$ echo 's3://myservice/pg-backups'  /etc/wal-e.d/env/WALE_S3_PREFIX

$ chown -R root:postgres /etc/wal-e.d


pgadmin4 import/export

문서:https://www.pgadmin.org/docs/pgadmin4/dev/import_export_data.html#import-export-data

 

pgadmin4 PITR이 가능한가? 추가적으로 테스트 필요

문서: https://www.pgadmin.org/docs/pgadmin4/dev/add_restore_point_dialog.html#add-restore-point-dialog