1. المقدمة
MySQL هو نظام إدارة قواعد بيانات واسع الاستخدام للعديد من المواقع والتطبيقات. من بين أدواته، أمر mysqldump أساسي لإنشاء نسخ احتياطية من قواعد البيانات ومعالجة عمليات النقل. هذا الأمر مفيد بشكل خاص عندما تحتاج إلى نسخ احتياطي لجدول أو جداول محددة فقط من قاعدة بيانات كبيرة.
في هذه المقالة، سنشرح بالتفصيل كيفية تفريغ جداول محددة باستخدام أمر mysqldump. الدليل مناسب للمبتدئين، لكننا سنغطي أيضًا الخيارات المتقدمة وحالات الاستخدام العملية للمستخدمين المتوسطين.
2. الصياغة الأساسية لأمر mysqldump
أولاً، دعونا نستعرض الاستخدام الأساسي لأمر mysqldump. يُستخدم هذا الأمر لتفريغ (نسخ احتياطي) بنية وبيانات قاعدة بيانات كاملة أو جداول مختارة.
الصياغة الأساسية
عن طريق تحديد اسم المستخدم، كلمة المرور، اسم قاعدة البيانات، واسم الجدول، يمكنك نسخ جدول محدد كما هو موضح أدناه:
mysqldump -u username -p database_name table_name > output_file.sql
-u: يحدد اسم مستخدم قاعدة البيانات-p: يطلب كلمة مرور قاعدة البياناتdatabase_name: اسم قاعدة البيانات التي سيتم تفريغهاtable_name: اسم الجدول المحدد لتفريغه> output_file.sql: ملف الإخراج حيث يتم حفظ التفريغ
الخيارات الشائعة المستخدمة
--single-transaction: يضمن اتساق المعاملات عند نسخ جداول InnoDB--skip-lock-tables: يمنع قفل الجداول أثناء عملية النسخ الاحتياطي

3. تفريغ جداول محددة
تفريغ جدول واحد
لنسخ جدول واحد فقط، حدد اسم الجدول بعد اسم قاعدة البيانات. على سبيل المثال، الأمر التالي يفرغ جدول users فقط:
mysqldump -u root -p my_database users > users_dump.sql
هذا الأمر يحفظ بنية وبيانات جدول users من قاعدة البيانات my_database في الملف users_dump.sql.
تفريغ جداول متعددة
إذا كنت تريد نسخ عدة جداول في آن واحد، قم بسرد أسماء الجداول مفصولة بمسافات:
mysqldump -u root -p my_database users orders products > multiple_tables_dump.sql
هذا الأمر يفرغ جداول users و orders و products معًا.
استخدام قائمة الجداول
عند التعامل مع عدد كبير من الجداول، قد يكون كتابة جميع أسماء الجداول يدويًا مرهقًا. في هذه الحالة، يمكنك استخدام أمر SHOW TABLES أو سكريبت لتوليد قائمة الجداول تلقائيًا للتفريغ:
mysql -u root -p my_database -N -e "SHOW TABLES LIKE 'hoge%'" > table_list.txt
mysqldump -u root -p my_database `cat table_list.txt` > partial_dump.sql
تتيح لك هذه الطريقة نسخ الجداول التي تطابق نمطًا معينًا بكفاءة.
4. الخيارات والاستخدام المتقدم
يتضمن أمر mysqldump خيارات متعددة تسمح لك بتخصيص النسخ الاحتياطي وفقًا لاحتياجاتك. فيما يلي بعض الحالات المفيدة.
تفريغ البنية فقط
إذا كنت تحتاج فقط إلى بنية الجدول دون البيانات، استخدم الخيار --no-data:
mysqldump -u root -p my_database --no-data users > users_structure.sql
هذا الأمر يفرغ بنية جدول users فقط.
تفريغ البيانات فقط
إذا كنت تريد فقط البيانات دون بنية الجدول، استخدم الخيار --no-create-info:
mysqldump -u root -p my_database --no-create-info users > users_data.sql
هذا الأمر يفرغ بيانات جدول users فقط.
التفريغ الشرطي
يمكنك استخدام الخيار --where لتفريغ الصفوف التي تطابق شروطًا معينة فقط. على سبيل المثال، لتفريغ الصفوف التي يكون فيها id أكبر من 100:
mysqldump -u root -p my_database users --where="id > 100" > users_filtered_dump.sql
هذا مفيد لنسخ الجزء المطلوب فقط من البيانات من الجداول الكبيرة.

5. أمثلة عملية
الحالة العملية 1: نسخ جدول واحد احتياطيًا
على سبيل المثال، لنسخ جدول salary فقط من قاعدة البيانات employees:
mysqldump -u root -p employees salary > salary_dump.sql
الحالة العملية 2: نسخ البيانات بشرط
لتصدير جزء فقط من البيانات، استخدم خيار --where. على سبيل المثال، لنسخ الصفوف التي يكون فيها id أكبر من 100 من جدول users:
mysqldump -u root -p my_database users --where="id > 100" > users_partial_dump.sql
6. أفضل الممارسات والاعتبارات
تجنّب مشاكل قفل الجداول
عند استخدام mysqldump، قد تُقفل الجداول، مما يمنع العمليات الأخرى. في أنظمة الإنتاج يُنصح باستخدام خيار --single-transaction لتجنب توقف الخدمة. بالنسبة لجداول InnoDB، الجمع بينه وبين --skip-lock-tables يكون أكثر أمانًا.
التعامل مع أحجام البيانات الكبيرة
في قواعد البيانات الضخمة، قد تستغرق عملية التفريغ وقتًا طويلاً. من الممارسات الشائعة ضغط الناتج في الوقت الفعلي باستخدام gzip:
mysqldump -u root -p my_database | gzip > backup_$(date +%Y%m%d).sql.gz
هذا الأمر يوفر مساحة على القرص عن طريق ضغط التفريغ أثناء إنشائه.

7. الخاتمة
في هذه المقالة، غطينا كيفية تصدير جداول محددة باستخدام أمر mysqldump. من الصياغة الأساسية إلى التفريغ الشرطي، والتصدير الهيكلي فقط أو البيانات فقط، وحتى الأتمتة باستخدام السكريبتات، استعرضنا مجموعة واسعة من حالات الاستخدام. يُعد أمر mysqldump أداة قوية، وعند استخدامها بشكل صحيح، تجعل نسخ قواعد البيانات احتياطيًا وترحيلها أسهل بكثير.
في المقالة التالية، سنغوص في خيارات mysqldump المتقدمة ونقارنها بأدوات النسخ الاحتياطي الأخرى.


