شرح صفوف ومحتوى الفقرة
عند أخذ نسخة احتياطية من قاعدة بيانات إنتاجية تعمل بمحرك InnoDB عبر أداة mysqldump، فإن الخيار الأهم على الإطلاق هو --single-transaction:
- كيف يعمل الخيار
--single-transactionداخلياً؟ يقوم برنامجmysqldumpبضبط مستوى عزل الجلسة علىREPEATABLE READثم يبدأ معاملة موحدة عبر الأمرSTART TRANSACTION WITH CONSISTENT SNAPSHOTقبل قراءة أي جدول. - نسخ احتياطي متسق دون إيقاف الموقع (Online Backup): بفضل تقنية تعدد النسخ (MVCC) في محرك InnoDB، تقرأ أداة
mysqldumpلقطة زمنية متسقة تماماً لجميع الجداول في نفس اللحظة دون قفل الجداول أو تعطيل عمليات الشراء والتحديث الجارية في الموقع. --quick: يسحب الصفوف من الخادم صفاً تلو الآخر مباشرة إلى ملف النسخة الاحتياطية بدلاً من تحميل الجدول الضخم بالكامل في الذاكرة العشوائية (RAM).--databases shop_db: يكتب أوامرCREATE DATABASE IF NOT EXISTSوUSE shop_dbتلقائياً في مطلع ملف النسخة.
-- الأمر المنفذ في طرفية النظام (OS Terminal):
mysqldump -u root -p --single-transaction --quick --databases shop_db > shop_db_full.sql
SQL
-- What mysqldump --single-transaction executes on the server:
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
START TRANSACTION WITH CONSISTENT SNAPSHOT;
-- Shell command to create an online compressed InnoDB backup:
-- mysqldump -u root -p --single-transaction --quick --databases shop_db > shop_db_full.sql