데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      Percona Backup for MongoDB on AWS S3

      sanghun 20.09.29
      1,084 4 1

      Percona 사에서 개발/제공하는 MongoDB Backup 솔루션 Percona Backup for MongoDB 소개합니다.

      설명

      장점

      단점

      오픈소스 DB그룹 Percona Tool

      lock-in 없이 사용 가능

      시점 복구 및 백업속도 개선

      User Interface 제공

      샤드 클러스터 일관성 보장

      AWS S3 호환 가능

      압축 및 병렬 수행 à 속도 개선

      백업 시간예상/진행현황 확인 가능

      DB성능 영향 최소화

      시점 복구 가능

      엔진 부하를 최소화 했으나
      Multi thread로 인한 서버 자원 사용율 이슈는 여전함
      à 별도 노드에서 수행 권고

      백업 방식 비교

      기능 및 비용면에서 Percona Backup for MongoDB 활용도가 높음

      PBM Architecture

      pbm-agent 가 각 DB노드에 설치됩니다. 각 노드 상태 점검, 백업/복구 명령을 수행합니다.

       

      OpLog를 활용하여 시점복구를 제공합니다. 

       

       

      PBM 설치

      단계

      command

      유저 생성

      db.getSiblingDB("admin").createRole({ "role": "pbmAnyAction",

            "privileges": [

               { "resource": { "anyResource": true },

                 "actions": [ "anyAction" ]

               }

            ],

            "roles": []

         });

      db.getSiblingDB("admin").createUser({user: "pbmuser",

             "pwd": "secretpwd",

             "roles" : [

                { "db" : "admin", "role" : "readWrite", "collection": "" },

                { "db" : "admin", "role" : "backup" },

                { "db" : "admin", "role" : "clusterMonitor" },

                { "db" : "admin", "role" : "restore" },

                { "db" : "admin", "role" : "pbmAnyAction" }

             ]

          });

      Percona repo

      설치

      yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

      percona-release enable pbm release

       

      단계

      command

      패키지 설치

      percona-backup-mongodb

      Service 등록

      vi /usr/lib/systemd/system/pbm-agent.service

      [Unit]

      Description=pbm-agent

      After=time-sync.target network.target

       

      [Service]

      EnvironmentFile=-/etc/default/pbm-agent

      Type=simple

      User=pbm

      Group=pbm

      PermissionsStartOnly=true

      ExecStart=/usr/bin/pbm-agent

       

      [Install]

      WantedBy=multi-user.target

      PBM-data 설정

      # mkdir –p /MONGO/pbm

      # vi /MONGO/pbm/pbm_config.yaml

       

       storage:

           type: s3

           s3:

             region: ap-northeast-2

             bucket: sanghunpbm

             credentials:

               access-key-id: [KEY-ID]

               secret-access-key: [KEY]

       

      단계

      command

      PBM-data

      설정 적용

      #  pbm config --file=/MONGO/pbm/pbm_config.yaml --mongodb-uri "mongodb://pbmuser:secretpwd@127.0.0.1:27017/"

      [Config set]

      ------

      pitr:

        enabled: false

      storage:

        type: s3

        s3:

          provider: aws

          region: ap-northeast-2

          bucket: sanghunpbm

          credentials:

            access-key-id: '***'

            secret-access-key: '***'

      기동

      cd /MONGO/pbm

      nohup pbm-agent --mongodb-uri "mongodb://pbmuser:secretpwd@localhost:27017" > pbm-agent.log 2>&1 &

       

       

      PBM 백업 & 복구

      백업

      단계

      command

      시점복구 설정

      pbm config --set pitr.enabled=true

      백업수행

       pbm backup

      백업확인

      # pbm list

      Backup snapshots:

        2020-09-29T08:50:37Z

      PITR :

        2020-09-29T08:42:14 - 2020-09-29T08:50:56

        2020-09-29T08:50:57 - 2020-09-29T09:11:29

      S3 bucket 에서 백업파일 확인

      복구

      단계

      command

      테스트 데이터생성

      use pbmtest;

      db.pbm_table.insert({"date":new Date(Date.now())});

      db.pbm_table.insert({"date":new Date(Date.now())});

      ……

      db.pbm_table.insert({"date":new Date(Date.now())});

      데이터 확인

      db.pbm_table.find()

      단계

      command

      장애 유발

      데이터 삭제

      > use pbmtest;

      > db.deleteMany({})

      > db.pbm_table.deleteMany({})

      { "acknowledged" : true, "deletedCount" : 57 }

       

      백업확인

      # pbm list

      Backup snapshots:

        2020-09-29T08:50:37Z

      PITR :

        2020-09-29T08:42:14 - 2020-09-29T08:50:56

        2020-09-29T08:50:57 - 2020-09-29T09:11:29

       

      단계

      command

      복구 수행

       pbm restore --time="2020-09-29T09:21:25"

      ...Restore to the point in time '2020-09-29T09:21:25' has started

      복구 데이터 확인

      db.pbm_table.find()

       

      à 09:21:25 이전까지 복구 완료

       

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      sanghun 님의 최신 블로그

      더보기
      동영상 기고하기