সংক্ষিপ্ত বিবরণ
এই ডকুমেন্টেশনটি Hostinger VPS-এ PostgreSQL ডাটাবেস ডিপ্লয় এবং স্বয়ংক্রিয় ব্যাকআপ সেটআপের নির্দেশনা প্রদান করে। এটি naturalsefa এবং tariqul ডাটাবেসের জন্য প্রতি ঘণ্টায় ব্যাকআপ কনফিগার করে, সর্বোচ্চ ৫টি ব্যাকআপ রেখে পুরোনো ব্যাকআপ মুছে ফেলে।
প্রয়োজনীয়তা
- Hostinger VPS: Ubuntu 22.04 বা তার উপরের ভার্সন।
- টুলস: SSH ক্লায়েন্ট, টেক্সট এডিটর।
-
প্রি-ইনস্টলড সফটওয়্যার:
PostgreSQL
-
Environment Variables:
PostgreSQL username
এবংpassword
।
যদি PostgreSQL ব্যাকআপ ফাইল AWS S3-এ স্থানান্তর করতে চান
- একটি AWS অ্যাকাউন্ট এবং একটি S3 বাকেট তৈরি করা।
- AWS IAM ইউজার যার Access Key ID এবং Secret Access Key আছে এবং S3 বাকেটে লেখার অনুমতি আছে।
- Hostinger VPS-এ AWS CLI ইনস্টল করা।
ধাপসমূহ
ধাপ ১: PostgreSQL ডিপ্লয়
- PostgreSQL ইনস্টল ও সার্ভিস চালু করুন:
sudo apt install postgresql postgresql-contrib -y
sudo systemctl start postgresql
sudo systemctl enable postgresql
ডাটাবেস এবং ইউজার তৈরি:
PostgreSQL শেলে প্রবেশ:
sudo -u postgres psql
- Detabase এবং User তৈরি করুন :
CREATE DATABASE naturalsefa;
CREATE USER naturalsefa_user WITH PASSWORD 'your_secure_password';
ALTER ROLE naturalsefa_user SET client_encoding TO 'utf8';
ALTER ROLE naturalsefa_user SET default_transaction_isolation TO 'read committed';
ALTER ROLE naturalsefa_user SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE naturalsefa TO naturalsefa_user;
- PostgreSQL থেকে বেরিয়ে আসুন:
\q
- PostgreSQL কানেকশন URL তৈরি করুন:
- আপনার ডাটাবেস URL হবে:
postgresql://naturalsefa_user:your_secure_password@localhost:5432/naturalsefa
এই URL পরে
.env
ফাইলে ব্যবহার হবে।ফায়ারওয়ালে PostgreSQL পোর্ট (5432) ব্লক করুন:
সিকিউরিটির জন্য PostgreSQL শুধু localhost থেকে অ্যাক্সেসযোগ্য হওয়া উচিত। নিশ্চিত করুন
/etc/postgresql/*/main/postgresql.conf
-এlisten_addresses = 'localhost'
সেট আছে।ufw Install করুন যদি না থাকে।
sudo apt install -y ufw
- ফায়ারওয়ালে HTTP (80) এবং HTTPS (443) পোর্ট ওপেন করুন:
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 22
sudo ufw deny 5432
sudo ufw enable
- PostgreSQL রিস্টার্ট:
sudo systemctl restart postgresql
ধাপ ২: PostgreSQL ব্যাকআপ সেটআপ
- ব্যাকআপ ডিরেক্টরি:
mkdir -p ~/backups/postgresql
- ব্যাকআপ স্ক্রিপ্ট:
nano ~/backups/postgresql_backup_naturalsefa.sh
#!/bin/bash
BACKUP_DIR=~/backups/postgresql
DB_NAME=naturalsefa
DB_USER=naturalsefa_user
TIMESTAMP=$(date +%F-%H-%M-%S)
BACKUP_NAME="backup-$DB_NAME-$TIMESTAMP.sql.gz"
# Create PostgreSQL backup
PGPASSWORD=your_secure_password pg_dump -U $DB_USER $DB_NAME | gzip > $BACKUP_DIR/$BACKUP_NAME
# Delete old backups from local directory (keep a maximum of 5)
ls -t $BACKUP_DIR/backup-$DB_NAME-*.sql.gz | tail -n +6 | xargs -I {} rm {}
যদি AWS S3 Stroge ব্যবহার করতে চান
#!/bin/bash
BACKUP_DIR=~/backups/postgresql
DB_NAME=naturalsefa
DB_USER=naturalsefa_user
TIMESTAMP=$(date +%F-%H-%M-%S)
BACKUP_NAME="backup-$DB_NAME-$TIMESTAMP.sql.gz"
S3_BUCKET="s3://naturalsefa-postgresql-backups"
# Create PostgreSQL backup
PGPASSWORD=your_secure_password pg_dump -U $DB_USER $DB_NAME | gzip > $BACKUP_DIR/$BACKUP_NAME
# Backup upload to S3
aws s3 cp $BACKUP_DIR/$BACKUP_NAME $S3_BUCKET/$BACKUP_NAME
# Delete old backups from local directory (keep a maximum of 5)
ls -t $BACKUP_DIR/backup-$DB_NAME-*.sql.gz | tail -n +6 | xargs -I {} rm {}
# Delete old backups from S3 (optional, if you want to keep a limited number of backups)
aws s3 ls $S3_BUCKET/ | awk '{print $4}' | grep "backup-$DB_NAME" | sort -r | tail -n +6 | xargs -I {} aws s3 rm $S3_BUCKET/{}
- স্ক্রিপ্টটি সেভ করুন এবং এক্সিকিউটেবল করুন
chmod +x ~/backups/postgresql_backup_naturalsefa.sh
- Cron Job:
crontab -e
- প্রতি ঘণ্টায়:
0 * * * * ~/backups/postgresql_backup_naturalsefa.sh
ধাপ ৩: টেস্টিং
- PostgreSQL স্ট্যাটাস:
sudo systemctl status postgresql
- ব্যাকআপ চেক:
ls ~/backups/postgresql
সমস্যা সমাধান
- PostgreSQL ত্রুটি:
sudo systemctl status postgresql
sudo tail -f /var/log/postgresql/postgresql-*-main.log
- ব্যাকআপ ত্রুটি:
~/backups/postgresql_backup_naturalsefa.sh
- S3 আপলোড ব্যর্থ
aws s3 cp ~/backups/postgresql/test_backup.sql.gz s3://your-bucket-name/
রেফারেন্স
পরিশিষ্ট
- তারিখ: ৮ জুলাই, ২০২৫
- লেখক: Tariqul Islam
- যোগাযোগ: প্রশ্ন থাকলে Hostinger সাপোর্ট বা ডেভেলপারের সাথে যোগাযোগ করুন।
Top comments (0)