การสำรองข้อมูลตารางในฐานข้อมูล 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
ไดเรกทอรีที่ต้องการเก็บไฟล์สำรองข้อมูล
การใช้งาน
- สร้างไฟล์สคริปต์ (เช่น
backup_tables.sh
) และวางโค้ดข้างต้นในไฟล์นั้น - แก้ไขข้อมูลการเชื่อมต่อฐานข้อมูลให้ตรงกับของคุณ
- ทำให้ไฟล์สคริปต์สามารถรันได้ด้วยคำสั่ง
chmod +x backup_tables.sh
- รันสคริปต์ด้วยคำสั่ง
./backup_tables.sh
- หรือใช้ cron เพื่อสำรองข้อมูลโดยอัตโนมัติในทุกๆวัน
การตั้งค่า Cron
เพิ่ม entry ใน cron table เพื่อรันสคริปต์ตอนเที่ยงคืนของทุกวัน โดยเปิด cron table ด้วยคำสั่ง
crontab -e
แล้วเพิ่มบรรทัดดังนี้
0 0 * * * /path/to/backup_tables.sh
สคริปต์นี้จะทำการสำรองข้อมูลทุกตารางในฐานข้อมูลที่ระบุไปยังไดเรกทอรีที่มีชื่อเป็นวันที่ปัจจุบันในรูปแบบไฟล์ SQL แยกแต่ละตาราง โดยมีการใช้ Cron เพื่อเรียกให้สคริปต์สามารถสำรองฐานข้อมูลทั้งหมดตอนเที่ยงคืนของทุกวันโดยอัตโนมัติ