Kotchasan PHP Framework

การสำรองข้อมูลตารางในฐานข้อมูล MySQL ด้วยการตั้งชื่อโฟลเดอร์ตามวันที่ผ่าน Cron

การสำรองข้อมูลทุกตารางในฐานข้อมูล MySQL เป็นไฟล์ SQL แต่ละไฟล์ สามารถทำได้โดยใช้คำสั่ง mysqldump ร่วมกับการเขียนสคริปต์ใน shell เพื่อทำการสำรองข้อมูลแต่ละตารางแยกเป็นไฟล์ โดยมีตัวอย่างสคริปต์ดังนี้

#!/bin/bash

# ข้อมูลการเชื่อมต่อฐานข้อมูล
DB_USER="username"
DB_PASS="password"
DB_NAME="database_name"
BASE_BACKUP_DIR="/path/to/backup/directory"

# กำหนดวันที่ในรูปแบบ YYYY-MM-DD
DATE=$(date +"%Y-%m-%d")

# สร้างไดเรกทอรีใหม่ตามวันที่
BACKUP_DIR="$BASE_BACKUP_DIR/$DATE"
mkdir -p "$BACKUP_DIR"

# ดึงรายชื่อตารางจากฐานข้อมูล
TABLES=$(mysql -u $DB_USER -p$DB_PASS -e "SHOW TABLES IN $DB_NAME;" | tail -n +2)

# สำรองข้อมูลแต่ละตารางแยกเป็นไฟล์ SQL
for TABLE in $TABLES; do
    FILE_NAME="$BACKUP_DIR/$TABLE.sql"
    echo "Backing up $TABLE to $FILE_NAME"
    mysqldump -u $DB_USER -p$DB_PASS $DB_NAME $TABLE > $FILE_NAME
done

echo "Backup completed."

การตั้งค่าข้อมูลการเชื่อมต่อฐานข้อมูล

  • DB_USER ชื่อผู้ใช้งานฐานข้อมูล
  • DB_PASS รหัสผ่านของผู้ใช้งานฐานข้อมูล
  • DB_NAME ชื่อฐานข้อมูลที่ต้องการสำรองข้อมูล
  • BACKUP_DIR ไดเรกทอรีที่ต้องการเก็บไฟล์สำรองข้อมูล

การใช้งาน

  1. สร้างไฟล์สคริปต์ (เช่น backup_tables.sh) และวางโค้ดข้างต้นในไฟล์นั้น
  2. แก้ไขข้อมูลการเชื่อมต่อฐานข้อมูลให้ตรงกับของคุณ
  3. ทำให้ไฟล์สคริปต์สามารถรันได้ด้วยคำสั่ง chmod +x backup_tables.sh
  4. รันสคริปต์ด้วยคำสั่ง ./backup_tables.sh
  5. หรือใช้ cron เพื่อสำรองข้อมูลโดยอัตโนมัติในทุกๆวัน

การตั้งค่า Cron

เพิ่ม entry ใน cron table เพื่อรันสคริปต์ตอนเที่ยงคืนของทุกวัน โดยเปิด cron table ด้วยคำสั่ง

crontab -e

แล้วเพิ่มบรรทัดดังนี้

0 0 * * * /path/to/backup_tables.sh

สคริปต์นี้จะทำการสำรองข้อมูลทุกตารางในฐานข้อมูลที่ระบุไปยังไดเรกทอรีที่มีชื่อเป็นวันที่ปัจจุบันในรูปแบบไฟล์ SQL แยกแต่ละตาราง โดยมีการใช้ Cron เพื่อเรียกให้สคริปต์สามารถสำรองฐานข้อมูลทั้งหมดตอนเที่ยงคืนของทุกวันโดยอัตโนมัติ