Skip to main content

backup-and-recovery

คุณสามารถเขียนเนื้อหาของไฟล์ .md เกี่ยวกับ Redis Backup and Recovery ในภาษาไทยได้ดังนี้:

# Redis Backup and Recovery

การสำรองข้อมูล (Backup) และการกู้คืนข้อมูล (Recovery) ใน Redis เป็นกระบวนการที่สำคัญในการรักษาความปลอดภัยและความสมบูรณ์ของข้อมูลใน Redis โดยการสำรองข้อมูลช่วยให้สามารถฟื้นฟูข้อมูลที่สูญหายหรือเสียหายได้ในกรณีที่เกิดปัญหากับเซิร์ฟเวอร์หรือข้อมูลใน Redis

## 1. การสำรองข้อมูลใน Redis

Redis รองรับการสำรองข้อมูลทั้งในรูปแบบ **RDB snapshots** และ **AOF (Append-Only File)** โดยการสำรองข้อมูลจะช่วยให้สามารถเก็บข้อมูลในรูปแบบไฟล์เพื่อใช้งานในอนาคต

### 1.1 RDB Snapshots

RDB (Redis Database) คือการสำรองข้อมูลในรูปแบบ snapshot ซึ่ง Redis จะทำการบันทึกข้อมูลทั้งหมดที่อยู่ใน Redis ลงในไฟล์ `.rdb` ในระยะเวลาที่กำหนด (ตามการตั้งค่าในไฟล์ `redis.conf`)

การตั้งค่าใน `redis.conf` สำหรับการสร้าง RDB snapshot:

