อีกตัวเลือกหนึ่งคือสิ่งที่ฉันเพิ่งเจอ (รับผมยังไม่ได้ใช้ แต่แผนการที่จะเร็ว ๆ rdbms-subsetter
นี้):
มันง่ายและเบากว่า Jailer นิดหน่อยโดยมีคุณสมบัติ / ประโยชน์ที่ดี:
- CLI ง่ายมากที่จะต่อสายเครื่องมือที่มีอยู่
- โอเพ่นซอร์ส
- จะทำตามคีย์ต่างประเทศเพื่อดึงชุดย่อยของข้อมูลที่
สอดคล้องกัน
- หากคุณไม่มีคีย์ต่างประเทศที่กำหนดชัดเจนคุณสามารถระบุความสัมพันธ์ผ่านไฟล์กำหนดค่า JSON ในกรณีของฉันฉันวางแผนที่จะสร้างการกำหนดค่านี้จาก schema metadata ที่เก็บไว้ที่อื่น (ขอบคุณ Rails: \)
- คุณสามารถกำหนดเป้าหมายแถวที่เฉพาะเจาะจงและได้รับทั้งหมดระเบียนที่เกี่ยวข้อง (เช่นลูกค้าที่เฉพาะเจาะจงมีปัญหาเพื่อให้คุณสามารถดึงลงมาทุกอย่างเพื่อให้ข้อมูลการทำงานบัญชีของพวกเขาสามารถเข้าถึงได้ในประเทศ)
- สามารถใช้จำนวนระเบียนต่อตารางคงที่หรือใช้ลอการิทึมเพื่อรับข้อมูลเพิ่มเติมจากตารางที่ใหญ่กว่าโดยไม่ต้องลงน้ำมากเกินไป
เป็นมูลค่าการกล่าวถึงตัวเลือกอื่นสำหรับฐานข้อมูล Heroku โดยเฉพาะซึ่งฉันได้ใช้บ่อยๆ (เหมือนที่เคยทำงานที่นั่น)
จริง ๆ แล้ว Heroku นั้นค่อนข้างรวดเร็วในการนำสแน็ปช็อต 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
ในการyour-production-app
ที่คุณจะจบลงด้วยฐานข้อมูลสามารถเข้าถึงได้ด้วยPRODUCTION_SNAPSHOT_URL
(ถ้าคุณระบุไว้--as
) ใน app some-other-app-to-own-forked-database
ชื่อที่แตกต่างกัน