الرئيسية
» مسؤول الشبكة
»
كيفية عمل نسخة احتياطية واستعادة قاعدة بيانات Matrix Synapse PostgreSQL
كيفية عمل نسخة احتياطية واستعادة قاعدة بيانات Matrix Synapse PostgreSQL
تبدأ عملية استعادة Synapse الموثوقة بنسخة احتياطية من PostgreSQL قابلة للقراءة، وقاعدة بيانات وجهة نظيفة، وملفات الخادم الرئيسية المطابقة. بالنسبة لتثبيت نموذجي لقاعدة بيانات واحدة، يوصي دليل النسخ الاحتياطي الخاص بـ Synapse باستخدام تنسيق النسخة الاحتياطية المخصص لـ PostgreSQL، ويستثني محتويات ملف e2e_one_time_keys_json. استعد البيانات في قاعدة بيانات جديدة فارغة؛ لا تقم بإنشاء نسخة احتياطية فوق الجداول المتبقية من تثبيت سابق. ثم تأكد من تشغيل Synapse على قاعدة البيانات المستعادة، ومن وجود الوسائط المحلية ومفاتيح التوقيع.
يفترض هذا الدليل وجود مضيف لينكس، وقاعدة بيانات PostgreSQL باسم synapse، ودور قاعدة بيانات باسم synapse_user. استبدل قاعدة البيانات، والدور، ومسار النسخ الاحتياطي، واسم الخدمة، ومسارات التكوين المستخدمة في عملية النشر الخاصة بك. تتطلب عمليات نشر Docker Compose وKubernetes وPostgreSQL المُدارة وSynapse متعددة قواعد البيانات أوامر مكافئة لبيئتها.
ما يحميه تفريغ قاعدة البيانات وما لا يحميه
pg_dumpيلتقط هذا الأمر لقطة متسقة لقاعدة بيانات PostgreSQL واحدة، مما يسمح لـ PostgreSQL وSynapse بالبقاء متصلين بالإنترنت أثناء عملية النسخ الاحتياطي. -Fcيمكن فحص الأرشيف ذي التنسيق المخصص واستعادته باستخدام الأمر ` pg_restoresynapse`. يوصي دليل Synapse تحديدًا باستبعاد بيانات الجداول ذات المفاتيح لمرة واحدة: فقد تؤدي استعادة المفاتيح القديمة المستخدمة إلى تلقي العملاء للمفاتيح مرة أخرى، مما قد يتسبب في أخطاء في فك تشفير الرسائل. قد يظل تعريف الجدول ظاهرًا في الأرشيف؛ عند التحقق من قائمة الأرشيف، ابحث عن إدخالات بيانات الجدول بدلًا من افتراض أن الجدول المدرج يحتوي على صفوف.
لا يُعدّ تفريغ قاعدة البيانات وحده نسخة احتياطية كاملة للخادم المنزلي. احتفظ أيضًا بنسخة احتياطية من قاعدة البيانات homeserver.yamlوأي ملفات مُشار إليها، ومفتاح توقيع الخادم، ودليل تخزين الوسائط. يُشير دليل النسخ الاحتياطي لبرنامج Synapse إلى أهمية الوسائط التي تم تحميلها محليًا، لأن الخادم المنزلي قد يحتوي على النسخة الوحيدة. إذا كان تكوينك يستخدم أكثر من مدخل قاعدة بيانات واحد، فخطط لتفريغ كل قاعدة بيانات يستخدمها Synapse.
قبل أن تبدأ
تأكد من اسم قاعدة البيانات المُكوّنة، والمستخدم، والمضيف، والمنفذ، وما إذا كان برنامج Synapse يستخدم قاعدة بيانات واحدة أو عدة قواعد بيانات.
تأكد من تثبيت أدوات عميل pg_dumpPostgreSQL pg_restoreو createdb...psql
اختر وجهة نسخ احتياطي محمية بمساحة تخزين كافية. قد تحتوي ملفات النسخ الاحتياطي على رسائل خاصة وبيانات حسابات؛ لذا قيّد الوصول إليها وقم بتشفير النسخ الاحتياطية أثناء التخزين وأثناء النقل.
سجّل دليل تكوين Synapse، ومسار مفتاح التوقيع، و media_store_path. احفظ نسخًا احتياطية من البيانات السرية دون كشفها في سجل الأوامر، أو المحادثات، أو السجلات.
حدد كيفية اختبار عملية الاستعادة. تُعدّ عملية الاستعادة التجريبية على مضيف معزول أو قاعدة بيانات تجريبية دليلاً أقوى من مجرد نجاح أمر النسخ الاحتياطي.
قم بإنشاء نسخة احتياطية من PostgreSQL والتحقق منها
1. تأكيد قاعدة البيانات المستهدفة والدور
على خادم PostgreSQL مُدار ذاتيًا، اتصل كمسؤول PostgreSQL وافحص قائمة قواعد البيانات والعلاقات. لا تعتمد على اسم افتراضي منسوخ من نموذج تكوين. إذا كان خادمك المنزلي يستخدم قاعدة بيانات عن بُعد أو مُدارة، فاستخدم طريقة الاتصال المعتمدة وتأكد من أن حساب النسخ الاحتياطي لديه صلاحية القراءة المطلوبة.
تساعد نظرة طرفية على علاقات Synapse ومالكها في التأكد من أن أمر النسخ الاحتياطي سيستهدف قاعدة البيانات المقصودة.
2. قم بإنشاء نسخة احتياطية بتنسيق مخصص
أنشئ مجلدًا لا يمكن قراءته إلا من قِبل حساب النسخ الاحتياطي أو المسؤولين. المثال أدناه يعمل pg_dumpباستخدام حساب نظام التشغيل المحلي لـ PostgreSQL ويكتب إلى مسار محمي. غيّر المسار إلى مسار موجود وقابل للكتابة في إعداداتك.
إذا كانت قاعدة بياناتك بعيدة، فقم بتوفير إعدادات الاتصال باستخدام الطريقة المعتمدة في بيئتك، مثل .pgpassملف محمي أو متغيرات بيئة libpq. تجنب إدخال كلمة المرور مباشرةً في سطر الأوامر. احتفظ بخيار الاستبعاد إلا إذا كان لديك سبب موثق ومحدد للتعامل مع جدول المفتاح لمرة واحدة بشكل مختلف.
يستثني أمر النسخ الاحتياطي البيانات ذات المفتاح لمرة واحدة ويكتب أرشيفًا بتنسيق مخصص للفحص لاحقًا باستخدام pg_restore.
3. تحقق من الأرشيف واحتفظ بمجموع التحقق
تأكد من وجود ملف النسخ الاحتياطي، وأن قيمته غير صفرية، وأنه قابل للقراءة كأرشيف PostgreSQL. يُعدّ عرض البيانات بنجاح فحصًا أوليًا مفيدًا، ولكنه لا يضمن اكتمال عملية الاستعادة أو قدرة الخادم الرئيسي بالكامل على خدمة المستخدمين.
احفظ مجموع التحقق بجانب سجل النسخ الاحتياطي، ثم انسخ النسخة الاحتياطية إلى نظام منفصل أو خدمة نسخ احتياطي. أعد حساب مجموع التحقق بعد النسخ وقارن القيم. لتحقيق أهداف استعادة الإنتاج، جدوِل نسخًا احتياطية منتظمة، واحتفظ بنسخ متعددة، وقم بتشفيرها، ونفّذ تدريبات استعادة دورية.
استعادة قاعدة البيانات إلى قاعدة بيانات نظيفة
4. أوقف برنامج Synapse وجهّز وجهة فارغة
لإجراء عملية استعادة، أوقف خدمة Synapse أولاً حتى لا تتمكن من إعادة الاتصال أثناء استبدال قاعدة البيانات أو اختبارها. اسم الخدمة المذكور أدناه شائع في بعض عمليات تثبيت الحزم، ولكنه يختلف؛ يجب على مستخدمي Docker إيقاف خدمة Synapse من خلال مشروع Compose الخاص بهم، ويجب على عمليات النشر المنسقة استخدام إجراءات الصيانة المعتادة. لا يلزم إيقاف PostgreSQL نفسه.
أوقف تطبيق Synapse قبل تحويل قاعدة بياناته إلى نسخة مستعادة؛ استخدم اسم الخدمة المُكوّن على جهازك المضيف.
استخدم قاعدة بيانات جديدة فارغة للاستعادة. لا تقم بالاستعادة فوق قاعدة بيانات Synapse موجودة أو قاعدة بيانات تحتوي على جداول. إذا كنت بحاجة إلى الاحتفاظ بقاعدة البيانات الحالية للتراجع، فاتركها كما هي واستعدها تحت اسم قاعدة بيانات مؤقت، ثم تحقق من صحة البيانات قبل تغيير إعدادات Synapse.
يجب أن يتطابق مالك قاعدة البيانات واللغة مع متطلبات إعداد Synapse الخاص بك. إذا كان اسم الهدف موجودًا بالفعل، فتوقف وتأكد من قاعدة البيانات التي تنوي استخدامها؛ لا تفترض أن حذفها آمن. أنشئ أي أدوار PostgreSQL مطلوبة أولًا. pg_dumpلا تتضمن قاعدة البيانات الواحدة أدوارًا على مستوى المجموعة، لذا قد يحتاج المسؤول الذي ينتقل إلى مجموعة PostgreSQL جديدة إلى نسخة احتياطية عامة محمية بشكل منفصل pg_dumpall --globals-only.
قم بإنشاء الوجهة كقاعدة بيانات فارغة مع الترميز واللغة والمالك المتوقع من قبل Synapse.
5. استعادة الأرشيف والتعامل مع المفاتيح لمرة واحدة
قم بتحميل الأرشيف المخصص إلى تلك الوجهة الفارغة. يؤدي خيار الخطأ الصريح إلى إيقاف عملية الاستعادة عند مواجهة خطأ ما، بدلاً من الاستمرار وترك نتيجة غير مكتملة يسهل تفويتها.
إذا لم يستثنِ ملف النسخ الاحتياطي الخاص بك هذا الجدول e2e_one_time_keys_json، فاتصل بقاعدة البيانات المستعادة وقم بحذف جميع البيانات من ذلك الجدول قبل تشغيل Synapse. هذه هي آلية الحماية التي يوفرها Synapse لاستعادة البيانات في النسخ الاحتياطية التي تتضمن هذه الصفوف. لا تُنفّذ الأمر على قاعدة بيانات قيد التشغيل بشكل عشوائي، لأنه سيحذف جميع الصفوف في ذلك الجدول.
لا تقم باستعادة الأرشيف إلا بعد إنشاء قاعدة بيانات هدف فارغة جديدة، وراجع أي مخرجات خطأ قبل المتابعة.استخدم هذا فقط عندما تتضمن النسخة الاحتياطية المستعادة صفوفًا ذات مفتاح لمرة واحدة؛ يجب أن يظل برنامج Synapse متوقفًا حتى يتم مسح الجدول.
إذا استخدمتَ الاستثناء الموصى به، فلن تحتوي عملية الاستعادة على صفوف المفاتيح القديمة ذات الاستخدام الواحد، وبالتالي تصبح خطوة الاقتطاع هذه غير ضرورية. pg_restore --listيمكن أن يُمثّل إدخال الجدول تعريفًا للجدول دون بياناته. تحقق من وجود TABLE DATAإدخالات عند مراجعة محتويات الأرشيف؛ وأفضل سجل تشغيلي هو أمر التفريغ المستخدم بدقة.
أعد تشغيل Synapse وتحقق من استعادة النظام.
6. استعادة الملفات المصاحبة وتشغيل برنامج Synapse
قبل إعادة التشغيل، تأكد من أن الإعدادات المُستعادة تُشير إلى قاعدة البيانات المقصودة، وأن مفتاح التوقيع المتوقع ومخزن الوسائط مُتاحان لعملية Synapse. إذا قمتَ بالاستعادة تحت اسم قاعدة بيانات مؤقت، فقم بتحديث إعدادات قاعدة البيانات بشكل آمن، وتحقق من صحة الملف، واستخدم عملية النشر المعتادة لتفعيله. احتفظ بقاعدة البيانات القديمة والإعدادات السابقة مُتاحة حتى تجتاز النسخة الجديدة جميع الفحوصات.
ابدأ تشغيل الخدمة باستخدام الأمر المناسب لبيئة النشر الخاصة بك. على مضيف يستخدم systemd، افحص حالة الخدمة وسجلاتها الأخيرة. في الحاويات، افحص سلامة الحاوية وسجلاتها. يُعد تشغيل عملية ما مؤشرًا أوليًا، وليس دليلًا قاطعًا على قدرة المستخدمين على قراءة الغرف أو إرسال الرسائل أو استلام المرفقات.
بعد الاستعادة، تحقق من سجلات الأرشيف والخدمة، ثم تحقق من عمليات العميل الحقيقية قبل إعلان اكتمال عملية الاستعادة.
7. اختبار الوظائف التي يعتمد عليها المستخدمون
تأكد من بدء تشغيل Synapse بدون أخطاء في ترحيل قاعدة البيانات أو الأذونات أو اللغة أو الاتصال.
قم بتسجيل الدخول باستخدام حساب تجريبي واقرأ الغرف الموجودة؛ أرسل رسالة تجريبية إذا سمحت خطة الصيانة الخاصة بك بذلك.
تحقق من سلوك الاتحاد وخدمة التطبيق إذا كانت هذه الميزات جزءًا من عملية النشر الخاصة بك.
افتح مرفقًا أو صورة رمزية معروفة تم تحميلها محليًا لاختبار ما إذا كان مخزن الوسائط يتطابق مع قاعدة البيانات المستعادة.
تحقق من سجلات Synapse وسجلات PostgreSQL بحثًا عن أخطاء متكررة بعد بدء التشغيل، وليس فقط أول فحص صحي ناجح.
قد تنجح عملية الاستعادة تقنيًا حتى مع وجود ملفات وسائط مفقودة، أو إعدادات مرجعية، أو أدوار. إذا لاحظ المستخدمون وجود مرفقات مفقودة، فتحقق من مخزن الوسائط المُكوّن واستعد نسخة الوسائط المحلية المُطابقة. إذا تعذر على Synapse الاتصال، فقارن مالك قاعدة البيانات المُستعادة، وبيانات الاعتماد، والمضيف، واسم قاعدة البيانات، واللغة، وملف التكوين النشط.
إشارات الفشل الشائعة ومتى يجب تغيير الطريقة
إشارة
ما الذي يجب التحقق منه لاحقًا؟
pg_restoreالإبلاغ عن العلاقات القائمة أو أخطاء الملكية
تأكد من أن الوجهة فارغة وأن الأدوار المطلوبة موجودة. استعد إلى قاعدة بيانات جديدة؛ لا تستخدم --cleanهذه الطريقة كاختصار لقاعدة بيانات تحتاج إلى الاحتفاظ بمحتوياتها.
يُنهي أمر التفريغ العملية برمز خطأ غير صفري أو ينتج ملفًا غير قابل للقراءة
تحقق من توافق العميل/الخادم، والصلاحيات، ومساحة القرص، وأذونات الوجهة، وسجلات PostgreSQL. أنشئ نسخة احتياطية جديدة وتحقق من صحتها قبل الاعتماد عليها.
يبدأ برنامج Synapse ولكن تم تضمين المفاتيح القديمة التي تُستخدم لمرة واحدة
أوقف برنامج Synapse واتبع إجراءات الاقتطاع الموثقة قبل السماح له بخدمة العملاء.
الغرف تعمل ولكن الملحقات المحلية مفقودة
قم باستعادة مخزن الوسائط المحلي المطابق والتكوين؛ لا يحتوي ملف PostgreSQL على ملفات الوسائط التي تم تحميلها.
تجاوز وقت الاسترداد أو حجم قاعدة البيانات النطاق المقبول
قم بتقييم أساليب النسخ الاحتياطي الأخرى لـ PostgreSQL، مثل النسخ الاحتياطية الأساسية والاستعادة إلى نقطة زمنية محددة باستخدام أرشفة WAL، مقابل أهداف نقطة الاستعادة ووقت الاستعادة.
تُعدّ النسخ الاحتياطية المنطقية سهلة النقل ومباشرة للعديد من عمليات النشر الصغيرة والمتوسطة، ولكن قد يستغرق استعادتها وقتًا مع نمو قاعدة البيانات. بالنسبة للخدمات الكبيرة أو عالية التوفر، يُرجى مراجعة وثائق النسخ الاحتياطي الحالية لـ PostgreSQL والتخطيط لنسخة احتياطية مادية مُختبرة أو تصميم استعادة إلى نقطة زمنية محددة. احتفظ بنسخة احتياطية منطقية مستقلة إذا كانت تخدم غرضًا منفصلاً يتعلق بسهولة النقل أو التدقيق. لا تحمي أي من الطريقتين الملفات المخزنة خارج PostgreSQL ما لم يتم نسخها احتياطيًا بشكل منفصل.
قم بمقارنة المجموع الاختباري بعد نسخ الأرشيف من مضيف Synapse لاكتشاف تغييرات النقل أو التخزين.
قائمة التحقق من التعافي
يمكن قراءة ملف التفريغ باستخدام برنامج معين، pg_restore --listويتطابق مجموع التحقق الخاص به مع النسخة الموجودة خارج المضيف.
تم إجراء عملية الاستعادة في قاعدة بيانات جديدة فارغة مع الترميز واللغة والمالك والأدوار المتوقعة.
تم استبعاد الصفوف ذات المفاتيح لمرة واحدة، أو تم اقتطاع الجدول قبل إعادة تشغيل Synapse.
تمت استعادة ملفات التكوين ومفتاح التوقيع والوسائط المحلية المطلوبة من نسخ احتياطية متوافقة.
سجلات Synapse نظيفة بما يكفي للخدمة، وتجتاز عمليات التحقق على مستوى العميل للغرف والوسائط.
أكدت عملية استعادة النظام صحة خطوات الاستعادة الموثقة وقامت بقياس وقت الاستعادة الفعلي.
تمت مراجعة الوثائق بتاريخ 6 أكتوبر 2026. تختلف أسماء الأوامر وإدارة الخدمات باختلاف نظام التشغيل، وصورة الحاوية، وإصدار PostgreSQL، ونشر Synapse. يُرجى التأكد من صحة التعليمات بالرجوع إلى الوثائق الخاصة بالإصدارات وطريقة التغليف التي تستخدمها.