RepliByte를 사용하여 prod DB로 dev Postgres DB를 시드하는 방법
소개
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는 데이터베이스 시드를 매우 쉽고 편리하게 만들어주는 명령줄 도구입니다. 하나의 명령으로 Docker를 사용하여 로컬에서 데이터베이스를 복원하는 방법을 연구 중입니다. 더 많은 기능이 추가될 예정이니 계속 지켜봐주시고 자유롭게 의견을 공유해 주세요.
RepliByte GitHub: https://github.com/Qovery/replibyte
Reference
이 문제에 관하여(RepliByte를 사용하여 prod DB로 dev Postgres DB를 시드하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rophilogene/how-to-seed-your-dev-postgres-db-with-your-prod-db-with-replibyte-2dj8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)