شرح صفوف ومحتوى الفقرة
ماذا لو أُخذت النسخة الاحتياطية اليومية الساعة 03:00 فجراً، وفي الساعة 14:30 ظهراً نفّذ أحدهم أمر حذف خاطئ؟ إن الاكتفاء باستعادة نسخة الفجر سيعني ضياع مبيعات 11 ساعة ونصف! وهنا تبرز أهمية الاستعادة إلى نقطة زمنية محددة (Point-in-Time Recovery — PITR) بالجمع بين النسخة الاحتياطية والسجل الثنائي (Binary Log):
- 1. تسجيل موقع السجل الثنائي لحظة النسخ: تمرير الخيار
--source-data=2لأداةmysqldumpيسجل كتعليق داخل ملف النسخة اسم ملف السجل الثنائي ورقم الموقع الدقيق (Position) لحظة أخذ اللقطة. - 2. استعادة النسخة الأساسية (03:00 فجراً): نستعيد ملف
mysqldumpأولاً لإرجاع قاعدة البيانات إلى حالة الساعة الثالثة فجراً. - 3. إعادة تطبيق السجل الثنائي حتى الثانية التي سبقت الخطأ: نستخدم أداة
mysqlbinlogمع تحديد نقطة البداية وتحديد وقت التوقف--stop-datetime="2026-11-01 14:29:59"(قبل الحذف بثانية واحدة) لتمرير جميع العمليات السليمة إلى الخادم. SHOW BINARY LOGS;: يعرض قائمة ملفات السجل الثنائي المتاحة في الخادم.
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| binlog.000042 | 104856 | | |
+------------------+----------+--------------+------------------+
SQL
SHOW VARIABLES LIKE 'log_bin';
SHOW BINARY LOGS;
-- 1. Take nightly dump with binlog coordinates recorded as comment:
-- mysqldump -u root -p --single-transaction --source-data=2 shop_db > shop_base.sql
-- 2. Replay binlog events up to 14:29:59 (before accidental DELETE at 14:30:00):
-- mysqlbinlog --start-position=157 --stop-datetime="2026-11-01 14:29:59" binlog.000042 | mysql -u root -p shop_db