-
บทนำเกี่ยวกับการสำรองข้อมูลแบบเพิ่มขึ้นทีละน้อย
-
บทนำเกี่ยวกับ Binlog
-
การสำรองข้อมูลเพิ่มขึ้นของ MySQL ทำ อย่างไร
-
การกู้คืนจากสำรองข้อมูลเพิ่มขึ้น MySQL ทำอย่างไร?
-
วิธีที่ง่ายกว่าในการสร้างการสำรองข้อมูลเพิ่มขึ้นของ MySQL
-
คำถามที่พบบ่อยเกี่ยวกับการสำรองข้อมูลเพิ่มขึ้น MySQL
-
ข้อสรุป
สถานการณ์ที่ไม่คาดคิด เช่น การล่มของระบบปฏิบัติการ การไฟฟ้าขัดข้อง การล่มของระบบไฟล์ และความล้มเหลวของฮาร์ดแวร์ สามารถทำให้ฐานข้อมูลที่เรากำลังใช้อยู่ทำงานผิดพลาด ส่งผลให้ข้อมูลไม่สอดคล้องกันได้ เพื่อให้มั่นใจในความปลอดภัยของฐานข้อมูล ต้องสำรองข้อมูลฐานข้อมูลอย่างสม่ำเสมอ การสำรองข้อมูลฐานข้อมูลสามารถแบ่งออกเป็นการสำรองแบบเต็มรูปแบบ การสำรองบันทึก การสำรองเพิ่มเติม และการสำรองไฟล์ สำหรับฐานข้อมูลขนาดใหญ่ การสำรองแบบเต็มรูปแบบบ่อยครั้งอาจใช้เวลานานเกินไป และมักจะทำการสำรองข้อมูลที่ไม่เปลี่ยนแปลงซ้ำหลายครั้ง ทำให้เกิดการสิ้นเปลืองทรัพยากร กลยุทธ์การสำรองข้อมูลฐานข้อมูลที่ใช้กันมากที่สุดในปัจจุบันคือการดำเนินการสำรองเพิ่มเติมบ่อยขึ้นโดยอิงจากการสำรองแบบเต็มรูปแบบ ตัวอย่างเช่น เราสามารถสำรองแบบเต็มรูปแบบสัปดาห์ละครั้งในช่วงที่การใช้งานต่ำ จากนั้นจึงสำรองเพิ่มขึ้นทุกวัน เพื่อบันทึกการทำงานที่อาจมีการแก้ไขฐานข้อมูลในช่วงเวลาดังกล่าว
บทนำเกี่ยวกับการสำรองข้อมูลแบบเพิ่มขึ้นทีละน้อย
การสำรองข้อมูลแบบเพิ่มขึ้นทีละน้อยหมายถึงการสำรองเฉพาะไฟล์ที่ถูกเพิ่มหรือแก้ไขตั้งแต่การสำรองข้อมูลแบบเต็มรูปแบบครั้งล่าสุดหรือการสำรองข้อมูลแบบเพิ่มขึ้นทีละน้อยครั้งก่อนหน้า ซึ่งหมายความว่า การสำรองข้อมูลแบบเพิ่มขึ้นทีละน้อยครั้งแรกจะครอบคลุมไฟล์ที่ถูกเพิ่มหรือแก้ไขหลังจากการสำรองข้อมูลแบบเต็มรูปแบบ ส่วนการสำรองข้อมูลแบบเพิ่มขึ้นทีละน้อยครั้งที่สองจะครอบคลุมไฟล์ที่ถูกเพิ่มหรือแก้ไขหลังจากการสำรองข้อมูลแบบเพิ่มขึ้นทีละน้อยครั้งแรก และดำเนินต่อไปเช่นนี้ ข้อดีที่สำคัญที่สุดของวิธีการสำรองข้อมูลนี้คือไม่มีข้อมูลสำรองซ้ำกัน ส่งผลให้ขนาดของการสำรองข้อมูลเล็กลงและใช้เวลาน้อยลง อย่างไรก็ตาม การกู้คืนข้อมูลจากการสำรองข้อมูลแบบเพิ่มขึ้นทีละน้อยนั้นซับซ้อนกว่ามาก คุณต้องมีการสำรองข้อมูลแบบเต็มรูปแบบครั้งสุดท้ายและการสำรองข้อมูลแบบเพิ่มขึ้นทีละน้อยทั้งหมด (หากสูญหายหรือเสียหายแม้แต่หนึ่งชุดอาจทำให้การกู้คืนล้มเหลว) และต้องทำการกู้คืนตามลำดับเวลาตั้งแต่การสำรองข้อมูลแบบเต็มรูปแบบไปจนถึงการสำรองข้อมูลแบบเพิ่มขึ้นทีละน้อยแต่ละครั้ง ซึ่งทำให้เวลาการกู้คืนยาวนานขึ้นอย่างมาก
ตัวอย่างเช่น หากเรามีฐานข้อมูลที่มีข้อมูล 20GB และมีข้อมูลเพิ่มเติมอีก 10MB ทุกวัน การสำรองข้อมูลแบบเต็มทุกวันจะทำให้เซิร์ฟเวอร์มีภาระหนัก ดังนั้นเราสามารถสำรองข้อมูลที่เพิ่มเข้ามาใหม่เท่านั้น เพื่อลดภาระของเซิร์ฟเวอร์
บทนำเกี่ยวกับ Binlog
MySQL ไม่ได้ให้วิธีการสำรองข้อมูลแบบเพิ่มขึ้นโดยตรง แต่สามารถทำสำรองข้อมูลแบบเพิ่มขึ้นได้ทางอ้อมผ่านบันทึกไบนารีของ MySQL
binlog จะถูกเปิดใช้งานโดยตัวเลือก log-bin ในไฟล์การกำหนดค่า MySQL จะสร้างไฟล์ใหม่สองไฟล์ ได้แก่ "XXX-bin.001" และ "xxx-bin.index" ในไดเรกทอรีรากข้อมูล หากไม่มีการระบุชื่อไฟล์ในตัวเลือกการกำหนดค่า MySQL จะใช้ชื่อโฮสต์ในการตั้งชื่อไฟล์ทั้งสองนี้ ไฟล์ ".index" มีรายการของไฟล์บันทึกทั้งหมด MySQL จะจดบันทึกการเปลี่ยนแปลงทั้งหมดที่เกี่ยวกับเนื้อหาและโครงสร้างของฐานข้อมูลไว้ในไฟล์ "XXX-bin.n" แต่จะไม่บันทึกคำสั่ง "SELECT" และ "UPDATE" ที่ไม่ได้มีการอัปเดตข้อมูลจริงๆ
เมื่อฐานข้อมูล MySQL หยุดหรือเริ่มต้นใหม่ เซิร์ฟเวอร์จะบันทึกข้อมูลไปยังไฟล์บันทึกถัดไป MySQL จะสร้างไฟล์บันทึกไบนารีชุดใหม่เมื่อมีการรีสตาร์ท โดยมีหมายเลขไฟล์เพิ่มขึ้นทีละหนึ่ง นอกจากนี้ หากไฟล์บันทึกมีขนาดเกินขีดจำกัดที่กำหนดโดยตัวแปรระบบ "max_binlog_size" ก็จะมีการสร้างไฟล์บันทึกใหม่เช่นกัน
การสำรองข้อมูลแบบเพิ่มขึ้นพึ่งพาเครื่องกลไก binlog ของ MySQL โดยทุกขั้นตอนของการแทรก อัปเดต ลบ และดำเนินการค้นหาในฐานข้อมูลจะถูกบันทึกไว้ใน binlog การเริ่มต้นด้วยการสำรองข้อมูลแบบเต็มพร้อมกับการล้าง binlog ในเวลาเดียวกัน ทำให้การดำเนินการทั้งหมดที่ตามมาจะถูกบันทึกไว้ในไฟล์ binlog ใหม่ สำหรับการสำรองข้อมูลแบบเพิ่มเติม เราจึงต้องสำรองเฉพาะไฟล์ binlog ที่สร้างขึ้นใหม่เท่านั้น ซึ่งช่วยให้สามารถสำรองข้อมูลฐานข้อมูลที่ขยายตัวอย่างต่อเนื่องได้อย่างสมบูรณ์แบบ
ความสำคัญของบันทึกไบนารีสำหรับการสำรองข้อมูลมีดังนี้
บันทึกไบนารีจัดเก็บการดำเนินการทั้งหมดที่อัปเดตหรืออาจอัปเดตข้อมูล
บันทึกไบนารีจะเริ่มการบันทึกหลังจากเซิร์ฟเวอร์ MySQL เริ่มทำงาน และจะสร้างไฟล์บันทึกใหม่เมื่อถึงขนาดไฟล์ที่ตั้งไว้ หรือเมื่อมีการดำเนินการคำสั่ง "flush logs"
โดยการดำเนินคำสั่ง "flush logs" เป็นระยะ เพื่อสร้างลำดับไฟล์บันทึกไบนารีใหม่ และจัดเก็บไฟล์เหล่านี้อย่างปลอดภัย จะทำให้การสำรองข้อมูลแบบเพิ่มขึ้นในช่วงเวลาหนึ่งเสร็จสมบูรณ์
การสำรองข้อมูลเพิ่มขึ้นของ MySQL ทำอย่างไร
การสำรองข้อมูลเพิ่มขึ้นของ MySQLสามารถทำได้โดยใช้บันทึกของ MySQL ซึ่งมี 3 ประเภท ได้แก่ บันทึกไบนารี บันทึกการทำธุรกรรม และบันทึกข้อผิดพลาด ซึ่งบันทึกไบนารีคือบันทึกหลักของ MySQL ที่เก็บการดำเนินการแก้ไขข้อมูลทั้งหมดในรูปแบบไบนารีไว้ในดิสก์ โดยการสำรองบันทึกไบนารี เราสามารถดำเนินการสำรองข้อมูลเพิ่มขึ้นของ MySQLได้
ขั้นตอนการสำรองข้อมูลเพิ่มขึ้นของ MySQL
1. เปิดใช้งานบันทึกไบนารีของ MySQL
ตั้งค่าพารามิเตอร์ต่อไปนี้ในไฟล์การกำหนดค่า MySQL ("my.cnf"):
[mysql] log-bin=mysql-bin server-id=1
พารามิเตอร์ "log-bin" ระบุคำนำหน้าไฟล์บันทึกแบบไบนารี และพารามิเตอร์ "server-id" ใช้ระบุอินสแตนซ์ MySQL อย่างไม่ซ้ำใคร
2. สร้างผู้ใช้งานสำรอง
CREATE USER 'backup'@'localhost' IDENTIFIED BY 'your_password'; GRANT REPLICATION CLIENT, REPLICATION SLAVE, PROCESS, SUPER, RELOAD ON *.* TO 'backup'@'localhost';
ที่นี่ "backup" คือชื่อผู้ใช้ ผู้ใช้ต้องมีสิทธิ์ดังต่อไปนี้ "REPLICATION CLIENT" "REPLICATION SLAVE" "PROCESS" "SUPER" และ "RELOAD"
3. ดำเนินการสำรองข้อมูลทั้งหมด
ใช้คำสั่ง "mysqldump" เพื่อสำรองข้อมูลฐานข้อมูล MySQL ทั้งหมดไปยังไฟล์:
mysqldump -u root -P 3306 -h 127.0.0.1 -p123456 ks_flask > ks_flask.sql
ที่นี่ "localhost" คือ โฮสต์ของ MySQL, "root" คือ ชื่อผู้ใช้ และ "ks_flask" คือ ชื่อฐานข้อมูล
4. บันทึกตำแหน่ง Binary Log ปัจจุบัน
หลังจากดำเนินการสำรองข้อมูลครั้งแรกเรียบร้อยแล้ว ให้บันทึกชื่อไฟล์บันทึกไบนารีปัจจุบันและตำแหน่งเพื่อใช้สำหรับการสำรองข้อมูลแบบเพิ่มเติมในอนาคต
SHOW MASTER STATUS;
คำสั่งนี้จะคืนค่าไฟล์บันทึกไบนารีปัจจุบันและตำแหน่ง
5. ดำเนินการสำรองข้อมูลแบบเพิ่มเติม
ใช้คำสั่ง "mysqlbinlog" พร้อมพารามิเตอร์ "--start-datetime", "--stop-datetime" และ "--start-position" เพื่อกำหนดช่วงเวลาและตำแหน่งสำรองข้อมูลก่อนหน้า
mysqlbinlog --start-datetime='2023-10-23 00:00:00' --stop-datetime='2023-10-23 23:59:59' --start-position=[previous position] mysql-bin.000001 > incr_backup_2023-10-23.sql
ที่นี่ "[previous position]" คือตำแหน่งบันทึกไบนารีที่บันทึกไว้จากการสำรองข้อมูลครั้งล่าสุด
6. บันทึกตำแหน่งไบนารีล็อกใหม่
หลังจากดำเนินการสำรองข้อมูลแบบเพิ่มเติมแล้ว ให้ใช้คำสั่ง "SHOW MASTER STATUS" เพื่อบันทึกชื่อไฟล์บันทึกไบนารีและตำแหน่งใหม่สำหรับการสำรองข้อมูลแบบเพิ่มเติมครั้งต่อไป
SHOW MASTER STATUS;
7. ดำเนินการสำรองข้อมูลแบบเพิ่มขึ้นอย่างสม่ำเสมอ
ดำเนินการสำรองข้อมูลแบบเพิ่มเติมทุกวันตามความต้องการ โดยให้มั่นใจว่ารวมการเปลี่ยนแปลงของวันก่อนหน้าไว้ด้วย สามารถใช้สคริปต์อัตโนมัติเพื่อบันทึกและปรับปรุงตำแหน่งบันทึกไบนารีเป็นระยะๆ ได้
8. กู้คืนข้อมูลจากสำรอง
ผสานและกู้คืนข้อมูลสำรองแบบเต็มและเพิ่มขึ้นกลับไปยัง MySQL:
mysql -hlocalhost -uroot -p your_database < ks_flask.sql mysql -hlocalhost -uroot -p your_database < incr_backup_2023-10-23.sql
หากมีการสำรองข้อมูลแบบเพิ่มขึ้นหลายชุด ให้กู้คืนตามลำดับเวลา
การกู้คืนจากสำรองข้อมูลเพิ่มขึ้น MySQL ทำอย่างไร?
มีสามวิธีทั่วไปสำหรับการกู้คืนแบบเพิ่มขึ้น การกู้คืนทั่วไป การกู้คืนตามตำแหน่ง และการกู้คืนตามช่วงเวลา
1. การกู้คืนทั่วไป
กู้คืนเนื้อหาบันทึกไบนารีทั้งหมดที่สำรองไว้
mysqlbinlog [--no-defaults] incremental backup file | mysql -u username -p password
2. การกู้คืนตามตำแหน่ง
เมื่อผู้ดูแลระบบฐานข้อมูลดำเนินการ อาจเกิดทั้งการดำเนินการที่ผิดและถูกต้องในเวลาเดียวกัน การกู้คืนตามตำแหน่งช่วยให้สามารถกู้คืนได้อย่างแม่นยำมากขึ้น
การกู้คืนไปยังตำแหน่งที่กำหนด
mysqlbinlog --stop-position='operation ID' binary log | mysql -u username -p password
การกู้คืนเริ่มจากตำแหน่งเฉพาะ
mysqlbinlog --start-position='operation ID' binary log | mysql -u username -p password
3. การกู้คืนข้อมูล ณ จุดเวลาหนึ่ง
ข้ามจุดเวลาที่ผิดพลาดเฉพาะเจาะจงเพื่อกู้คืนข้อมูล มีสามวิธี:
1) การกู้คืนตั้งแต่จุดเริ่มต้นของบันทึกจนถึงจุดเวลาเฉพาะ
mysqlbinlog [--no-defaults] --stop-datetime='YYYY-MM-DD HH:MM:SS' binary log | mysql -u username -p password
2) การกู้คืนจากจุดเวลาที่กำหนดถึงจุดสิ้นสุดของบันทึก
mysqlbinlog [--no-defaults] --start-datetime='YYYY-MM-DD HH:MM:SS' binary log | mysql -u username -p password
3) การกู้คืนจากจุดเวลาหนึ่งไปยังอีกจุดเวลาหนึ่ง
mysqlbinlog [--no-defaults] --start-datetime='YYYY-MM-DD HH:MM:SS' --stop-datetime='YYYY-MM-DD HH:MM:SS' binary log | mysql -u username -p password
วิธีที่ง่ายกว่าในการสร้างการสำรองข้อมูลเพิ่มขึ้นของ MySQL
อย่างที่คุณเห็น กระบวนการทั้งหมดของการสำรองข้อมูลเพิ่มขึ้นและการกู้คืน MySQL โดยใช้บันทึกไบนารีนั้นซับซ้อนและใช้เวลานาน เนื่องจากเป็นการดำเนินการผ่านบรรทัดคำสั่ง คุณจะไม่มีโอกาสย้อนกลับหากคุณทำผิดพลาดระหว่างกระบวนการสำรองข้อมูลและการกู้คืน
โชคดีที่ซอฟต์แวร์สำรองข้อมูล MySQL ที่มีประสิทธิภาพอย่าง Vinchin Backup & Recovery มีอินเทอร์เฟซที่ใช้งานง่ายเพื่อให้สิ่งต่าง ๆ ง่ายขึ้น
Vinchin Backup & Recovery นำเสนอวิธีการสำรองข้อมูลและกู้คืนที่มีความอัตโนมัติมากกว่า มีประสิทธิภาพ และปลอดภัยยิ่งขึ้น โดยทำให้กระบวนการสำรองข้อมูล MySQL ง่ายขึ้นด้วยการจัดการแบบรวมศูนย์ การกู้คืนอย่างรวดเร็ว การสำรองข้อมูลแบบเพิ่มขึ้น และกลยุทธ์การจัดเก็บข้อมูลที่ยืดหยุ่น เพื่อรับประกันความสามารถในการเข้าถึงข้อมูลในระยะยาว นอกจากนี้ยังมีกลยุทธ์การสำรองข้อมูลที่ยืดหยุ่นสำหรับ Oracle DB, SQL Server, SQL Server, PostgreSQL, Postgres Pro และ MariaDB ซึ่งสามารถดำเนินการสำรองข้อมูลอัตโนมัติ สำรองข้อมูลแบบต่างระดับ และสำรองบันทึกธุรกรรมได้
ในการสร้างงานสำรองข้อมูลเพิ่มขึ้นของฐานข้อมูล MySQL โปรดไปที่หน้า การสำรองข้อมูลจริง> การสำรองข้อมูลฐานข้อมูล > การสำรองข้อมูล (โปรดทราบว่าการสำรองข้อมูลครั้งแรกต้องเป็นการสำรองข้อมูลแบบเต็มรูปแบบ):
1. เลือกฐานข้อมูลที่ต้องการสำรองข้อมูล

