المستوى: مبتدئ
قاعدة بياناتك بتشتغل من 6 شهور بدون Backup منتظم، ومحدش بياخد باله إن لو القرص فشل النهارده، شغل 6 شهور بيضيع في 12 ثانية. هنا هتعمل سكربت 50 سطر Bash بياخد Backup يومي من PostgreSQL ويرفعه على Backblaze B2 بـ 0.005$ للجيجا (أرخص من AWS S3 بـ 4 مرات)، وتقدر تسترد أي يوم في أقل من 4 دقايق.
Backup أوتوماتيكي لـ PostgreSQL على Backblaze B2 من الصفر
المشكلة باختصار
لو قاعدة بياناتك على VPS أو سيرفر إنت بتديره بنفسك، Backup مش متفعّل افتراضياً في PostgreSQL. أول ما القرص يحصله bad sector أو الـ Docker container يتمسح بالغلط، البيانات بتروح. الحلول الجاهزة زي pgBackRest أو Barman ممتازة لكن overkill للمشاريع الصغيرة. الفكرة هنا: pg_dump مدمج في PostgreSQL، Backblaze B2 بياخد ملفات بـ S3 API، و cron موجود على أي توزيعة Linux. مفيش حاجة جديدة تتركّب.
المفهوم بمثال بسيط للمبتدئ
تخيّل إنك تاجر عندك دفتر حسابات ورقي. كل يوم بعد ما تقفل المحل، بتاخد صورة photocopy من الدفتر وبتحطها في خزنة في بنك تاني، مش في المحل نفسه. لو المحل سرقوه أو حصلت حريقة، الـ photocopy موجودة في البنك التاني. ده بالظبط Backup خارجي: pg_dump هو الـ photocopy، و Backblaze B2 هو البنك التاني.
الفرق العلمي إن pg_dump مش بياخد صورة "غبية" من ملفات الـ DB على القرص. هو بيستخدم MVCC (Multi-Version Concurrency Control) عشان ياخد snapshot منطقي متّسق من البيانات، حتى لو في كتابات بتحصل في نفس اللحظة، وبدون ما يقفل الجدول على المستخدمين.
ليه Backblaze B2 وليه مش S3
Backblaze B2 بيكلّف 6$ للتيرابايت شهرياً للتخزين، و 0.01$ للجيجا في الـ download. AWS S3 Standard بيكلّف 23$ للتيرابايت و 0.09$ للجيجا download. لقاعدة 8 جيجا مع 30 Backup يومي + 4 استرجاعات شهرياً، الحساب طلع:
- Backblaze B2: 1.92$ شهرياً
- AWS S3: 8.94$ شهرياً
الفرق 4.6 مرة على نفس الـ S3-compatible API. يعني سكربتك مش هيتغيّر لو قررت تنقل بعدين.
الـ trade-off: B2 latency أعلى من S3 بحوالي 80ms في أمريكا و 140ms في أوروبا، لكن دي مش مشكلة لـ Backup بيتشغّل ليلاً.
الخطوات التنفيذية
- افتح حساب Backblaze B2: ادخل على backblaze.com/b2، فعّل B2، وأنشئ Application Key بصلاحية write فقط على Bucket واحد. ده مهم: مش الـ Master Key، لأن لو الـ key اتسرّب من السيرفر، الضرر محدود.
- ركّب الأدوات على السيرفر:
sudo apt update && sudo apt install -y awscli postgresql-client gzip - اضبط الـ credentials بتاعت B2 على هيئة AWS profile: