또 다른 옵션은 내가 최근에 만난 것입니다 (허가, 아직 사용하지는 않지만 곧 계획) rdbms-subsetter
.
Jailer보다 약간 간단하고 가벼우 며 몇 가지 멋진 기능 / 특권이 있습니다.
- 기존 툴링에 쉽게 연결할 수있는 CLI
- 오픈 소스
- 외래 키를 따라 일관된 데이터 하위 집합
을 가져옵니다.
- 잘 정의 된 외래 키가없는 경우 JSON 구성 파일을 통해 관계 를 제공 할 수 있습니다. 필자의 경우, 다른 곳에 저장된 스키마 메타 데이터에서이 구성을 생성 할 계획입니다 (감사합니다, Rails : \).
- 특정 행을 타겟팅하고 모든 관련 레코드를 가져올 수 있습니다 (예 : 특정 고객에게 문제가 발생 했으므로 모든 것을 풀다운하여 계정 작업 데이터를 로컬로 액세스 할 수 있도록 할 수 있음)
- 테이블 당 일정한 수의 레코드를 가져 오거나 로그를 사용하여 더 큰 테이블에서 더 많은 데이터를 얻지 않아도됩니다.
특히 Heroku 데이터베이스에 대한 다른 옵션을 언급 할 가치가 있습니다.
Heroku는 실제로 미리 쓰기 로그를 먼저 가져 와서 준비하기 위해 기본 DB에 연결 한 다음 따라가는 것을 멈추기 때문에 새로운 스냅 샷 DB를 가져 오는 데 실제로 빠릅니다. 프로덕션에 너무 많은 영향을 미치지 않도록 앱에서 이러한 "포크"를 만들 수 있습니다.
$ heroku addons:create heroku-postgres[:specific-plan] \
--fork your-production-app::DATABASE \
--app some-other-app-to-own-forked-database \
[--as PRODUCTION_SNAPSHOT]
그런 다음 해당 스냅 샷을 가리키는 로컬로 앱을 부팅 할 수 있습니다. 나는 이것을 자주 사용하여 데이터 또는 스키마 마이그레이션을 건조하거나 고객 문제를 디버그합니다.
위의 명령에서 DATABASE_URL
on으로 your-production-app
액세스 할 수있는 DB가 PRODUCTION_SNAPSHOT_URL
있으면 --as
이름이 다른 다른 앱에서 ( 지정한 경우 ) DB에 액세스 할 수있게됩니다 some-other-app-to-own-forked-database
.