ใช่ฉันจะวิ่งตามพวกเขาทั้งคู่ ... อย่างไรก็ตามฉันอยากจะรู้ว่า ...
- XtraBackup กำลังทำอะไรอยู่ซ้ำแล้วซ้ำอีก rsync -ac src dest?
- มีอะไรพิเศษเกี่ยวกับ XtraBbackup บ้าง?
- XtraBackup โต้ตอบกับ mysqld อย่างไร
ใช่ฉันจะวิ่งตามพวกเขาทั้งคู่ ... อย่างไรก็ตามฉันอยากจะรู้ว่า ...
คำตอบ:
rsyncเป็นเพียงการคัดลอกข้อมูลแบบไบต์ต่อไบต์ คุณจะทำการแสดงหลาย rsyncs จนกระทั่ง rsync สุดท้ายซึ่งเร็วมาก จากนั้นคุณจะทำการปิด MySQL เต็มรูปแบบและดำเนินการอีกหนึ่ง rsync
XtraBackupเป็นเครื่องมือครบวงจรที่ทำงานเหมือน rsync แต่มีจุดมุ่งหมายในชีวิต สามารถเริ่มคัดลอกข้อมูล InnoDB และพื้นที่ตารางทั้งหมด มีความสามารถในการสร้างจุดตรวจสอบภายในและทำการกู้คืนความเสียหายของ InnoDB ในสถานที่เพื่อช่วยในการสำรองข้อมูล ณ จุดเวลาที่สมบูรณ์แบบ XtraBackup ยังมีคุณสมบัติพิเศษที่อนุญาตให้สร้างการสำรองข้อมูลเพิ่มเติม อีกคุณสมบัติเพิ่มเติมคือการสร้างไฟล์บันทึก InnoDB ซึ่งสร้างโดยการกู้คืนความผิดพลาดแบบแทนที่ด้วย นอกจากนี้ยังมีซอฟแวร์ห่อหุ้มเพื่อให้การคัดลอกตาราง MyISAM แช่แข็งเช่นกัน
ทั้งสองวิธีนั้นยอดเยี่ยม XtraBackup ใช้งานคุณสมบัติของทรานแซคชั่นของ InnoDB ในการคัดลอกเบื้องต้น Xtrabackup สร้างไฟล์ที่สามารถปล่อยลงในโครงสร้างพื้นฐาน MySQL ที่จัดตั้งขึ้น ยุติธรรมแล้วที่จะพูดว่า XtraBackup ให้การสำรองข้อมูลแบบใช้เครื่องมือและไฟล์ InnoDB ที่สามารถใช้งานได้จริง
การใช้ rsync บังคับให้คุณจัดการกระบวนการคัดลอกหลายครั้งและปิดการทำงานด้วยการปิด mysql เพื่อต้องการการแทรกแซง rsync เพียงครั้งเดียว
การใช้งานมากกว่าตัวอื่นอาจเป็นการปรับแต่งส่วนตัว สิ่งหนึ่งที่ต้องได้รับการยอมรับ: XtraBackup ทำให้การสำรองข้อมูลที่ค่อนข้างใหญ่กว่าข้อมูลที่ถูกคัดลอก ฉันปล่อยให้วิธีการเลือกแก่ผู้อ่านของคำถามนี้
ฉันชอบ rsync เพราะมันมีความเรียบง่ายในการใช้งานฉันสามารถกำหนดจุดเฉพาะในเวลาก่อนที่กระบวนการจะเริ่มฉันยังมีการควบคุมทั้งหมดในการล็อค mysqld หรือปิดมันเมื่อการควบคุมดังกล่าวสามารถทำได้และไม่ว่าจะสั่งอะไรก็ตาม .
ลักษณะการสำรองข้อมูลทั้งสองแบบมีสิ่งหนึ่งที่เหมือนกัน : ด้วย XtraBackup จุดเวลาที่แท้จริงคือเป้าหมายที่เคลื่อนที่จนกว่ากระบวนการสำรองข้อมูลจะเสร็จสิ้นและคุณต้องเชื่อถือ XtraBackup (ยอดดาวน์โหลดถึง 200,000 ครั้ง Facebook เป็นหนึ่งในผู้ใช้ที่ใหญ่ที่สุดของ มันได้รับความไว้วางใจมากมาย) กล่าวอีกนัยหนึ่งถ้าฉันเริ่ม XtraBackup ตอนเที่ยงคืนและการสำรองข้อมูลจนถึงเวลา 2:20 น. จุดเวลาจริงของการสำรองข้อมูลคือ 2:20 AM การใช้ rsync มีปัญหาเป้าหมายการย้ายที่เหมือนกันเนื่องจากคุณต้องทำ rsyncs หลาย ๆ ชุดด้วยตนเองแล้วกำหนดว่าเมื่อใดควรใช้ 'service mysql stop' ก่อนที่จะทำการ rsync สุดท้าย
วิธีการเหล่านี้แตกต่างกันในmysqldนั้นจะต้องปิดระบบโดยใช้วิธี rsync ในขณะที่ XtraBackup ทำหน้าที่เป็นอิสระจาก mysqld อันที่จริงแล้ว XtraBackup ไม่ได้มีปฏิสัมพันธ์กับ mysqld มากนักยกเว้นเมื่อต้องรับมือกับตาราง MyISAM ผ่านซอฟต์แวร์ตัวห่อหุ้ม XtraBackup พยายามสร้างข้อมูล InnoDB และไฟล์บันทึกการทำงานอย่างเต็มรูปแบบโดยใช้การทำงานของเครื่องมือจัดเก็บข้อมูล InnoDB แยกและแตกต่างจาก mysqld
การปิดระบบ mysql เป็นสิ่งจำเป็นอย่างยิ่งสำหรับวิธี rsync ด้วยเหตุผลที่ยิ่งใหญ่มาก: InnoDB Buffer Pool สามารถเก็บ "สกปรกหน้า" ซึ่งเป็นข้อมูลและหน้าดัชนี (1 หน้า = 16KB) ที่ไม่ได้เขียนกลับไปที่ดิสก์ การใช้ rsync จะไม่ตรวจจับการเปลี่ยนแปลงข้อมูลที่ค้างอยู่ใน InnoDB Buffer Pool เพื่อเร่งความเร็วการปิด mysqld สำหรับ rsync สุดท้ายโปรดเรียกใช้คำสั่งนี้:
SET GLOBAL innodb_max_dirty_pages_pct = 0;
คำสั่งนี้จะทำให้จำนวนหน้าสกปรกให้น้อยที่สุด คำสั่งนี้ควรรันประมาณหนึ่งชั่วโมงก่อนที่คุณจะทำการสำรองข้อมูลด้วยวิธี rsync สิ่งนี้อาจช่วยให้ XtraBackup ได้เช่นกันแม้ว่า XtraBackup ไม่จำเป็นต้องปิดระบบ mysql