টেস্ট রিস্টোর: আগেই ব্যাকআপ যাচাই করুন
কীভাবে ট্রায়াল রিস্টোর করবেন, ফলাফল হিসেবে কী লিখে রাখবেন, এবং কোন সাধারণ চমক শুধু ড্রিলেই ধরা পড়ে, আসল বিপর্যয়ে নয়।
আপডেট: ২৩ আগস্ট, ২০২৬
যে ব্যাকআপ থেকে আপনি কখনো রিস্টোর করেননি, সেটি ব্যাকআপ নয় — এটি একটি আশা। প্রতি তিন মাসে একবার একটি প্র্যাকটিস রিস্টোর এক ঘণ্টা সময় নেয় এবং আশাকে যাচাই করা সত্যে পরিণত করে।
কী কী যাচাই করবেন
কোনো দুর্ঘটনার আগে তিনটি প্রশ্নের উত্তর আপনার জানা থাকা দরকার:
- সম্পূর্ণতা। ব্যাকআপে চালু করার জন্য প্রয়োজনীয় সবকিছু আছে কি: ডেটা, সেটিংস, কী, সার্টিফিকেট, শিডিউল।
- পাঠযোগ্যতা। আর্কাইভ খোলে কি, ডেটাবেস ডাম্প কোনো ত্রুটি ছাড়াই রিস্টোর হয় কি।
- সময়। একটি সম্পূর্ণ রিস্টোর কত ঘণ্টা নেবে। এই সংখ্যাটি আপনাকে আগেই জানতে হবে, চাপের মুখে জানতে হলে চলবে না।
ড্রিল কীভাবে চালাবেন
সবচেয়ে সৎ উপায় হলো প্রোডাকশন মেশিনে নয়, আলাদা একটি মেশিনে করা। এক মাসের জন্য একটি VDS-1 নিন, সেখানে শূন্য থেকে রিস্টোর করুন এবং সময় মাপুন।
export RESTIC_REPOSITORY="sftp:backup@backup.example.com:/srv/restic"
export RESTIC_PASSWORD_FILE=/root/.restic-pass
restic snapshots
restic restore latest --target /restore
ls -la /restore
ডেটাবেস রিস্টোর করুন:
docker compose up -d db
gunzip -c /restore/var/backups/db.sql.gz | docker compose exec -T db psql -U postgres app
docker compose exec -T db psql -U postgres app -c "select count(*) from users;"
অ্যাপ্লিকেশন চালু করুন এবং ব্রাউজারে খুলুন — এটিই শেষ ধাপ। পেজ না খোলা পর্যন্ত রিস্টোর হয়নি।
হালকা একটি উপায়, যা অবশ্যই কাজে আসে: একই মেশিনে আলাদা একটি কন্টেইনারে শুধু ডেটাবেস রিস্টোর করুন এবং ডেটা আছে ও নতুন কি না তা নিশ্চিত করুন।
শুধু আনপ্যাকিং সফল হয়েছে কি না তা নয়, ডেটার তারিখও যাচাই করুন। যে ব্যাকআপ নির্ভরযোগ্যভাবে তৈরি হয় কিন্তু এক মাস আগে থেকে প্রয়োজনীয় ডিরেক্টরিটি আর অন্তর্ভুক্ত করছে না, স্ন্যাপশট তালিকায় সেটি সম্পূর্ণ স্বাভাবিক দেখায়। টেবিলের রেকর্ড সংখ্যা এবং সর্বশেষ ফাইলগুলোর টাইমস্ট্যাম্প মিলিয়ে দেখুন।
সাধারণত যা ধরা পড়ে
.envফাইলটি ভুলে যাওয়া হয়েছে। ডেটা আছে, কিন্তু তার পাসওয়ার্ড নেই।- সার্টিফিকেট ভুলে যাওয়া হয়েছে। সাইট চালু হয় কিন্তু HTTPS-এ সাড়া দেয় না।
- শিডিউল ভুলে যাওয়া হয়েছে। সবকিছু কাজ করে, কিন্তু ব্যাকআপ আর তৈরি হয় না — আর আপনি তা জানতে পারেন এক মাস পরে।
- স্টার্টআপ ক্রম লেখা নেই। অ্যাপ্লিকেশন ডেটাবেসের আগে চালু হয় এবং ক্র্যাশ করে।
- রিপোজিটরির পাসওয়ার্ড ছিল শুধু হারানো মেশিনে। ব্যাকআপ আছে, কিন্তু সেগুলোতে প্রবেশাধিকার নেই।
- রিস্টোর দশ ঘণ্টা নেয়, দুই নয়। রিসিভারের ব্যান্ডউইথ বা ডিস্ক শেলফ, দেখুন ডিস্কের গতি।
ক্রমটি লিখে রাখুন
ড্রিলের ভিত্তিতে একটি সংক্ষিপ্ত নির্দেশিকা লিখুন এবং মেশিনের বাইরে রাখুন:
- একই বা বড় টিয়ারের একটি মেশিন অর্ডার করুন — প্রভিশনিং প্রায় এক মিনিট নেয়।
- Docker ইনস্টল করুন এবং ব্যাকআপ থেকে
/opt/myappরিস্টোর করুন। - ডেটাবেস ডাম্প রিস্টোর করুন, রেকর্ড সংখ্যা যাচাই করুন।
/etc/nginxএবং সার্টিফিকেট রিস্টোর করুন, ওয়েব সার্ভার চালু করুন।- ডোমেইনটি নতুন ঠিকানায় পয়েন্ট করুন।
crontab.txtথেকে শিডিউল রিস্টোর করুন।- যাচাই করুন: সাইট খোলে, লগইন কাজ করে, ব্যাকআপ আবার তৈরি হচ্ছে।
৫ নম্বরটি সবচেয়ে কম গুরুত্ব দেওয়া হয়। DNS রেকর্ড তাৎক্ষণিক আপডেট হয় না, আর আপনি যদি মাইগ্রেশনের কথা ভাবেন, তবে আগেই রেকর্ডের TTL ৩০০ সেকেন্ডে নামিয়ে রাখুন।
কত ঘন ঘন
প্রোডাকশন সার্ভিসের জন্য প্রতি তিন মাসে একবার, বাকি সবকিছুর জন্য প্রতি ছয় মাসে একবার। এর সঙ্গে যেকোনো বড় পরিবর্তনের পরপরই: নতুন ডেটাবেস, নতুন সার্ভিস, ডিরেক্টরি সরানো। ড্রিলটি ক্যালেন্ডারে রাখুন, নইলে এটি কখনোই হবে না।
ব্যাকআপে কী থাকা উচিত — ঠিক কী ব্যাকআপ করবেন। কোথায় রাখবেন — অফসাইট ব্যাকআপ। যদি দুর্ঘটনা ইতিমধ্যে ঘটে থাকে — ডেটা হারিয়ে গেছে।