```bash
save 900 1 # บันทึกข้อมูลทุกๆ 900 วินาที หากมีการเปลี่ยนแปลงข้อมูลอย่างน้อย 1 ครั้ง
save 300 10 # บันทึกข้อมูลทุกๆ 300 วินาที หากมีการเปลี่ยนแปลงข้อมูลอย่างน้อย 10 ครั้ง
save 60 10000 # บันทึกข้อมูลทุกๆ 60 วินาที หากมีการเปลี่ยนแปลงข้อมูลอย่างน้อย 10000 ครั้ง

เมื่อเกิดเหตุการณ์ที่ตรงกับการตั้งค่า Redis จะทำการสร้างไฟล์ .rdb ซึ่งสามารถนำไปใช้ในการกู้คืนข้อมูลได้

1.2 AOF (Append-Only File)​

AOF คือไฟล์ที่บันทึกทุกคำสั่งที่ส่งไปยัง Redis ในรูปแบบที่สามารถใช้งานในการกู้คืนข้อมูล โดยแต่ละคำสั่งจะถูกบันทึกลงในไฟล์ .aof ซึ่งทำให้สามารถฟื้นฟูข้อมูลที่สูญหายได้จากคำสั่งที่เกิดขึ้นในอดีต

การตั้งค่าใน redis.conf สำหรับการเปิดใช้งาน AOF:

appendonly yes  # เปิดใช้งาน AOF
appendfsync everysec # บันทึกคำสั่งทุกๆ 1 วินาที

ข้อดีของ AOF คือความสามารถในการบันทึกคำสั่งทั้งหมดที่ส่งไปยัง Redis แต่ข้อเสียคืออาจทำให้ไฟล์ .aof มีขนาดใหญ่ขึ้นหาก Redis ทำงานหนักในระยะยาว

1.3 การสำรองข้อมูลแบบ Manual​

นอกจากการตั้งค่าที่อัตโนมัติ Redis ยังรองรับการสำรองข้อมูลแบบ manual ด้วยคำสั่ง BGSAVE ซึ่งจะเริ่มกระบวนการสร้าง RDB snapshot ใน background:

BGSAVE

เมื่อใช้คำสั่งนี้ Redis จะสร้างไฟล์ .rdb โดยไม่หยุดการทำงานของ Redis

2. การกู้คืนข้อมูลใน Redis​

การกู้คืนข้อมูลใน Redis สามารถทำได้โดยการใช้ไฟล์สำรองข้อมูลที่ได้ทำการสร้างไว้ก่อนหน้านี้ ซึ่งสามารถใช้ไฟล์ .rdb หรือ .aof ในการกู้คืนข้อมูลได้

2.1 การกู้คืนจาก RDB Snapshot​

หากต้องการกู้คืนข้อมูลจาก RDB snapshot ให้คัดลอกไฟล์ .rdb ที่เก็บข้อมูลสำรองไปยังตำแหน่งที่ Redis ใช้ในการเก็บไฟล์ RDB (โดยปกติจะอยู่ที่ /var/lib/redis/ หรือที่กำหนดไว้ในไฟล์ redis.conf)

เมื่อ Redis รีสตาร์ทใหม่และพบไฟล์ .rdb มันจะโหลดข้อมูลจากไฟล์นี้และกู้คืนข้อมูลทั้งหมดที่ถูกบันทึกไว้ใน snapshot

2.2 การกู้คืนจาก AOF​

การกู้คืนจาก AOF จะเกิดขึ้นเมื่อ Redis รีสตาร์ทใหม่และพบไฟล์ .aof ซึ่ง Redis จะใช้ไฟล์นี้ในการทำ replay คำสั่งที่บันทึกไว้เพื่อฟื้นฟูข้อมูลที่ถูกบันทึกลงในฐานข้อมูล

หากต้องการกู้คืนจาก AOF ให้ทำการคัดลอกไฟล์ .aof ไปยังที่ตั้งที่ Redis ใช้ในการเก็บไฟล์ AOF (ตามที่กำหนดในไฟล์ redis.conf)

2.3 การกู้คืนโดยการโหลดทั้ง RDB และ AOF​

หากต้องการให้ Redis กู้คืนข้อมูลจากทั้ง RDB และ AOF สามารถใช้ทั้งสองไฟล์นี้ได้พร้อมกัน Redis จะใช้ RDB snapshot เพื่อโหลดข้อมูลจาก snapshot และจากนั้นจะทำการ replay คำสั่งจากไฟล์ AOF เพื่อให้ข้อมูลเป็นปัจจุบันที่สุด

Redis จะใช้ไฟล์ RDB หากมี และจะใช้ไฟล์ AOF ในกรณีที่ต้องการข้อมูลที่อัปเดตล่าสุด

3. การตั้งค่าการสำรองข้อมูลใน Redis​

การตั้งค่าการสำรองข้อมูลสามารถทำได้ในไฟล์ redis.conf โดยการตั้งค่าต่างๆ สำหรับ RDB และ AOF จะควบคุมวิธีการและความถี่ในการสำรองข้อมูล

ตัวอย่างการตั้งค่าใน redis.conf:

  • การตั้งค่า RDB: ใช้คำสั่ง save เพื่อตั้งค่าระยะเวลาการบันทึกข้อมูล
  • การตั้งค่า AOF: ใช้คำสั่ง appendonly และ appendfsync เพื่อกำหนดการบันทึกคำสั่ง

ตัวอย่างการตั้งค่า:

# RDB snapshot setting
save 900 1
save 300 10

# AOF setting
appendonly yes
appendfsync everysec

4. การบำรุงรักษาไฟล์สำรองข้อมูล​

เพื่อให้ Redis ทำงานได้อย่างมีประสิทธิภาพและไม่ใช้พื้นที่ดิสก์มากเกินไป คุณสามารถทำการบำรุงรักษาไฟล์สำรองข้อมูล (RDB หรือ AOF) โดยการทำการ "compact" หรือ "rewrite" ไฟล์ AOF ให้มีขนาดเล็กลง โดยใช้คำสั่ง BGREWRITEAOF:

BGREWRITEAOF

คำสั่งนี้จะทำการ rewrite ไฟล์ AOF ใหม่ โดยการรวมคำสั่งที่ซ้ำกันและลดขนาดไฟล์

5. สรุป​

การสำรองข้อมูลและการกู้คืนข้อมูลใน Redis เป็นขั้นตอนที่สำคัญในการรักษาความปลอดภัยของข้อมูล โดยการใช้ทั้ง RDB snapshot และ AOF จะช่วยให้ Redis สามารถกู้คืนข้อมูลได้ในกรณีที่เกิดข้อผิดพลาดหรือปัญหาที่ทำให้ข้อมูลสูญหาย การตั้งค่าการสำรองข้อมูลที่เหมาะสมจะช่วยให้ Redis ทำงานได้อย่างมีประสิทธิภาพและสามารถฟื้นฟูข้อมูลได้ทันทีเมื่อเกิดความเสียหาย


บันทึกเนื้อหานี้ลงในไฟล์ `.md` แล้วเปิดดูได้ใน Markdown viewer หรือโปรแกรมที่รองรับ Markdown!