النسخ الاحتياطي واستعادة العقد
الاستعداد لفشل النظام الكارثي
تعد استراتيجيات التعافي من الكوارث في سلاسل الكتل أكثر مرونة من تلك الخاصة بقواعد البيانات العادية، لأن محتوى السلسلة يتم نسخه تلقائيا إلى (ويمكن استرداده من) العقد الأخرى في الشبكة.
ومع ذلك، هناك سببان وجيهان لعمل نسخة احتياطية من العقد الفردية.
السبب الأول: إذا لم يتم تخزين المفاتيح الخاصة لعناوين العقدة عمدا خارج محفظتها، فمن الضروري عمل نسخة احتياطية من المحفظة ومفاتيحها. ففي حال تم فقدان المفتاح الخاص لأحد العناوين بشكل دائم، فلن يكون بالإمكان إجراء المزيد من المعاملات نيابة عن هذا العنوان.
السبب الثاني: إذا كانت العقدة بحاجة إلى الإصلاح والعودة بسرعة من فشل النظام، دون التأخير الناجم عن استرداد محتويات بلوكتشين وإعادة فهرستها، فقد يكون من المنطقي إجراء نسخ احتياطي لحالة العقدة بأكملها بدلا من ذلك.
وهنا سنوضح طريقتان لعمل نسخة احتياطية، بالإضافة إلى إرشادات حول كيفية استعادة كل نوع من أنواع النسخ الاحتياطي.
بالإضافة لذلك، يمكن أن يكون التجميع بمثابة بديل للنسخ الاحتياطية، وكحل بديل لحقيقة أنه يجب إيقاف العقد عند عمل نسخة احتياطية من حالتها الكاملة.
إجراء نسخة احتياطية للمحفظة
يتم تخزين محفظة العقدة، والتي تتضمن كلا من المفاتيح الخاصة وعناوين المراقبة فقط، في الملف الموجود في معلومات المحفظة wallet.dat في دليل بلوكتشين الخاص بتلك العقدة.
وبشكل افتراضي، ستجد هذا الدليل موجودا في الإجراء ~/.multichain/[chain-name]/على نظامي لينوكس Linux وماك، أما على نظام ويندوز فستجده في الإجراء%APPDATA%\MultiChain\[chain-name]\.
وبشكل عام،يمكن عمل نسخة احتياطية للملف wallet.dat مباشرة. ومع ذلك، إذا كانت العقدة قيد التشغيل، فمن الأفضل استخدام الأمر backupwallet من الواجهة البرمجية للتطبيقات (المعروفة بـ API) لإنشاء نسخة من الملف ضمن قفل خاص.
ومن المهم ملاحظة أنه أثناء عمل نسخة احتياطية لمحفظة العقدة، قد يكون من المفيد أيضا عمل نسخة احتياطية لشيئين آخرين هما:
• قائمة الأصول والتدفقات التي اشتركت فيها تلك العقدة. باستخدام الأمر listassets و liststreams من API، مع الانتباه إلى أن يكون حقل الاسم name في subscribed يحمل القيمة true.
• اسم المستخدم وكلمة المرور للوصول إلى واجهة برمجة تطبيقات العقدة بالإضافة إلى أي معلمات وقت تشغيل ثابتة أخرى. ويتم تخزينها في الملف multichain.conf الموجود في دليل بلوكتشين.
استعادة نسخة احتياطية للمحفظة فقط
تتم عملية إعادة إنشاء عقدة من نسخة احتياطية للمحفظة فقط باتباع الخطوات التالية:
1. قم بالحصول على عنوان عقدة nodeaddress تابع لعقدة أخرى في السلسلة باستخدام الأمر getinfo.
2. على الخادم المراد استرداده، تأكد من أن دليل بلوكتشين لم يعد موجودا.
3. ابدأ الاتصال بالبلوكتشين بالطريقة المعتادة، وقم بتمرير عنوان العقدة الذي تم الحصول عليه مسبقا كمعلمة إلى multichaind.
4. إذا لم ينهي الأمر multichaind عند ظهور رسالة حول الحاجة إلى أمر الاتصال connect، فقم بإيقافها بعد بضع ثوان باستخدام الأمر multichain-cli [chain-name] stop. (يمكن أن يحدث هذا في بلوكتشين مع المعلمة anyone-can-connect=true).
5. استبدل الملف wallet.dat الموجود في دليل بلوكتشين الجديد الخاص بالعقدة بالإصدار الذي تم نسخه احتياطيا.
6. إذا تم الاحتفاظ بنسخة احتياطية من ملف العقدة multichain.conf، فقم باستعادة هذا الملف أيضا.
7. أعد تشغيل العقدة بالطريقة المعتادة: multichaind [chain-name] -daemon. في حالة أن العنوان الأول في المحفظة لم يعد لديه إذن الاتصال، استخدم معلمة المصافحة handshakelocal وقت التشغيل لتحديد العنوان الذي سيتم استخدامه للمصافحة.
8. راقب قيمة حقل الكتل blocks باستخدام الأمر getinfo لمعرفة متى يمكن للعقدة الالتحاق ببقية الشبكة. بالنسبة للسلاسل الكبيرة، قد يستغرق هذا وقتا طويلا.
9. إذا تم الاحتفاظ بسجل للأصول والتدفقات المشتركة، فأعد الاشتراك باستخدام الأمر subscribe دون إعادة المسح، على سبيل المثال subscribe ‘[“stream1″,”asset1”]’ false. ثم الأمر stop لإيقاف العقدة، أعد تشغيلها مع الخيار -rescan، وانتظر حتى تكتمل عملية إعادة المسح.
فور الانتهاء، يجب أن تكون عقدتك المستعادة محدثة مع البلوكتشين وجاهزة للاستخدام مرة أخرى.
النسخ الاحتياطي الكامل للحالة واستعادتها
كبديل للنسخ الاحتياطي واستعادة محفظة العقدة وبعض المعلومات الصغيرة الأخرى، من الممكن عمل نسخة احتياطية كاملة ومباشرة لجميع الملفات الموجودة في دليل البلوكتشين، على سبيل المثال النسخة الموجودة على لينوكس أو ماك ~/.multichain/[chain-name]/، أو %APPDATA%\MultiChain\[chain-name]\على ويندوز.
إن الاستعادة من نسخة احتياطية كاملة هي ببساطة مسألة إعادة هذه الملفات إلى المكان الصحيح، وإعادة تشغيل العقدة، والانتظار حتى تتمكن من اللحاق بأي كتل تم إنشاؤها بعد إجراء النسخ الاحتياطي.
وهناك ميزتان رئيسيتان لعمل نسخة احتياطية من الحالة الكاملة بدلا من النسخة الاحتياطية للمحفظة فقط:
• تعد عملية النسخ الاحتياطي والاسترداد أبسط بكثير، حيث تعتمد على نسخ دليل كامل من الملفات.
• يمكن استرداد العقدة العاملة على الفور دون الحاجة إلى استرداد وإعادة فهرسة بلوكتشين بالكامل.
ومع ذلك، فإن النسخ الاحتياطية الكاملة للحالة لها أيضا عيبان رئيسيان:
• يجب إيقاف العقدة قبل إجراء النسخ الاحتياطي، لضمان الاتساق في الملفات التي تم نسخها احتياطيا. حيث يمكن أن يساعد التجميع هنا – فبينما يتم إيقاف عقدة واحدة في المجموعة للنسخ الاحتياطي، يمكن لعقدة أخرى الاستمرار في خدمة التطبيق.
• سيكون إجمالي كمية البيانات التي تم نسخها احتياطيا أكبر بشكل كبير. ومع ذلك، تجدر الإشارة إلى أن تقنيات ملفات الضغط القياسية مثل gzip أو zip يمكن أن تقلل هذا الحجم بنسبة 50-75%، اعتمادا على نمط النشاط داخل السلسلة.