RepliByte를 사용하여 prod DB로 dev Postgres DB를 시드하는 방법

9066 단어 replibytetutorial

소개



my company에서는 개발자가 AWS에 앱을 쉽게 배포할 수 있도록 지원하는 플랫폼을 구축합니다. 우리가 가지고 있는 주요 기능 중 하나는 Preview Environment입니다. 이를 통해 모든 개발자는 모든 풀 요청에 대해 프로덕션에서 전체 복제본 환경을 만들 수 있습니다. 편리하고 데이터가 포함된 앱과 데이터베이스를 복제하는 방법을 찾아야 했습니다. 그래서 클라우드 데이터베이스를 동기화하고 민감한 데이터를 숨기기 위해 Rust로 작성된 오픈 소스 도구RepliByte를 만들었습니다 🔥

제품 Postgres DB를 S3에 백업




source:
  connection_uri: $DATABASE_URL
  encryption_key: $MY_PRIVATE_ENC_KEY # optional 
bridge:
  bucket: $BUCKET_NAME
  access_key_id: $ACCESS_KEY_ID
  secret_access_key: $AWS_SECRET_ACCESS_KEY


백업을 실행하려면

replibyte -c prod-conf.yaml backup run


백업을 나열하려면

replibyte -c prod-conf.yaml backup list

type          name                    size    when                    compressed  encrypted
PostgreSQL    backup-1647706359405    154MB   Yesterday at 03:00 am   true        true
PostgreSQL    backup-1647731334517    152MB   2 days ago at 03:00 am  true        true
PostgreSQL    backup-1647734369306    149MB   3 days ago at 03:00 am  true        true


민감한 데이터 정리



RepliByte는 Transformers를 제공하여 데이터베이스에서 중요한 데이터를 정리합니다.

# Transformers

Here is a list of all the transformers available.

| id              | description                                                                                        | available |
| --------------- | -------------------------------------------------------------------------------------------------- | --------- |
| transient       | Does not modify the value                                                                          | yes       |
| random          | Randomize value but keep the same length (string only). [AAA]->[BBB]                               | yes       |
| first-name      | Replace the string value by a first name                                                           | yes       |
| email           | Replace the string value by an email address                                                       | yes       |
| keep-first-char | Keep only the first char for strings and digit for numbers                                         | yes       |
| phone-number    | Replace the string value by a phone number                                                         | yes       |
| credit-card     | Replace the string value by a credit card number                                                   | yes       |
| redacted        | Obfuscate your sensitive data (>3 characters strings only). [4242 4242 4242 4242]->[424**********] | yes       |


Transformers를 사용하려면 구성 파일을 편집하고 추가해야 합니다.

source:
  connection_uri: $DATABASE_URL
  encryption_key: $MY_PRIVATE_ENC_KEY # optional 
  transformers:
    - database: public
      table: employees
      columns:
        - name: last_name
          transformer_name: random
        - name: birth_date
          transformer_name: random-date
        - name: first_name
          transformer_name: first-name
        - name: email
          transformer_name: email
        - name: username
          transformer_name: keep-first-char
    - database: public
      table: customers
      columns:
        - name: phone
          transformer_name: phone-number
bridge:
  bucket: $BUCKET_NAME
  access_key_id: $ACCESS_KEY_ID
  secret_access_key: $AWS_SECRET_ACCESS_KEY


그러면 Dev Postgres DB 👌를 시드하는 동안 민감한 데이터가 숨겨집니다.

개발용 Postgres DB 시드



백업을 복원하려면 먼저 YAML 구성 파일에서 destination를 선언해야 합니다.

bridge:
  bucket: $BUCKET_NAME
  access_key_id: $ACCESS_KEY_ID
  secret_access_key: $AWS_SECRET_ACCESS_KEY
destination:
  connection_uri: $DATABASE_URL
  decryption_key: $MY_PUBLIC_DEC_KEY # optional


그런 다음 replibyte backup list를 실행하여 사용 가능한 모든 백업을 나열해야 합니다.

replibyte -c prod-conf.yaml backup list

type          name                    size    when                    compressed  encrypted
PostgreSQL    backup-1647706359405    154MB   Yesterday at 03:00 am   true        true
PostgreSQL    backup-1647731334517    152MB   2 days ago at 03:00 am  true        true
PostgreSQL    backup-1647734369306    149MB   3 days ago at 03:00 am  true        true


replibyte restore는 dev 데이터베이스를 시드합니다.

replibyte -c prod-conf.yaml restore -v latest

OR 

replibyte -c prod-conf.yaml restore -v backup-1647706359405


또 뭐?


  • RepliByte는 Rust로 작성되었으며 모든 작업이 즉석에서 이루어집니다. 추가 디스크 공간이 소비되지 않고 데이터 유출 위험이 없음을 의미합니다. ⚡️
  • RepliByte는 MongoDB도 지원합니다(Benny - 기여자에게 감사) 🔥
  • 완전한 데이터 동기화 💪🏼
  • 다양한 클라우드 제공업체에서 작업 🌍
  • 여러 변환기를 사용하여 민감한 데이터를 숨길 수 있습니다 🙈
  • TB의 데이터를 백업하도록 설계됨 🏆
  • 특정 테이블에 대한 데이터 동기화 건너뛰기 👌
  • 실시간 데이터 압축 해제(Zlib) 및 암호화 해제(AES-256)🛡

  • 결론



    RepliByte는 데이터베이스 시드를 매우 쉽고 편리하게 만들어주는 명령줄 도구입니다. 하나의 명령으로 Docker를 사용하여 로컬에서 데이터베이스를 복원하는 방법을 연구 중입니다. 더 많은 기능이 추가될 예정이니 계속 지켜봐주시고 자유롭게 의견을 공유해 주세요.

    RepliByte GitHub: https://github.com/Qovery/replibyte

    좋은 웹페이지 즐겨찾기