النسخ الاحتياطي لقواعد البيانات: دليل MySQL وPostgreSQL
النسخ الاحتياطي واستعادة قواعد بيانات MySQL وPostgreSQL باستخدام mysqldump وpg_dump. النسخ الاحتياطي التلقائي مع cron وإجراءات الاستعادة وأفضل الممارسات.
جدول المحتويات
النسخ الاحتياطي لقواعد البيانات: دليل MySQL وPostgreSQL
يُعدّ النسخ الاحتياطي لقواعد البيانات من أهم مهام إدارة الخوادم. النسخ الاحتياطية المنتظمة ضرورية للتعافي من أعطال الأجهزة أو الأخطاء البشرية أو الهجمات الإلكترونية. يغطي هذا الدليل إجراءات النسخ الاحتياطي والاستعادة لكل من MySQL وPostgreSQL.
لماذا النسخ الاحتياطي لقواعد البيانات؟
- عطل الأجهزة أو تلف القرص
- البيانات المحذوفة عن طريق الخطأ
- مشاكل بعد تحديثات البرامج
- الهجمات الإلكترونية أو برامج الفدية
- نسخ البيانات إلى بيئة التطوير/الاختبار
بدون نسخ احتياطية، فقدان البيانات لا رجعة فيه. اتبع قاعدة 3-2-1: 3 نسخ، نوعان مختلفان من الوسائط، موقع واحد خارجي.
النسخ الاحتياطي لـ MySQL / MariaDB
النسخ الاحتياطي الأساسي مع mysqldump
# نسخ احتياطي لقاعدة بيانات واحدة
mysqldump -u root -p اسم_قاعدة_البيانات > backup.sql
# مع كلمة المرور (للسكريبتات)
mysqldump -u root -pكلمة_المرور اسم_قاعدة_البيانات > backup.sql
# نسخ احتياطي لجميع قواعد البيانات
mysqldump -u root -p --all-databases > all_databases.sql
# نسخ احتياطي لجداول محددة
mysqldump -u root -p اسم_قاعدة_البيانات جدول1 جدول2 > tables.sql
# نسخ احتياطي مضغوط
mysqldump -u root -p اسم_قاعدة_البيانات | gzip > backup_$(date +%Y%m%d).sql.gz
خيارات mysqldump المتقدمة
# نسخ احتياطي متسق لقواعد البيانات الكبيرة
mysqldump -u root -p \
--single-transaction \
--routines \
--triggers \
--events \
اسم_قاعدة_البيانات > full_backup.sql
# الهيكل فقط (بدون بيانات)
mysqldump -u root -p --no-data اسم_قاعدة_البيانات > schema.sql
# البيانات فقط (بدون هيكل)
mysqldump -u root -p --no-create-info اسم_قاعدة_البيانات > data.sql
# نسخ احتياطي من خادم بعيد
mysqldump -h remote_server -u user -p اسم_قاعدة_البيانات > remote_backup.sql
استعادة MySQL
# الاستعادة من ملف SQL
mysql -u root -p اسم_قاعدة_البيانات < backup.sql
# الاستعادة من نسخة احتياطية مضغوطة
gunzip -c backup.sql.gz | mysql -u root -p اسم_قاعدة_البيانات
# إنشاء قاعدة بيانات جديدة والاستعادة
mysql -u root -p -e "CREATE DATABASE new_database;"
mysql -u root -p new_database < backup.sql
# استعادة جميع قواعد البيانات
mysql -u root -p < all_databases.sql
تخزين بيانات الاعتماد بأمان
# إنشاء ~/.my.cnf
nano ~/.my.cnf
[client]
user=root
password=كلمة_المرور
host=localhost
# تقييد أذونات الملف
chmod 600 ~/.my.cnf
# الآن يمكن الاستخدام بدون إدخال كلمة المرور
mysqldump اسم_قاعدة_البيانات > backup.sql
النسخ الاحتياطي لـ PostgreSQL
النسخ الاحتياطي الأساسي مع pg_dump
# نسخ احتياطي لقاعدة بيانات واحدة
pg_dump -U postgres اسم_قاعدة_البيانات > backup.sql
# تنسيق مخصص مضغوط (موصى به)
pg_dump -U postgres -Fc اسم_قاعدة_البيانات > backup.dump
# تنسيق الدليل (للاستعادة المتوازية)
pg_dump -U postgres -Fd اسم_قاعدة_البيانات -f backup_dir/
# نسخ احتياطي لجميع قواعد البيانات (بما فيها الأدوار)
pg_dumpall -U postgres > all_pg.sql
# نسخ احتياطي مضغوط
pg_dump -U postgres اسم_قاعدة_البيانات | gzip > backup_$(date +%Y%m%d).sql.gz
استعادة PostgreSQL
# الاستعادة من تنسيق SQL
psql -U postgres اسم_قاعدة_البيانات < backup.sql
# استعادة التنسيق المخصص (.dump)
pg_restore -U postgres -d اسم_قاعدة_البيانات backup.dump
# الاستعادة المتوازية (أسرع)
pg_restore -U postgres -d اسم_قاعدة_البيانات -j 4 backup.dump
# إنشاء قاعدة بيانات جديدة والاستعادة
psql -U postgres -c "CREATE DATABASE new_database;"
pg_restore -U postgres -d new_database backup.dump
الوصول بدون كلمة مرور (.pgpass)
nano ~/.pgpass
# التنسيق: host:port:database:user:password
localhost:5432:*:postgres:كلمة_المرور
chmod 600 ~/.pgpass
النسخ الاحتياطي التلقائي مع Cron
سكريبت النسخ الاحتياطي التلقائي لـ MySQL
#!/bin/bash
# الإعداد
DB_USER="root"
DB_PASS="كلمة_المرور"
DB_NAME="اسم_قاعدة_البيانات"
BACKUP_DIR="/var/backups/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
RETENTION_DAYS=7
# إنشاء مجلد النسخ الاحتياطي
mkdir -p $BACKUP_DIR
# أخذ النسخة الاحتياطية
mysqldump -u $DB_USER -p$DB_PASS \
--single-transaction \
--routines \
--triggers \
$DB_NAME | gzip > $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz
# حذف النسخ الاحتياطية القديمة
find $BACKUP_DIR -name "*.sql.gz" -mtime +$RETENTION_DAYS -delete
echo "اكتمل النسخ الاحتياطي: ${DB_NAME}_${DATE}.sql.gz"
# جعل السكريبت قابلاً للتنفيذ
chmod +x /root/scripts/mysql-backup.sh
# إضافة إلى crontab (كل ليلة الساعة 02:00)
crontab -e
0 2 * * * /root/scripts/mysql-backup.sh >> /var/log/mysql-backup.log 2>&1
إرسال النسخ الاحتياطية إلى خادم بعيد
# النسخ إلى خادم بعيد باستخدام rsync
rsync -avz /var/backups/mysql/ user@remote-server:/backup/mysql/
# إرسال ملف واحد باستخدام scp
scp /var/backups/mysql/backup.sql.gz user@remote-server:/backup/
# الإرسال إلى التخزين السحابي باستخدام rclone (S3، Google Drive، إلخ)
rclone copy /var/backups/mysql/ remote:bucket-name/mysql/
التحقق من النسخ الاحتياطية
# التحقق من حجم ملف النسخة الاحتياطية
ls -lh /var/backups/mysql/
# التحقق بالاستعادة إلى قاعدة بيانات اختبار
mysql -u root -p -e "CREATE DATABASE test_restore;"
mysql -u root -p test_restore < backup.sql
mysql -u root -p -e "SHOW TABLES;" test_restore
mysql -u root -p -e "DROP DATABASE test_restore;"
اختبر نسخك الاحتياطية بانتظام. النسخة الاحتياطية التي لا يمكنك استعادتها عديمة الفائدة. قم بإجراء استعادة اختبارية مرة واحدة على الأقل شهرياً.
أفضل الممارسات
- نسخ احتياطي منتظم: يومي أو كل ساعة لقواعد البيانات الحيوية
- الضغط: استخدم gzip لتوفير مساحة القرص
- التخزين البعيد: احفظ النسخ الاحتياطية على خادم مختلف أو في السحابة
- سياسة الاحتفاظ: احتفظ بـ 7 نسخ يومية و4 أسبوعية و12 شهرية
- التشفير: شفّر النسخ الاحتياطية التي تحتوي على بيانات حساسة
- المراقبة: تنبيهات بريد إلكتروني عند فشل النسخ الاحتياطي
- الاختبار: تحقق من النسخ الاحتياطية بانتظام عن طريق استعادتها
الخلاصة
النسخ الاحتياطي المنتظم لقواعد البيانات هو أهم دفاع ضد فقدان البيانات. من خلال إعداد سكريبتات النسخ الاحتياطي التلقائي لـ MySQL وPostgreSQL وتخزين النسخ الاحتياطية خارجياً، يمكنك الحفاظ على أمان بياناتك على خوادم REXE.
مقالات ذات صلة
الاتصال بخادم VDS عبر SSH: PuTTY والطرفية والمفاتيح
دليل شامل للاتصال بخادم Linux VDS عبر SSH: PuTTY، الطرفية، المصادقة بالمفتاح، إنشاء قاعدة تصفية Path Panel، تغيير المنفذ ونصائح الأمان الأساسية.
الاتصال بـ Windows VDS عبر RDP: دليل شامل للمبتدئين
دليل خطوة بخطوة للاتصال بـ Windows Server VDS عبر RDP: الإعداد الكامل، تفعيل NLA للأمان، إنشاء قاعدة تصفية Path Panel واستكشاف الأخطاء وإصلاحها.
تغيير نظام تشغيل خادم VDS: دليل إعادة التثبيت خطوة بخطوة
تغيير نظام تشغيل خادم VDS عبر لوحة REXE: نصائح النسخ الاحتياطي قبل التثبيت، توزيعات Linux المدعومة وإصدارات Windows Server المتاحة للتثبيت الآن.