نقل قاعدة البيانات: MySQL و PostgreSQL خطوة بخطوة

mysqldump، pg_dump، حجم البيانات، التوافق — نشرح نقل قاعدة البيانات بأمان بدون فقدان بيانات.
لماذا ترحيل قواعد البيانات هو الجزء الأصعب؟
قاعدة البيانات هي قلب أي تطبيق. الكود يمكن نسخه في ثوانٍ، لكن البيانات تحتاج عناية خاصة. سجل واحد مفقود أو جدول تالف يعني كارثة حقيقية. ترحيل قاعدة بيانات بحجم 50GB يختلف تماماً عن ترحيل واحدة بحجم 500GB، وكل محرك قواعد بيانات له طريقته وأدواته الخاصة.
هذا الدليل يغطي الترحيل لأشهر محركات قواعد البيانات: MySQL/MariaDB و PostgreSQL و MongoDB، مع خطوات عملية قابلة للتنفيذ مباشرة.
التحضير قبل الترحيل
1. توثيق البيئة الحالية
قبل أي شيء، وثّق كل تفاصيل بيئتك الحالية:
- نوع المحرك وإصداره (مثلاً MySQL 8.0.35)
- حجم قاعدة البيانات الكلي وحجم كل جدول
- عدد الجداول والـ Views والـ Stored Procedures
- إعدادات المحرك المخصصة (my.cnf أو postgresql.conf)
- المستخدمون وصلاحياتهم
- جداول الـ Replication إن وُجدت
2. قياس الأداء الحالي
سجّل مقاييس الأداء قبل الترحيل لتقارنها بعده. هذا يثبت إن الترحيل نجح أو يكشف أي تراجع:
| المقياس | كيف تقيسه |
|---|---|
| زمن استجابة الاستعلامات | EXPLAIN ANALYZE على الاستعلامات الرئيسية |
| عدد الاتصالات المتزامنة | SHOW PROCESSLIST أو pg_stat_activity |
| حجم الـ Buffer Pool | SHOW STATUS LIKE 'Innodb_buffer%' |
| معدل الكتابة/القراءة | iostat أو أدوات مراقبة السيرفر |
ترحيل MySQL / MariaDB
الطريقة 1: mysqldump (قواعد بيانات أقل من 10GB)
الطريقة الأبسط والأكثر شيوعاً. مناسبة لقواعد البيانات الصغيرة والمتوسطة:
- أنشئ نسخة كاملة: mysqldump --single-transaction --routines --triggers --all-databases
- انقل ملف الـ dump للسيرفر الجديد عبر scp أو rsync
- استورد النسخة: mysql < dump.sql
- تحقق من عدد الصفوف في كل جدول
الطريقة 2: Percona XtraBackup (قواعد بيانات أكبر من 10GB)
لقواعد البيانات الكبيرة، mysqldump بطيء جداً. Percona XtraBackup ينسخ البيانات فيزيائياً بدون قفل الجداول:
- خذ نسخة فيزيائية: xtrabackup --backup --target-dir=/backup
- جهّز النسخة: xtrabackup --prepare --target-dir=/backup
- انقلها للسيرفر الجديد وضعها في مجلد البيانات
- شغّل MySQL وتحقق من سلامة البيانات
الطريقة 3: النسخ المتماثل (للترحيل بدون توقف)
فعّل Replication بين السيرفر القديم (Master) والجديد (Slave)، ثم حوّل الجديد إلى Master عند التحويل. هذه الطريقة تضمن صفر فقدان للبيانات.
ترحيل PostgreSQL
الطريقة 1: pg_dump / pg_restore
مشابهة لـ mysqldump لكن مع ميزات أقوى:
- استخدم صيغة custom: pg_dump -Fc database_name > backup.dump
- الاستعادة مع التوازي: pg_restore -j 4 -d database_name backup.dump
- خيار -j يسمح باستخدام عدة عمليات متوازية لتسريع الاستعادة
الطريقة 2: pg_basebackup + Streaming Replication
للقواعد الكبيرة أو الترحيل بدون توقف. تنشئ نسخة متماثلة كاملة ثم تحوّلها:
- أنشئ نسخة: pg_basebackup -h old_server -D /var/lib/postgresql/data
- فعّل Streaming Replication
- عند التحويل: pg_ctl promote على السيرفر الجديد
ترحيل MongoDB
MongoDB يوفر أدوات مدمجة:
- mongodump / mongorestore: للقواعد الصغيرة والمتوسطة
- Replica Set: أضف السيرفر الجديد كعضو في المجموعة، ثم حوّله إلى Primary
- mongosync: أداة حديثة للمزامنة المستمرة بين مجموعتين
التحقق بعد الترحيل
- قارن عدد الصفوف في كل جدول بين القديم والجديد
- شغّل الاستعلامات الرئيسية وقارن النتائج
- تحقق من الـ Indexes: هل تم نقلها بالكامل؟
- اختبر Stored Procedures والـ Triggers
- قارن مقاييس الأداء مع القياسات السابقة
- تأكد من صلاحيات المستخدمين
تحسين الأداء بعد الترحيل
الترحيل فرصة لتحسين أداء قاعدة البيانات. بعد ما تتأكد إن البيانات سليمة، نفّذ هذه التحسينات:
تحسين InnoDB (MySQL/MariaDB)
- innodb_buffer_pool_size: اضبطه على 70-80% من RAM المتاح. هذا أهم إعداد للأداء
- innodb_log_file_size: 256MB أو 512MB للقواعد النشطة — يقلل عمليات الكتابة على القرص
- innodb_flush_log_at_trx_commit: القيمة 1 للأمان الكامل، 2 لأداء أفضل مع مخاطرة بسيطة
- OPTIMIZE TABLE: شغّله على الجداول الكبيرة بعد الترحيل لإعادة بناء الفهارس
تحسين PostgreSQL
- shared_buffers: 25% من RAM المتاح
- effective_cache_size: 50-75% من RAM المتاح
- work_mem: 32-64MB حسب عدد الاتصالات المتزامنة
- VACUUM ANALYZE: شغّله بعد الترحيل لتحديث إحصائيات المخطط
تقدير وقت الترحيل حسب الحجم
| حجم القاعدة | mysqldump/pg_dump | XtraBackup/pg_basebackup | Replication |
|---|---|---|---|
| أقل من 1GB | 5-15 دقيقة | 2-5 دقائق | غير ضروري |
| 1-10GB | 15-60 دقيقة | 5-15 دقيقة | اختياري |
| 10-50GB | 1-4 ساعات | 15-45 دقيقة | موصى به |
| 50-200GB | 4-12 ساعة | 1-3 ساعات | ضروري |
| أكثر من 200GB | غير عملي | 3-8 ساعات | إلزامي |
هذه التقديرات تعتمد على سرعة القرص والشبكة. أقراص SSD تسرّع العملية بـ 3-5 مرات مقارنة بأقراص HDD التقليدية. السيرفرات في نفس مركز البيانات تنقل البيانات أسرع بكثير من السيرفرات البعيدة جغرافياً.
ترحيل قواعد البيانات على كلاود
سيرفرات كلاود (cloud.net.sa) مزودة بأقراص SSD عالية الأداء، مما يجعل عمليات الاستيراد والاستعلام أسرع بشكل ملحوظ. فريق كلاود يقدم جلسات توجيه مجانية لمطوّري العملاء لمساعدتهم في اختيار أفضل استراتيجية ترحيل حسب حجم قاعدة البيانات ومتطلبات التطبيق.
القاعدة الذهبية: لا تترحل بدون نسخة احتياطية مؤكدة وخطة تراجع واضحة. قاعدة بياناتك هي أثمن ما تملك، وتستحق أن تعاملها بحذر.
--- ### ابدأ الآن تبي تجرب بنفسك؟ اختر باقة الاستضافة المناسبة أو صمم سيرفرك الخاص بالمواصفات اللي تبيها.