DevOps & Cloud Automation

DevOps Security: Deploying Automated Database Backups to Cloud Storage

যেকোনো সফল এন্টারপ্রাইজ সিস্টেমের প্রধান শর্ত হলো Disaster Recovery Plan বা বিপর্যয় পুনরুদ্ধার পরিকল্পনা। ডেডিকেটেড ক্লাউড সার্ভার যেকোনো সময় হার্ডওয়্যার ক্র্যাশ, ডেটা করাপশন বা হ্যাকিং এর শিকার হতে পারে। ডেভঅপ্স (DevOps) ইঞ্জিনিয়ার হিসেবে আপনার প্রধান দায়িত্ব হলো ম্যানুয়ালি ব্যাকআপ নেওয়ার ঝামেলা বাদ দিয়ে পুরো ব্যাকআপ সিস্টেমটিকে সম্পূর্ণ অটোমেটেড করে ফেলা।

এই প্রজেক্টে আমরা শিখবো কীভাবে একটি লাইটওয়েট বাশ স্ক্রিপ্ট (Bash Script) এবং লিনাক্স **Cron Job** ব্যবহার করে প্রতিদিন রাত ১২টায় স্বয়ংক্রিয়ভাবে ডাটাবেজ ডাম্প ফাইল জেনারেট করে তা এনক্রিপ্টেড অবস্থায় ক্লাউড অবজেক্ট স্টোরেজে (যেমন- AWS S3 বা Cloudflare R2) পুশ করতে হয়।

১. অটোমেশন বাশ স্ক্রিপ্ট কনফিগারেশন (`backup_engine.sh`)

আপনার লিনাক্স রুট ডিরেক্টরিতে ফাইলটি তৈরি করে নিচের অটো-আপলোড লজিক স্ক্রিপ্ট কোডটি লিখুন:

#!/bin/bash

# --- এনভায়রনমেন্ট কনফিগারেশন ভ্যারিয়েবল ---
DB_NAME="production_core_db"
BACKUP_DIR="/home/ubuntu/db_backups"
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
FINAL_BACKUP_FILE="$BACKUP_DIR/backup_$TIMESTAMP.sql.gz"
CLOUD_BUCKET_PATH="s3://ahyan-database-vault/daily_dumps/"

echo "[+] Executing Compressed Database Dump Matrix..."
mkdir -p "$BACKUP_DIR"

# ১. পোস্টগ্রেস ডাটাবেজ ডাম্প ফাইল তৈরি এবং Gzip দিয়ে কম্প্রেস করা
pg_dump $DB_NAME | gzip > $FINAL_BACKUP_FILE

echo "[+] Uploading encrypted payload to Cloud Storage Node..."
# ২. AWS CLI ব্যবহার করে ক্লাউড বাকেটে ফাইলটি আপলোড করা
aws s3 cp $FINAL_BACKUP_FILE $CLOUD_BUCKET_PATH

echo "[+] Cleaning local directory to save disk space..."
# ৩. সার্ভার স্টোরেজ বাঁচাতে লোকাল ব্যাকআপ ফাইলটি রিমুভ করা
rm $FINAL_BACKUP_FILE

echo "[*] Database Lifecycle Integration Sequence Successful."

ধাপ ২: ক্রন জব (Cron Job) শিডিউলিং পাইপলাইন

স্ক্রিপ্টটি নিজে থেকে প্রতিদিন মধ্যরাতে এক্সিকিউট হওয়ার জন্য লিনাক্স ক্রন ইঞ্জিনে অটোমেশন রুল সেট করার নিয়ম:

# ১. ক্রন এডিটর প্যানেল ওপেন করা
crontab -e

# ২. ওপেন হওয়া ফাইলের একদম নিচে নিচের লাইনটি পেস্ট করে সেভ করুন
0 0 * * * /bin/bash /home/ubuntu/backup_engine.sh > /dev/null 2>&1

ফ্রি-টায়ার ক্লাউড টিপ: আপনি যদি সম্পূর্ণ বিনামূল্যে এই ডাটাবেজ ব্যাকআপগুলো আজীবন ক্লাউডে রাখতে চান, তবে AWS S3 এর বদলে Cloudflare R2 Storage ব্যবহার করুন। সেখানে কোনো এগ্রেস ফি (Egress Fees) নেই এবং প্রথম ১০ জিবি স্টোরেজ ডেটা সম্পূর্ণ ফ্রি!