ดูแลให้ทำงานต่อเนื่อง
ย้อนฐานข้อมูลกลับ — ภายในช่วงที่แพ็กเกจของคุณเก็บไว้
migration ที่ลบข้อมูลผิดแถว สคริปต์ที่รันซ้ำสองรอบ การย้อนกลับหนึ่งเวอร์ชันคืนโค้ดให้ ส่วนหน้านี้คืนข้อมูล ย้อนได้ไกลแค่ไหนขึ้นกับแพ็กเกจ และกลไกสองแบบข้างใต้ต่างกันจริงๆ
ย้อนได้ไกลแค่ไหน
แพ็กเกจ | ความละเอียด | ย้อนหลัง |
|---|---|---|
Hobby | ทุกชั่วโมง | 7 วัน |
Pro | ระดับนาที | 7 วัน |
Max | ระดับนาที | 30 วัน |
"ทุกชั่วโมง" ของ Hobby คืออะไรจริงๆ
คือ pg_dump ของฐานข้อมูลคุณโดยเฉพาะ ทุกชั่วโมง เก็บไว้เจ็ดวัน หนึ่งไฟล์ต่อหนึ่งฐานข้อมูล และตั้งใจให้เป็นแบบนั้น — การกู้ข้อมูลของคุณไม่ควรแปลว่าต้องสร้างเครื่องที่เก็บข้อมูลของคนอื่นทั้งหมดขึ้นมาใหม่
ที่ใช้ dump ไม่ใช่คัดลอกไฟล์ เพราะเครื่องที่ใช้ร่วมกันมีการเขียนข้อมูลตลอดเวลา และการคัดลอกไดเรกทอรีข้อมูลที่กำลังทำงานอยู่ให้ผลเป็นข้อมูลสำรองที่กู้แล้วได้คลัสเตอร์เสียหาย — ซึ่งคุณจะรู้ตอนกำลังกู้ ซึ่งเป็นจังหวะที่แย่ที่สุดเท่าที่จะเป็นไปได้
"ระดับนาที" คืออะไร
ตั้งแต่ Pro ขึ้นไป ฐานข้อมูลมีเครื่องของตัวเอง และเก็บบันทึกความเปลี่ยนแปลงทุกอย่างอย่างต่อเนื่อง ควบคู่กับสำเนาฐานเป็นระยะ นั่นคือสิ่งที่ทำให้การกู้คืนลงจอดที่นาทีที่เลือกได้ แทนที่จะได้แค่ชั่วโมงที่บังเอิญถูก dump ไว้ กลไกนี้ต้องใช้ volume ของตัวเองเพื่อเก็บบันทึก จึงเริ่มที่ Pro แทนที่จะเปิดให้ทุกคน
ก่อนจะย้อนอะไรก็ตาม
การย้อนกลับคือการแทนที่ข้อมูลด้วยสิ่งที่อยู่ ณ เวลาที่เลือก อะไรที่เขียนหลังจุดนั้นจะหายไป รวมถึงข้อมูลที่ถูกต้องซึ่งเขียนเข้ามาระหว่างที่คุณกำลังหาสาเหตุอยู่ ถ้าความเสียหายจำกัดอยู่ไม่กี่แถว การซ่อมเดินหน้ามักดีกว่าการย้อนทั้งฐานข้อมูลทับลงไป
ขอผ่านเอไอของคุณ หรือที่ hello@erawan.cloud พร้อมบอกชื่อแอปและเวลาที่ต้องการ เป็น UTC หรือระบุค่าชดเชยเวลาไว้ การกู้คืนไม่ใช่ปุ่มกดเองโดยตั้งใจ เพราะครึ่งที่ทำลายข้อมูลย้อนกลับไม่ได้ และคำขอนี้คุ้มค่ากับการคุยหนึ่งรอบให้แน่ใจ
ฐานข้อมูลแบบไฟล์ที่ไม่ได้ครอบคลุม
ถ้าแอปของคุณเก็บ SQLite ไว้บนดิสก์แทนการใช้ Postgres สำเนารายคืนนอกสถานที่ก็คัดลอกมันไปด้วย — แต่มันคัดลอกสามไฟล์ในขณะที่แอปเขียนคั่นระหว่างนั้น สิ่งที่ได้กลับมาจึงอาจไม่สอดคล้องกันภายใน และย้อนกลับเป็นรายนาทีไม่ได้ ตั้งเวลา VACUUM INTO ก่อนตี 4 เพื่อเขียนไฟล์เดียวที่สอดคล้องกันให้สำเนาไปหยิบ หรือย้ายไปใช้ Postgres