ทรัพยากรต่างๆเช่น https://mariadb.com/kb/en/backup-and-restore-overview/ หรือ https://www.thegeeksearch.com/how-to-backup-and-restore-mariadb-database/ อธิบายวิธีการสำรองข้อมูลทั้งหมดของอินสแตนซ์ MySQL อย่างไรก็ตาม พวกเขาพูดถึงชุดข้อมูลทั้งหมดในฐานข้อมูลทั้งหมด
ฉันต้องการบรรลุภาพรวมต่อฐานข้อมูล (เช่นกับ LVM, KVM, qcow2 เป็นต้น) อย่างไรก็ตามสิ่งนี้อาจเป็นไปไม่ได้เนื่องจากเป็นความเข้าใจของฉัน มาเรียด
มีไฟล์ที่ใช้ร่วมกันในฐานข้อมูลทั้งหมด
ในฝันของฉัน: ลองนึกภาพสถานการณ์ที่แอปพลิเคชัน A และ B เชื่อมต่อกับแอปเดียว มาเรียด
อินสแตนซ์ที่มีทั้งฐานข้อมูล A และ B ที่สอดคล้องกัน ตอนนี้แอปพลิเคชัน A เรียกใช้การย้ายข้อมูลที่สำคัญ และฉันต้องการดำเนินการสแน็ปช็อตอย่างรวดเร็ว (ทางกายภาพ) ก่อนหน้านั้น mysqldump
จะใช้เวลาหลายชั่วโมง ดังนั้น สมมติว่าฉันสามารถทำได้ มาเรียด
เขียนข้อมูลทั้งหมดเกี่ยวกับฐานข้อมูล A (เช่น ก.idb
) ไปยังตำแหน่งพิเศษ เช่น วอลุ่ม LVM ฉันเพียงแค่ล็อคตารางของฉัน, สแน็ปช็อตวอลุ่มนั้น, ปลดล็อกตารางและจบลงด้วยสำเนาข้อมูลของฉันที่ใช้ COW อย่างรวดเร็ว ฉันเรียกใช้การโยกย้ายของฉัน มันระเบิดขึ้น ตอนนี้สแนปชอตได้รับการกู้คืนแล้ว และหากวิธีนี้ได้ผล ฉันจะกลับมาพร้อมข้อมูลเดิมภายในเวลาไม่กี่วินาที แอปพลิเคชัน B ไม่ได้รับผลกระทบ
ตอนนี้มันไม่ใช่ความจริงอย่างที่เห็น มีข้อมูลเกี่ยวกับการกู้คืนฐานข้อมูลจาก ก.idb
และไฟล์อื่นๆ เช่น https://symplecticgames.wordpress.com/2018/04/05/recovering-mysql-database-from-frm-and-idb-files/ แต่นั่นไม่ใช่งานทั้งในและนอกงานอย่างที่จะต้องมีการกู้คืนสแน็ปช็อตในอุดมคติตามที่อธิบายไว้ข้างต้น คำอธิบายยังเกี่ยวข้องกับการหยุดทั้งหมด มาเรียด
กระบวนการ.
ทางออกที่ชัดเจนคือการแยกกัน มาเรียด
ประมวลผลด้วยชุดข้อมูลที่สมบูรณ์ของตัวเองในตำแหน่งพิเศษอื่น เช่น วอลุ่ม LVM อย่างไรก็ตาม นั่นนำมาซึ่งความซับซ้อนในการจัดการเซิร์ฟเวอร์ MySQL จำนวนมากที่อาจทำงานพร้อมกันทั้งหมด แม้ว่าสิ่งนี้จะเป็นไปโดยอัตโนมัติ แต่ก็อาจไม่เหมาะ
มีความเป็นไปได้หรือไม่ที่จะบรรลุหรือใกล้เคียงกับโลกแห่งความฝันที่อธิบายไว้ข้างต้น