เผยแพร่ครั้งแรกเมื่อวันที่ 6 กุมภาพันธ์ 2020 ที่ ObjectRocket.com/blog
หน้าที่การบริหารฐานข้อมูลรวมถึงการสำรองและกู้คืนข้อมูลสำรองเป็นประจำ ซึ่งเป็นองค์ประกอบสำคัญ ObjectRocket รวมการสำรองข้อมูลรายวันพร้อมการเก็บรักษา 2 สัปดาห์ และเปิดใช้งานการสำรองข้อมูลเหล่านี้โดยค่าเริ่มต้นบนผลิตภัณฑ์ฐานข้อมูลทั้งหมดของเรา
บริการ PostgreSQL® (Postgres) ของ ObjectRocket เพิ่มข้อดีพิเศษคือการเก็บถาวร Write Ahead Log (WAL) และความสามารถในการกู้คืนไปยังจุดเวลาใดก็ได้ภายในช่วงการเก็บรักษา
โพสต์นี้จะแนะนำคุณผ่านการกู้คืนจุดเวลา (Point-in-Time Recovery - PITR) กับ Postgres บนบริการ ObjectRocket
(https://th.wsxdn.com/UploadFiles_2907/202207/2022070812125333.png)
การสำรองข้อมูลที่ไม่ซับซ้อน
กระบวนการสำรองข้อมูลเป็นแบบอัตโนมัติทั้งหมด และคุณไม่ต้องทำอะไรเลย เรารวมการสำรองข้อมูลรายวันในค่าใช้จ่ายของทุกอินสแตนซ์ และเราเก็บรักษาการสำรองข้อมูล 2 สัปดาห์ตลอดเวลา คุณสามารถดูเวลาการสำรองข้อมูลและสถานะของการสำรองก่อนหน้าในแดชบอร์ดของเราหรือโดยใช้ User Interface (UI) ตามภาพต่อไปนี้:
ตัวเลือกการกู้คืนหลายแบบ
เมื่อคุณเจอสถานการณ์และต้องการกู้คืนการสำรองข้อมูล เรามีตัวเลือกหลายแบบ คุณสามารถกู้คืนจากจุดต่อไปนี้:
- การอัปเดต WAL ล่าสุดที่เราจัดเก็บ
- Base Backup เฉพาะเจาะจง
- จุดเวลาเฉพาะเจาะจง
ในทุกกรณี ระบบจะกู้คืนข้อมูลของคุณไปยังอินสแตนซ์ Postgres ใหม่ ณ ขณะนี้ พื้นที่จัดเก็บของอินสแตนซ์ต้องมากกว่าหรือเท่ากับพื้นที่จัดเก็บบนอินสแตนซ์ต้นทาง ในกระบวนการนี้ บางครั้งเรียกว่า Database Fork คุณจะกู้คืนข้อมูลไปยังอินสแตนซ์ฐานข้อมูลใหม่และแยกต่างหาก ดังนั้น อินสแตนซ์เก่าและใหม่จึงยังคงทำงานจนกว่าคุณจะลบอันหนึ่ง
การกู้คืนในปัจจุบันเปิดเผยผ่าน API ของเราเท่านั้น โปรดใช้ API นี้ได้ตามสะดวก มิฉะนั้น ทีมสนับสนุนของเรายินดีช่วยคุณผ่านกระบวนการ เราวางแผนที่จะเพิ่มการกู้คืนใน UI ในอีกไม่นาน
กู้คืนไปยังเวลาล่าสุด
ตัวอย่างนี้ใช้ฐานข้อมูลง่ายๆ ที่จัดเก็บ Timestamp และ Sequence ทุกนาที เพื่อที่เราจะเห็นจุดที่เรากู้คืน
ภาพต่อไปนี้แสดงฐานข้อมูล และคุณสามารถเห็นได้ว่า Timestamp ล่าสุดอยู่ที่ 16:00:58 (UTC)
เพื่อกู้คืนไปยังข้อมูลล่าสุดในฐานข้อมูลนี้ ให้ระบุ Instance ID ของอินสแตนซ์ต้นทางไปยังการสร้างอินสแตนซ์ใหม่ ตามภาพต่อไปนี้:
หลังจากการกู้คืนอินสแตนซ์เสร็จสิ้น ให้เชื่อมต่อและตรวจสอบ Timestamp ล่าสุด
ตามที่คุณเห็น ข้อมูลทั้งหมดอยู่ที่นั่น และอินสแตนซ์ Postgres ใหม่ตรงจับกับอินสแตนซ์ Postgres ต้นทางอย่างสมบูรณ์
คุณอาจต้องการใช้สถานการณ์นี้เพื่อสร้างฐานข้อมูลทดสอบจากข้อมูลปัจจุบันของคุณ เพื่อที่คุณจะสามารถทดลองคุณลักษณะใหม่โดยไม่มีความเสี่ยงต่อข้อมูลต้นฉบับของคุณ
กู้คืนไปยัง Base Backup เฉพาะเจาะจง
เพื่อกู้คืนจาก Base Backup ให้เริ่มด้วยการเลือก Backup เป้าหมาย เมื่อแสดงรายการสำรองข้อมูล ให้สังเกตว่าแต่ละการสำรองมี ID เฉพาะที่คุณสามารถใช้ระบุได้ ในภาพต่อไปนี้ คุณสามารถเห็นได้ว่าระบบได้สำรองข้อมูลที่ 15:36:15 (UTC):
เพื่อกู้คืนไปยังการสำรองนี้อย่างแม่นยำ ให้เพิ่ม Backup ID ไปยังการเรียกสร้าง
หลังจากโหลดอินสแตนซ์แล้ว ให้สังเกตว่า การสำรองมีข้อมูลและ Timestamp จากก่อนเวลาการสำรอง 15:36:15
กู้คืนไปยังเวลาเฉพาะเจาะจง
เพื่อระบุเวลาที่คุณต้องการกู้คืน ให้ระบุ Source Instance ID และเวลาที่ต้องการกู้คืน ตามภาพต่อไปนี้:
ในกรณีนี้ ผมต้องการกู้คืนไปที่ 15:53:00 หลังจากการกู้คืนเสร็จสิ้น คุณสามารถเห็นได้ว่าข้อมูลมีอยู่เพียงจนถึงเวลานั้นเท่านั้น
หากคุณมองย้อนกลับไปที่ภาพก่อนหน้า คุณอาจสังเกตว่าเรามี Timestamp อีกตัวที่ 15:53:00 ซึ่งเกิดขึ้นเพียง 0.8 วินาทีหลัง 15:53:00 ดังนั้นจึงไม่ได้รวมอยู่ในการกู้คืนนี้ คุณสามารถได้รายละเอียดอย่างแม่นยำมากกับ PITR เพื่อเป้าหมายเวลาและสถานะในฐานข้อมูล
สรุป
คุณสามารถใช้ฟังก์ชันการกู้คืนฐานข้อมูลทั้งหมดนี้ โปรดทราบว่าเราจะเพิ่มคุณลักษณะและความสามารถมากขึ้นในอีกไม่นาน เหมือนเดิม เราจะแจ้งให้คุณทราย แต่โปรดบอกเราหากคุณมีคำขอใดๆ
เรียนรู้เพิ่มเติมเกี่ยวกับบริการ DBA ของ Rackspace
ใช้แท็บ Feedback เพื่อแสดงความคิดเห็นหรือถามคำถาม คุณยังสามารถเริ่มการสนทนากับเราได้