التثبيت التلقائي لـ PostgreSQL: تجمع الاتصال ودليل النسخ الاحتياطي
إنشاء قاعدة بيانات PostgreSQL باستخدام لوحة VDS وتثبيت تجمع اتصال PgBouncer وعمليات النسخ الاحتياطي والاستعادة التلقائية. قل وداعًا لأوامر psql اليدوية.
PostgreSQL هي جوهرة التاج في عالم قواعد البيانات مفتوحة المصدر. موثوقة وقابلة للتطوير وملتزمة بالمعايير. ومع ذلك، في الإنتاج، يتطلب التثبيت الفعال وإعداد تجمع الاتصال وعمليات النسخ الاحتياطي والاستعادة معلومات. أكثر بكثير من مجرد أمر P0 واحد.
في هذه المقالة، سنشرح كيف تقوم لوحة VDS بإدارة PostgreSQL تلقائيًا، وكيفية التوسع باستخدام PgBouncer، واستراتيجية النسخ الاحتياطي الخاصة بها.
مشروع جديد = قاعدة بيانات جديدة
تكوين PostgreSQL في التدفق التقليدي:
ص0
ثم إلى بيئة تطبيقك:
ص1
في لوحة VDS: حدد مربع “إضافة PostgreSQL” عند إضافة المشروع. والباقي تلقائي:
- 01يتم إنشاء المستخدممستخدم اسمه myapp_user بكلمة مرور قوية مكونة من 32 حرفًا. لا يتم كشف كلمة المرور مرة أخرى خارج قاعدة البيانات.
- 02يتم إنشاء قاعدة البياناتيتم تعيين قاعدة بيانات باسم myapp_production لمستخدم جديد كمالك.
- 03يتم منح أذونات المخطط العامبالنسبة لـ PG 15+، يتم أيضًا تعيين الامتيازات الافتراضية. تعمل عمليات ترحيل Liquibase/Flyway دون أي مشاكل.
- 04تم إدخال DATABASE_URL في envعند بدء تشغيل حاوية التطبيق، ترى سلسلة الاتصال في بيئة العملية. لم يتم كتابته في أي مكان في الملف أو git.
- 05يتم حفظ تجمع اتصال PgBouncerإذا كان مشروعًا عالي الإنتاجية، فسيتم توجيه الاتصال عبر PgBouncer. التفاصيل أدناه.
لماذا نحتاج إلى PgBouncer؟
يقوم PostgreSQL بتفرع عملية منفصلة لكل اتصال. إذا تلقت واجهة Node.js API 100 طلب متزامن، فسيكون هناك 100 عملية PG. يؤدي هذا إلى إنشاء عبء تبديل الذاكرة والسياق.
PgBouncer روابط حمامات السباحة. قم بتعيين 1000 رابط تطبيق إلى 20-50 رابط PG حقيقي. خاتمة:
تقوم لوحة VDS تلقائيًا بتثبيت PgBouncer للمشاريع ذات الحركة المرورية العالية. عنوان الرابط:
ص2
التطبيق ليس على علم بذلك؛ ويستخدم نفس الواجهة، ولكن تجمع الاتصال يعمل في الخلفية.
لا يدعم وضع التجمع P0 الخاص بـ PgBouncer البيانات المعدة ومتغيرات الجلسة. إذا كان تطبيقك يستخدم P1 أو P2، فاستخدم وضع P3 (إنتاجية أقل قليلاً ولكن توافق كامل).
النسخ الاحتياطي التلقائي
تقوم لوحة VDS بفحص قاعدة البيانات الخاصة بك كل 15 دقيقة وتأخذ نسخة احتياطية كاملة يوميًا:
- تفريغ قاعدة البيانات باستخدام pg_dump —format=custom
- التشفير باستخدام age أو gpg (باستخدام المفتاح العام)
- تحميل S3 أو R2 اختياري (التعافي من الكوارث)
- احتفاظ لمدة 30 يومًا، ويتم مسح النسخ الاحتياطية القديمة تلقائيًا
- يتم الاحتفاظ بالملف المحلي عند التحميل غير الناجح
يمكنك عرض قائمة النسخ الاحتياطية واستعادة أي نسخة احتياطية من اللوحة.
يمكنك تحميل المفتاح العام للعمر إلى اللوحة. يبقى المفتاح الخاص معك فقط. حتى اللوحة أو المهاجم لا يستطيع فك تشفير النسخ الاحتياطية. تأكد من عمل نسخة احتياطية للمفتاح في وضع عدم الاتصال؛ إذا فقدت ذلك، فستفقد الوصول إلى النسخ الاحتياطية الخاصة بك.
الاستعادة: التراجع
حدث خطأ في عملية الترحيل، وكانت البيانات تالفة. من اللوحة:
- “قاعدة البيانات” ← علامة التبويب “النسخ الاحتياطية”.
- حدد تاريخ النسخ الاحتياطي المطلوب
- زر “استعادة”.
لوحة 4:
- إغلاق الاتصالات الموجودة (وضع الصيانة)
- يخزن البيانات الحالية كـ P0
- إنشاء قاعدة بيانات جديدة من النسخة الاحتياطية
- إعادة توجيه التطبيق إلى قاعدة بيانات جديدة
- يفتح الروابط
الوقت الإجمالي ~ 30 ثانية (لقواعد البيانات الصغيرة). بضع دقائق لقواعد البيانات الكبيرة.
إدارة الهجرة
Liquibase، Flyway، Prisma، Drizzle، TypeORM، أيًا كانت أداة الترحيل التي تستخدمها، تقوم اللوحة تلقائيًا بحل مشكلات ملكية جدول Liquibase/Flyway:
- يقوم Liquibase/Flyway بإنشاء جدول باستخدام مستخدم postgres المتميز
- لا يمكن لمستخدم التطبيق الوصول إلى هذه الجداول (مشكلة الملكية)
- تكتشف اللوحة ذلك وتنقل الملكية تلقائيًا
وإلا فسوف تحصل على خطأ “تم رفض الإذن للجدول…”؛ تحل اللوحة هذه المشكلة الشائعة.
PostgreSQL على Kubernetes (CNPG)
إذا كانت وحدة K3s نشطة، فيمكن استخدام CNPG (مشغل CloudNativePG) لـ PostgreSQL على مستوى الإنتاج. الايجابيات:
- تجاوز الفشل التلقائي (يتولى وضع الاستعداد في حالة حدوث عطل أساسي)
- دفق النسخ المتماثل (قراءة النسخ المتماثلة)
- النسخ الاحتياطي الساخن (النسخ الاحتياطي دون توقف)
- مراقبة التكامل
- الصيانة المجدولة
يقوم بتثبيت CNPG بنقرة واحدة باستخدام وحدة VDS Panel K3s. إنه مثالي لسيناريوهات الإنتاج التي تتطلب توفرًا عاليًا.
##يراقب
لوحة لكل مثيل PostgreSQL:
- عدد الاتصالات المباشرة (المستخدمة/الحد الأقصى)
- أداء الاستعلام (كشف الاستعلام البطيء)
- استخدام القرص
- مقاسات الطاولة
- تأخر النسخ (إن وجد)
- حالة النسخ الاحتياطي
الافتراضي P0؛ يتم تسجيل الاستعلامات الأطول من 500 مللي ثانية. ستلاحظ على الفور استعلامات بطيئة.
العزل
على جانب اللوحة، يتم تشغيل كل مشروع في قاعدة البيانات الخاصة به:
- لا يمكن للمشروع “أ” الوصول إلى قاعدة بيانات المشروع “ب”.
- مستخدم منفصل، كلمة مرور منفصلة، مخطط منفصل
- يمكن تشفير النسخ الاحتياطية في ملفات منفصلة بمفاتيح مختلفة
- يؤثر الحذف فقط على قاعدة بيانات هذا المشروع
بالنسبة لسيناريوهات الاستضافة متعددة المستأجرين، يعد هذا العزل أمرًا بالغ الأهمية.
خاتمة
إنتاج PostgreSQL هو مهمة تستغرق ساعات إذا تم إجراؤها يدويًا: إنشاء المستخدم/قاعدة البيانات، وتعيين الأذونات، وإعداد تجمع الاتصال، وجدولة النسخ الاحتياطي، واختبار الاستعادة، والمراقبة. تتعامل لوحة VDS مع هذه الخطوات تلقائيًا وتسمح لك بإدارتها من واجهة اللوحة.
كل ما عليك فعله هو تحديد مربع “إضافة PostgreSQL” عند إضافة مشروعك الأول. يتم الانتهاء من الباقي في غضون 4 ثوان. يمكنك التحقق من الصفحة الرئيسية للحصول على تفاصيل وحدة قاعدة البيانات أو مشاركة سيناريو التثبيت الخاص بك من نموذج الاتصال.
قد ترغب أيضا في هذه
مقارنة PostgreSQL وMySQL وMongoDB: ما هي قاعدة البيانات المخصصة لأي مشروع؟
مقارنة قواعد البيانات مفتوحة المصدر نقاط القوة والأداء وحالات استخدام PostgreSQL وMySQL وMariaDB وMongoDB وRedis. دليل الاختيار حسب نوع مشروعك.
ابدأ القراءةاستراتيجية النسخ الاحتياطي VPS والتعافي من الكوارث: القاعدة 3-2-1
كيف تحمي خادمك في سيناريوهات الكوارث؟ النسخ الاحتياطي المشفر التلقائي، وقاعدة النسخ الاحتياطي 3-2-1، وعمليات الاختبار والاستعادة، وأهداف RTO وRPO.
ابدأ القراءةهل ترغب في تجربتها على الخادم الخاص بك؟
اتصل بنا عبر نموذج الاتصال ودعنا نجهز ترخيصًا + خطة تثبيت مناسبة لسيناريو الاستخدام الخاص بك.