ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • PostgreSQL 백업 및 복구 - Tool 사용
    PostgreSQL 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

     

    'PostgreSQL' 카테고리의 다른 글

    PostgreSQL Authorization  (0) 2019.11.22
    PostgreSQL 백업 및 복구 - Migration  (0) 2019.11.22
    PostgreSQL 백업 및 복구 - 명령어 사용  (0) 2019.11.22
    대기업 PostgreSQL DBA 면접 후기  (1) 2019.11.22
    audit 제품 비교  (0) 2019.11.08
Designed by Tistory.