2. เลือกโหนดสำรองที่คุณต้องการใช้ประมวลผลและจัดเก็บข้อมูลสำรอง

3. ตั้งค่ากลยุทธ์การสำรองข้อมูลตามความต้องการของคุณ

ที่นี่คุณสามารถเลือกการสำรองข้อมูลแบบเพิ่มขึ้นตามกำหนดเวลาได้
4. ตรวจสอบและยืนยันการตั้งค่า

คลิกปุ่มด้านล่าง เพื่อลองใช้บริการทดลองใช้งานฟรี 60 วันของ Vinchin เพื่อสัมผัสประสบการณ์โซลูชันสำรองข้อมูลและกู้คืนข้อมูลที่มีประสิทธิภาพและเชื่อถือได้
คำถามที่พบบ่อยเกี่ยวกับการสำรองข้อมูลเพิ่มขึ้น MySQL
1. หากไฟล์บันทึกไบนารีถูกลบก่อนทำการกู้คืนข้อมูลสำรองเพิ่มขึ้นจะเกิดอะไรขึ้น?
หากไฟล์บันทึกไบนารีที่จำเป็นหายไป การกู้คืนอาจไม่สมบูรณ์ ซึ่งนำไปสู่การสูญเสียข้อมูลได้ ควรตรวจสอบเสมอว่ามีการเก็บรักษาบันทึกไบนารีไว้จนกว่าจะไม่จำเป็นต้องใช้อีกต่อไป
2. ผมควรจัดเก็บบันทึกไบนารีของ MySQL ไว้นานเท่าไรเพื่อสำรองข้อมูลแบบเพิ่มเติม?
ขึ้นอยู่กับนโยบายการสำรองข้อมูลของคุณ โดยทั่วไป ควรเก็บบันทึกไว้จนกว่าการสำรองข้อมูลแบบเต็มรูปแบบครั้งใหม่จะเสร็จสมบูรณ์และได้รับการยืนยัน
ข้อสรุป
แนะนำให้รีเฟรชบันทึกไบนารีของการสำรองข้อมูลแบบเพิ่มขึ้นทุกวัน สิ่งนี้จะทำให้ความถี่ในการสำรองข้อมูลฐานข้อมูลสูงพอที่จะลดความเสี่ยงในการสูญหายของข้อมูลให้น้อยที่สุด โดยการรีเฟรชการสำรองข้อมูลแบบเพิ่มขึ้นทุกวัน สามารถจัดการการเปลี่ยนแปลงของฐานข้อมูลได้อย่างมีประสิทธิภาพมากขึ้น ซึ่งช่วยให้สามารถกู้คืนข้อมูลไปยังสถานะล่าสุดได้เมื่อจำเป็น
แชร์บน: