
ที่มาภาพ: Unknown Source
วิธีตั้งค่าและใช้งาน Percona XtraBackup สำรองข้อมูล MySQL แบบอัตโนมัติบน Linux อย่างปลอดภัย
⚡ สรุป 30 วิ
**บทความนี้จะสอนวิธีตั้งค่าและใช้งาน Percona XtraBackup เพื่อสำรองข้อมูล MySQL แบบอัตโนมัติบน Linux อย่างปลอดภัย**
บทความนี้จะสอนวิธีตั้งค่าและใช้งาน Percona XtraBackup เพื่อสำรองข้อมูล MySQL แบบอัตโนมัติบน Linux อย่างปลอดภัย คุณจะได้เรียนรู้ขั้นตอนการติดตั้ง การกำหนดค่าพื้นฐาน การสร้างสคริปต์สำรอง การตั้งเวลาให้ทำงานด้วย `cron` รวมถึงวิธีกู้คืนและข้อควรระวังด้านความปลอดภัย
Overview — Overview
Percona XtraBackup เป็นเครื่องมือสำรองข้อมูลแบบ hot‑backup ที่ไม่ต้องหยุดบริการ MySQL ทำให้ระบบยังคงทำงานต่อได้อย่างต่อเนื่อง การตั้งค่าให้อัตโนมัติด้วย `cron` จะช่วยลดภาระการจัดการและเพิ่มความสม่ำเสมอของการสำรอง
- รองรับ InnoDB และ XtraDB
- สร้าง backup แบบ incremental หรือ full ได้ตามต้องการ
- ผลลัพธ์เป็นไฟล์ที่สามารถนำไปกู้คืนได้ทันที
**Tip: ควรทดสอบการสำรองและการกู้คืนบนสภาพแวดล้อม staging ก่อนนำไปใช้ใน production
เตรียมสภาพแวดล้อม — Prerequisites
ก่อนเริ่มใช้งานต้องตรวจสอบว่าระบบของคุณพร้อมสำหรับ Percona XtraBackup หรือไม่
- ระบบปฏิบัติการ: Ubuntu 20.04+/CentOS 7+
- MySQL เวอร์ชัน 5.6‑8.0 (รองรับ InnoDB)
- มี root หรือผู้ใช้ sudo ที่มีสิทธิ์จัดการไฟล์และบริการ
- พื้นที่ดิสก์ว่างอย่างน้อยเท่ากับขนาดข้อมูล MySQL
ติดตั้ง Percona XtraBackup — Installation
การติดตั้งทำได้ง่ายผ่าน repository ของ Percona
- เพิ่ม repository ของ Percona ลงในระบบ (`apt-key adv` หรือ `yum-config-manager`)
- เรียกใช้คำสั่ง `apt-get update && apt-get install percona-xtrabackup-80` (Ubuntu) หรือ `yum install percona-xtrabackup-80` (CentOS)
- ตรวจสอบเวอร์ชันด้วย `xtrabackup --version` เพื่อยืนยันการติดตั้งสำเร็จ
ตั้งค่า Backup Directory และสิทธิ์ — Setup Directories
กำหนดโฟลเดอร์ที่ใช้เก็บ backup ให้แยกจากไฟล์ระบบหลักและตั้งค่าการเข้าถึงอย่างเหมาะสม
- สร้างโฟลเดอร์ `/var/backups/mysql`
- ตั้งค่าเจ้าของเป็นผู้ใช้ `mysql` (`chown -R mysql:mysql /var/backups/mysql`)
- กำหนดสิทธิ์อ่าน‑เขียนให้จำกัด (`chmod 750 /var/backups/mysql`)
สร้างสคริปต์สำรองอัตโนมัติ — Backup Script
สคริปต์จะทำหน้าที่เรียก `xtrabackup` เพื่อสร้าง backup แบบเต็มหรือ incremental
```bash #!/bin/bash BACKUP_DIR="/var/backups/mysql" TIMESTAMP=$(date +"%Y%m%d_%H%M") FULL_BACKUP="${BACKUP_DIR}/full_${TIMESTAMP}" INCR_BACKUP="${BACKUP_DIR}/inc_${TIMESTAMP}" if [ "$(date +%u)" -eq 7 ]; then xtrabackup --backup --target-dir=${FULL_BACKUP} \ --user=root --password=YourRootPass else LATEST_FULL=$(ls -dt ${BACKUP_DIR}/full_* | head -1) xtrabackup --backup --target-dir=${INCR_BACKUP} \ --incremental-basedir=${LATEST_FULL} \ --user=root --password=YourRootPass fi find ${BACKUP_DIR} -type d -mtime +7 -exec rm -rf {} \; ```
- บันทึกไฟล์เป็น `/usr/local/bin/mysql_backup.sh`
- ตั้งค่าให้ทำงานได้ (`chmod +x /usr/local/bin/mysql_backup.sh`)
กำหนดเวลาให้ทำงานด้วย Cron — Cron Job
ใช้ `cron` เพื่อเรียกสคริปต์สำรองข้อมูลทุกชั่วโมงหรือตามที่ต้องการ
```cron 0 root /usr/local/bin/mysql_backup.sh >> /var/log/mysql_backup.log 2>&1 ```
- บรรทัดนี้จะทำงานตอนเริ่มต้นของแต่ละชั่วโมง
- ผลลัพธ์และข้อผิดพลาดถูกบันทึกไว้ใน `/var/log/mysql_backup.log`
**Tip: ตรวจสอบไฟล์ log อย่างสม่ำเสมอเพื่อจับปัญหาที่อาจเกิดขึ้นก่อนที่ backup จะล้มเหลว
ตรวจสอบและบันทึกผลลัพธ์ — Verification & Logging
การยืนยันความสมบูรณ์ของ backup เป็นขั้นตอนสำคัญ
- ใช้ `xtrabackup --prepare --target-dir=PATH` เพื่อเตรียมไฟล์ก่อนกู้คืน
- เช็ค checksum ด้วย `sha256sum` ของไฟล์ที่สำรองและเปรียบเทียบกับต้นฉบับ
- ตั้งค่า logrotate สำหรับ `/var/log/mysql_backup.log` เพื่อลดขนาดไฟล์เก่า
วิธีการกู้คืนข้อมูลจาก Backup — Restore Procedure
ขั้นตอนการนำ backup กลับมาใช้งานมีดังนี้
- หยุดบริการ MySQL (`systemctl stop mysql`)
- ทำการเตรียมไฟล์สำรอง: `xtrabackup --prepare --target-dir=PATH_TO_BACKUP`
- ลบ data directory ปัจจุบันและคัดลอก backup กลับเข้าไป (`rsync -a PATH_TO_BACKUP/ /var/lib/mysql/`)
- ตั้งค่าเจ้าของและสิทธิ์ใหม่ (`chown -R mysql:mysql /var/lib/mysql`)
- เริ่มบริการ MySQL (`systemctl start mysql`)
คำแนะนำด้านความปลอดภัย — Security Tips
เพื่อให้การสำรองข้อมูลไม่เป็นจุดอ่อนของระบบ ควรปฏิบัติตามแนวทางต่อไปนี้
**Warning: อย่าเก็บพาสเวิร์ด MySQL ไว้ในสคริปต์โดยตรง หากต้องใช้ ให้จัดเก็บในไฟล์ที่มีสิทธิ์เข้าถึงจำกัด (`/etc/mysql/.my.cnf`)
- ใช้ encryption สำหรับ backup ด้วย `openssl` หรือระบบไฟล์ที่รองรับการเข้ารหัส
- จำกัดผู้ใช้ที่สามารถเรียก `xtrabackup` ได้เฉพาะบัญชี `mysql` หรือบัญชีที่สร้างขึ้นใหม่โดยกำหนดสิทธิ์ใน `/etc/sudoers`
- ปิด port MySQL ที่ไม่จำเป็นและเปิด firewall ให้อนุญาตการเชื่อมต่อจากเครื่องสำรองเท่านั้น
- ตรวจสอบและอัปเดต Percona XtraBackup อย่างสม่ำเสมอเพื่อรับแพทช์ความปลอดภัย
เปรียบเทียบเครื่องมือสำรองข้อมูล MySQL — Comparison Table
| คุณสมบัติ | Percona XtraBackup | mysqldump | MySQL Enterprise Backup |
|---|---|---|---|
| รองรับ hot‑backup | ใช่ | ไม่ (ต้องหยุด) | ใช่ |
| ทำงานกับ InnoDB/XtraDB | ใช่ | ใช่ | ใช่ |
| สามารถทำ incremental | ใช่ | ไม่ | ใช่ |
| ประสิทธิภาพ (เวลาสำรอง) | สูง | ต่ำ | สูง |
| ราคา | ฟรี (Open‑Source) | ฟรี | มีค่าใช้จ่าย |
Summary — Summary
การตั้งค่า Percona XtraBackup ให้ทำงานอัตโนมัติบน Linux ไม่ซับซ้อน เพียงแค่ติดตั้งเครื่องมือ กำหนดโฟลเดอร์สำรอง สร้างสคริปต์และกำหนดเวลาให้ทำงานผ่าน `cron` พร้อมตรวจสอบผลลัพธ์อย่างต่อเนื่อง
- เตรียมสภาพแวดล้อม ให้ตรงตามข้อกำหนด
- ติดตั้ง ผ่าน repository ของ Percona
- สร้าง backup directory ที่ปลอดภัยและมีสิทธิ์เข้าถึงเหมาะสม
- เขียนสคริปต์ ทำ full หรือ incremental ตามวันในสัปดาห์
- ตั้งค่า cron เพื่อทำงานอัตโนมัติทุกชั่วโมงหรือที่ต้องการ
- ตรวจสอบ backup ด้วย `prepare` และ checksum ก่อนนำไปกู้คืน
- ปฏิบัติตาม security tips เช่น การเข้ารหัสและการจำกัดสิทธิ์
ด้วยขั้นตอนเหล่านี้ คุณจะมีระบบสำรอง MySQL ที่เชื่อถือได้ ปลอดภัย และพร้อมใช้งานตลอดเวลา.
แชร์บทความนี้:
ชอบบทความแบบนี้?
สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม
แหล่งข่าวต้นฉบับ
- ชื่อต้นฉบับ
- วิธีตั้งค่าและใช้งาน Percona XtraBackup สำรองข้อมูล MySQL แบบอัตโนมัติบน Linux อย่างปลอดภัย
- ผู้เขียน
- กองบรรณาธิการ Thai Tech News
- แหล่ง
- บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
- วันที่เผยแพร่
- 23 กรกฎาคม 2569 เวลา 10:51



