Automate Database Backup และส่งไป Cloud Storage อัตโนมัติ

บทนำ

ข้อมูลในฐานข้อมูลเป็นสิ่งสำคัญที่สุดของธุรกิจใดๆ การสูญหาย์ข้อมูล อาจทำให้เสียหายอย่างมหาศาล วิธีที่ดีที่สุดในการป้องกันคือการสำรองข้อมูลแบบอัตโนมัติ บทความนี้จะสอนวิธีใช้ mysqldump หรือ pg_dump เพื่อสำรองข้อมูลโดยอัตโนมัติ และส่งไปยังที่เก็บข้อมูลบนคลาวด์ เช่น Amazon S3, Backblaze B2 หรือใช้ rclone ในการจัดการ

เตรียมความพร้อมก่อนเริ่มต้น

คุณต้องติดตั้ง mysqldump (สำหรับ MySQL/MariaDB) หรือ pg_dump (สำหรับ PostgreSQL) อยู่แล้ว และติดตั้ง rclone เพื่อให้สามารถส่งข้อมูลไปยังคลาวด์ได้ หากใช้ Cloud VPS จาก Dot Enterprise (https://de.co.th/cloud-vps) คุณสามารถเข้าถึง Full Control ของเซิร์ฟเวอร์เพื่อติดตั้ง Tool ต่างๆ ได้อย่างอิสระ

ติดตั้ง mysqldump และ rclone

ขั้นแรกให้ติดตั้ง mysqldump และ rclone:

sudo apt update
sudo apt install -y mysql-client-core-8.0
# หรือสำหรับ PostgreSQL
sudo apt install -y postgresql-client

จากนั้นติดตั้ง rclone:

curl https://rclone.org/install.sh | sudo bash

ตั้งค่า rclone สำหรับ S3 หรือ Backblaze B2

เพื่อให้ rclone สามารถส่งข้อมูลไปยังคลาวด์ได้ ให้ทำการตั้งค่า:

rclone config

เลือก “n” เพื่อสร้าง Remote ใหม่ และทำตามขั้นตอนในการตั้งค่า S3 หรือ Backblaze B2

สร้างสคริปต์ Backup สำหรับ MySQL

สร้างไฟล์ Bash Script สำหรับ Backup ฐานข้อมูล MySQL:

#!/bin/bash
DB_USER="your_db_user"
DB_PASSWORD="your_db_password"
DB_NAME="your_database"
BACKUP_DIR="/home/backup"
S3_BUCKET="s3:your-bucket/backups"
DATE=$(date +\%Y-\%m-\%d_\%H-\%M-\%S)

mkdir -p $BACKUP_DIR

# Dump Database
mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_DIR/$DB_NAME-$DATE.sql

# Compress
gzip $BACKUP_DIR/$DB_NAME-$DATE.sql

# Upload to S3
rclone copy $BACKUP_DIR/$ S3_BUCKET --include "*-$DATE.sql.gz"

# Clean local backup (optional)
rm $BACKUP_DIR/$DB_NAME-$DATE.sql.gz

สำหรับ PostgreSQL

หากใช้ PostgreSQL ให้สร้างสคริปต์เดียวกัน แต่ใช้ pg_dump แทน:

#!/bin/bash
DB_USER="your_db_user"
DB_NAME="your_database"
BACKUP_DIR="/home/backup"
BLACKBLAZE_BUCKET="b2:your-bucket/backups"
DATE=$(date +\%Y-\%m-\%d_\%H-\%M-\%S)

mkdir -p $BACKUP_DIR

# Dump Database
pg_dump -U $DB_USER $DB_NAME > $BACKUP_DIR/$DB_NAME-$DATE.sql

# Compress
gzip $BACKUP_DIR/$DB_NAME-$DATE.sql

# Upload to Backblaze B2
rclone copy $BACKUP_DIR/$ BLACKBLAZE_BUCKET --include "*-$DATE.sql.gz"

# Clean local backup
rm $BACKUP_DIR/$DB_NAME-$DATE.sql.gz

ตั้งค่า Cron Job สำหรับ Backup อัตโนมัติ

เพื่อให้การ Backup เกิดขึ้นทุกวัน ให้ตั้งค่า Cron Job:

sudo crontab -e

เพิ่มบรรทัดต่อไปนี้:

0 2 * * * /usr/local/bin/backup-database.sh >> /var/log/backup.log 2>&1

บรรทัดนี้จะรันสคริปต์ Backup ทุกวันเวลา 2 โมงเช้า และเก็บ Log ไว้ใน /var/log/backup.log

สรุป

การสำรองข้อมูลฐานข้อมูลแบบอัตโนมัติช่วยให้ข้อมูลปลอดภัยและไม่เสียหายจากอุบัติเหตุ เมื่อใช้ Cloud VPS จาก Dot Enterprise (https://de.co.th/cloud-vps) คุณสามารถตั้งค่า mysqldump, pg_dump และ rclone ได้อย่างเต็มที่ การสำรองข้อมูลไปยัง S3, Backblaze B2 หรือที่เก็บอื่นจะช่วยให้ข้อมูลของคุณปลอดภัยเสมอ