บทนำ
ข้อมูลในฐานข้อมูลเป็นสิ่งสำคัญที่สุดของธุรกิจใดๆ การสูญหาย์ข้อมูล อาจทำให้เสียหายอย่างมหาศาล วิธีที่ดีที่สุดในการป้องกันคือการสำรองข้อมูลแบบอัตโนมัติ บทความนี้จะสอนวิธีใช้ 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 หรือที่เก็บอื่นจะช่วยให้ข้อมูลของคุณปลอดภัยเสมอ
