- 1. Archive Droplet หมายถึงอะไร
- 2. เลือกวิธีสำรองให้ตรงเป้าหมาย
- 3. Snapshot เก็บอะไร และไม่เก็บอะไร
- 4. ขั้นตอน Archive ผ่าน Control Panel
- 5. กู้คืนโดยสร้าง Droplet ใหม่จาก Snapshot
- 6. กู้คืนทับ Droplet เดิม
- 7. กู้คืน Volume หรือเฉพาะไฟล์
- 8. Checklist ยืนยันว่ากู้คืนได้จริง
- 9. ตัวอย่าง doctl สำหรับการสำรอง
- 10. ค่าใช้จ่ายและข้อจำกัด
- 11. แบบฝึกปฏิบัติ
- เอกสารอ้างอิง
#1. Archive Droplet หมายถึงอะไร
ในคู่มือนี้ Archive หมายถึงการเก็บสภาพระบบไว้ใน Snapshot เพื่อสร้างเครื่องกลับมาใช้ภายหลัง หากต้องการหยุดค่าเครื่อง ให้ลบ Droplet หลังจากสำรองและทดสอบกู้คืนสำเร็จแล้ว เป็นแนวทางปฏิบัติ ไม่ได้หมายถึงปุ่ม Archive หรือสถานะพักเครื่องที่ไม่คิดเงิน
Power Off ยังคิดค่า Droplet เพราะทรัพยากรยังถูกจัดสรรอยู่ การหยุดค่า Droplet ต้อง Destroy เครื่อง ส่วน Snapshot และทรัพยากรอื่นที่เก็บไว้ยังมีค่าใช้จ่ายตามบริการ [1][2]
ตัวอย่างการใช้งาน: หลังจบอบรม Docker หรือ Jenkins ให้เก็บระบบต้นแบบพร้อมข้อมูลตัวอย่าง จากนั้นสร้างเครื่องใหม่จาก Snapshot ในการอบรมรอบถัดไป ระหว่างที่ไม่มีเครื่องทำงานจะยังมีค่าจัดเก็บ Snapshot
#2. เลือกวิธีสำรองให้ตรงเป้าหมาย
| วิธี | เหมาะกับ | สิ่งที่ต้องเข้าใจ |
|---|---|---|
| Power Off | หยุดระบบชั่วคราว | ไม่ใช่ Backup และยังมีค่าเครื่อง |
| Droplet Snapshot | เก็บสภาพดิสก์ก่อนเปลี่ยนระบบหรือ Archive | สร้างตามต้องการ; ไม่รวม Volume ที่แนบ |
| Automated Backups | สำรองเป็นรอบสำหรับเครื่องที่ใช้งานต่อเนื่อง | มีแผน ความถี่ และอายุเก็บตามนโยบายที่เลือก |
| Volume Snapshot | สำรอง Block Storage | ต้องสร้างและกู้คืนแยกจาก Droplet |
| Application/Data Backup | สำรองฐานข้อมูล ไฟล์อัปโหลด หรือย้ายข้ามผู้ให้บริการ | ต้องเลือกเครื่องมือและทดสอบการนำกลับเข้าใช้งาน |
Snapshots และ Backups ช่วยคนละด้าน ควรมีสำเนาข้อมูลระดับแอปพลิเคชันร่วมด้วย โดยเฉพาะข้อมูลที่เปลี่ยนบ่อย เอกสาร Backups ปัจจุบันมีทั้งรูปแบบแผนและการกำหนด retention จึงควรอ่านนโยบายที่บัญชีเลือกใช้อยู่ ไม่ควรถือว่าทุกแผนเก็บข้อมูลเท่ากัน [3]
#3. Snapshot เก็บอะไร และไม่เก็บอะไร
Droplet Snapshot เก็บข้อมูลบนดิสก์ของเครื่อง เช่น OS โปรแกรม ไฟล์แอป และ configuration ที่อยู่บนดิสก์ ส่วนข้อมูลฐานข้อมูลจะใช้งานได้ถูกต้องหรือไม่ขึ้นอยู่กับความสอดคล้องของข้อมูลขณะถ่ายภาพ [4]
| รายการ | แนวทาง |
|---|---|
| ไฟล์บนดิสก์ Droplet | อยู่ใน Snapshot ณ เวลาที่สร้าง |
| ข้อมูลใน RAM และ process ที่กำลังทำงาน | ไม่ใช่สิ่งที่ disk snapshot เก็บเพื่อกลับมาทำงานต่อ |
| Attached Block Storage Volume | สร้าง Volume Snapshot แยก [5] |
| Managed Database / Spaces / บริการภายนอก | จัดทำแผนสำรองของบริการนั้นแยก |
| IP และ metadata ของ Droplet | ไม่ได้ติดไปกับ Snapshot [6] |
| DNS, Cloud Firewall, VPC และ Load Balancer | บันทึกและตรวจการเชื่อมโยงใหม่เมื่อสร้างเครื่อง |
ข้อควรแยกให้ออกสำหรับ Docker: named volume ที่เก็บจริงบนดิสก์ Droplet มีข้อมูลอยู่บนดิสก์นั้น แต่ถ้า mount จาก DigitalOcean Volume หรือ external storage ต้องสำรองตำแหน่งจริงด้วย คำว่า Docker volume กับ DigitalOcean Volume ไม่ได้หมายถึงสิ่งเดียวกัน
#4. ขั้นตอน Archive ผ่าน Control Panel
#ขั้นที่ 1: บันทึกสิ่งที่จำเป็นต่อการสร้างระบบกลับ
จัดทำรายการชื่อเครื่อง, region, ขนาดดิสก์, OS, app version, domain, mount point, service, scheduled job และ dependency ภายนอก เก็บ configuration ที่ไม่มีความลับใน Git และเก็บ secrets ในที่จัดการความลับที่เข้าถึงได้เมื่อเครื่องเดิมหายไป
ตัวอย่างตรวจสภาพเครื่อง Linux:
hostnamectl
lsblk -f
df -h
findmnt
systemctl --failed
ถ้าใช้ Docker ให้ตรวจ docker ps -a และ docker volume ls รวมทั้งไฟล์ Compose เพื่อทราบว่าข้อมูลอยู่ที่ใด อย่าเก็บสำเนาฐานข้อมูลไว้บนเครื่องเดิมเพียงแห่งเดียว
#ขั้นที่ 2: หยุดการเขียนข้อมูลและปิดเครื่องอย่างถูกต้อง
กำหนดช่วง downtime เปิด maintenance mode หยุด worker และงานตามเวลา สำรองฐานข้อมูลด้วยเครื่องมือของฐานข้อมูลตามรูปแบบ deployment แล้วตรวจผลการสำรอง
สำหรับระบบที่ใช้หลายดิสก์ ให้หยุดการเขียนข้อมูลค้างไว้ตลอดช่วงที่ถ่าย Snapshot ทุกดิสก์ เพื่อให้ชุดข้อมูลสอดคล้องกัน หากเป็นระบบหลายเครื่องต้องวางแผน coordination เพิ่ม ไม่ควรถือว่าการ Snapshot แยกเครื่องเกิดพร้อมกันโดยอัตโนมัติ
สั่งบน Droplet ที่ต้องการสำรอง:
sudo shutdown -h now
SSH จะหลุดตามปกติ รอจน Control Panel แสดงว่าเครื่องปิดแล้ว DigitalOcean อนุญาต live snapshot แต่ระบุว่าขณะเครื่องทำงานอาจกระทบประสิทธิภาพและความสอดคล้องของข้อมูล โดยเฉพาะฐานข้อมูล [4]
#ขั้นที่ 3: สร้าง Droplet Snapshot
- เปิด Control Panel และเลือก Droplet เป้าหมาย
- เปิดส่วน Snapshots หรือ Backups & Snapshots ตามหน้าจอที่แสดง
- ตั้งชื่อที่บอกระบบ วันที่ และจุดประสงค์ เช่น
training-jenkins-2026-10-29-pre-archive - กด Take Snapshot และรอจนเสร็จ
- บันทึก Snapshot ID, วันเวลา, region และข้อกำหนดขนาดดิสก์
ชื่อเมนูอาจต่างกันตามการปรับ UI ให้ยึดชื่อทรัพยากรและสถานะการทำงานเป็นหลัก [4][7]
#ขั้นที่ 4: สำรอง Volume แยก
ถ้ามี Block Storage ให้ไปที่ Volumes → More → Take Snapshot และสร้าง Snapshot ของแต่ละลูก บันทึกว่า Volume ใดจับคู่กับ Droplet Snapshot ชุดใด อย่าเปิดแอปให้เขียนข้อมูลต่อก่อนสร้างชุดสำรองครบ [5][7]
#ขั้นที่ 5: ทดลองกู้คืนก่อนลบเครื่องต้นฉบับ
สร้าง Droplet ทดสอบจาก Snapshot และ Volume ทดสอบถ้ามี ใช้เครือข่าย/Firewall ที่จำกัดการเข้าถึง ป้องกัน cron, worker หรือ webhook ที่ถูก clone ไปทำงานกับระบบจริงซ้ำ ตรวจ SSH ไฟล์ แอป และฐานข้อมูลตามหัวข้อ 8
ถ้าระบบต้นฉบับเปิดใช้งานและมีข้อมูลใหม่หลัง Snapshot ต้องหยุดเขียนและเก็บ Snapshot ชุดสุดท้ายอีกครั้งก่อน Archive ไม่เช่นนั้นข้อมูลที่เกิดภายหลังจะไม่อยู่ในสำเนา
#ขั้นที่ 6: Destroy เฉพาะทรัพยากรที่ตั้งใจเลิกใช้งาน
เมื่อผลทดสอบผ่านแล้ว จึงเปิดเมนู Destroy ของ Droplet ตรวจชื่อเครื่อง และ อย่าเลือก Snapshot ที่ต้องการเก็บให้ถูกลบตามไปด้วย หน้าจออาจเสนอให้ลบ Volume และ Volume Snapshot ที่เกี่ยวข้องด้วย ต้องตรวจทีละรายการ [8]
การ Destroy ย้อนกลับไม่ได้ หากมี Automated Backup ที่ต้องเก็บระยะยาว ให้แปลงเป็น Snapshot ก่อน อย่าอาศัย retention ของ Backup เป็นคลังถาวร [8]
หลังจบงาน ตรวจทรัพยากรที่ยังมีค่าบริการ เช่น เครื่องทดสอบ Volume Load Balancer และทรัพยากรเครือข่ายที่เก็บไว้ ค่า Snapshot ยังคงอยู่จนกว่าจะลบ Snapshot
#5. กู้คืนโดยสร้าง Droplet ใหม่จาก Snapshot
วิธีนี้เหมาะสำหรับระบบที่ Archive ไปแล้ว หรือเมื่อต้องการทดสอบก่อนเปลี่ยนเครื่องใช้งานจริง
- เลือก Create → Droplets
- ใน Choose an image เลือก Snapshots แล้วเลือกภาพที่ต้องการ
- เลือก region ที่มี Snapshot นั้น และขนาดดิสก์เท่ากับหรือมากกว่าข้อกำหนดของภาพ
- ตั้งค่าเครื่องและเครือข่าย แล้วกด Create
- ตรวจการเข้า SSH และ service จากนั้นคืน Volume และปรับการเชื่อมต่อระบบ
ขนาด Snapshot ที่คิดเงินไม่ใช่ขนาดดิสก์ขั้นต่ำสำหรับกู้คืน เช่น ภาพมีข้อมูล 12 GB จากดิสก์ 50 GB ไม่ได้แปลว่าสร้างเครื่องดิสก์ 25 GB ได้ ให้ตรวจ MinDiskSize และข้อจำกัดที่หน้าสร้างเครื่องแสดง [6][9]
เครื่องใหม่ไม่ได้รับ IP เดิมจาก Snapshot โดยอัตโนมัติ ตรวจ DNS และ IP allowlist หากใช้ Reserved IP ให้ตรวจเงื่อนไข region และการย้ายการผูก IP ก่อนนำมาใช้งาน [10]
เมื่อทดสอบผ่านจึงสลับ DNS หรือเส้นทาง traffic เปิด worker และงานตามเวลา แล้วติดตาม error log และข้อมูลที่ผู้ใช้สร้างใหม่
#6. กู้คืนทับ Droplet เดิม
ใช้เมื่อเครื่องเดิมยังอยู่และต้องการย้อนสภาพดิสก์กลับ เช่น อัปเกรดแอปผิดพลาด
Restore ทับเครื่องเดิมจะแทนที่ข้อมูลปัจจุบันบนดิสก์ด้วยข้อมูลใน Snapshot สำรองข้อมูลใหม่ที่ต้องการเก็บก่อน ไม่ใช่การ merge ไฟล์เก่ากับไฟล์ใหม่
เข้า Backups & Snapshots → Snapshots เลือก Snapshot ของเครื่องนั้น แล้วใช้ More → Restore Droplet ตรวจเป้าหมายและยืนยัน จากนั้นตรวจระบบอีกครั้ง ข้อมูล metadata ของเครื่องเดิมอยู่กับตัว Droplet ไม่ได้ถูกกู้มาจาก Snapshot [6]
หาก Droplet เดิมถูก Destroy ไปแล้ว ให้สร้างเครื่องใหม่ตามหัวข้อ 5 การเลือก Restore ที่ยังอ้างเครื่องเดิมอาจแจ้งว่าไม่พบ resource [10]
| ประเด็น | สร้างเครื่องใหม่ | Restore เครื่องเดิม |
|---|---|---|
| เป้าหมาย | กลับมาใช้หลัง Archive / ทดสอบ | ย้อนระบบที่ยังมีเครื่องเดิม |
| ข้อมูลปัจจุบันของเครื่องเดิม | ไม่ถูกแทนที่ด้วยขั้นตอนสร้างใหม่ | ถูกแทนที่บนดิสก์ที่ Restore |
| การตรวจสอบ | ทดสอบแยกก่อนสลับ traffic ได้ | ต้องวางแผน downtime |
| IP | ตรวจและปรับการชี้ใหม่ | ตรวจ metadata และ network ของเครื่องเดิม |
#7. กู้คืน Volume หรือเฉพาะไฟล์
สำหรับ Volume Snapshot ให้ไปที่ Backups & Snapshots → Snapshots → Volumes เลือก Create Volume สร้างใน region เดิมโดยใช้ขนาดไม่น้อยกว่า Volume ต้นฉบับ แล้ว attach กับ Droplet และตรวจ mount point [11]
lsblk -f
findmnt
df -h
ตรวจ /etc/fstab และ UUID ให้ถูกต้อง อย่าสั่ง format หรือ mkfs กับ Volume ที่กู้จาก Snapshot เพราะมี filesystem และข้อมูลอยู่แล้ว ขั้นตอน format ในคู่มือสร้างดิสก์เปล่าใช้แทนขั้นตอนกู้คืนไม่ได้
หากต้องการเพียงไฟล์ที่เผลอลบ ให้สร้างเครื่องหรือ Volume ชั่วคราวจาก Snapshot แล้วคัดลอกไฟล์ออกมา ตรวจ checksum/เนื้อหาและสิทธิ์ไฟล์ก่อนแทนที่ไฟล์ปลายทาง ไม่จำเป็นต้องย้อนระบบทั้งหมด [10]
#8. Checklist ยืนยันว่ากู้คืนได้จริง
- [ ] เข้า SSH ด้วยบัญชีที่เตรียมไว้ได้
- [ ] ดิสก์และ Volume mount ถูกตำแหน่ง
- [ ] ไฟล์สำคัญครบ และอ่านข้อมูลตัวอย่างได้
- [ ] ฐานข้อมูลเริ่มทำงานได้และผล query สำคัญถูกต้อง
- [ ] แอปทำงานครบเส้นทางหลัก เช่น login อ่านข้อมูล และบันทึกข้อมูลในชุดทดสอบ
- [ ] DNS, TLS, Firewall และการเชื่อมต่อ dependency ถูกต้อง
- [ ] cron, queue worker, email และ webhook ไม่ทำงานซ้ำกับระบบจริง
- [ ] เปิดนโยบาย Backup/monitoring ที่ต้องการสำหรับเครื่องใหม่แล้ว
- [ ] บันทึกเวลากู้คืนจริงและจุดเวลาข้อมูลล่าสุดที่กู้ได้
ตัวอย่างตรวจ service ที่ใช้ systemd:
systemctl --failed
journalctl -b -p err --no-pager
RPO คือช่วงข้อมูลย้อนหลังที่ยอมสูญเสียได้ ส่วน RTO คือเวลาที่ต้องการให้ระบบกลับมาใช้งาน การมี Snapshot ไม่ได้ยืนยันสองค่านี้จนกว่าจะทดลองกู้คืนทั้งแอปและ dependency
#9. ตัวอย่าง doctl สำหรับการสำรอง
ติดตั้ง doctl ตามเอกสารทางการและเข้าสู่บัญชีที่ถูกต้อง เก็บ token ให้ปลอดภัย ตัวอย่างต่อไปนี้ใช้ Bash และตั้งใจให้หยุดหากยังไม่ได้กำหนด ID เพื่อหลีกเลี่ยงการใช้เลขตัวอย่างกับเครื่องจริง
doctl auth init
doctl compute droplet list
# กำหนด ID ที่ตรวจสอบแล้วก่อนรันคำสั่งถัดไป
# export DROPLET_ID=เลข_ID_จริง
: "${DROPLET_ID:?Set the verified Droplet ID first}"
# ปิดเครื่องผ่าน SSH ตามหัวข้อ 4 ก่อน แล้วตรวจสถานะ
doctl compute droplet get "$DROPLET_ID"
# รันเมื่อยืนยันว่าเครื่องปิดแล้ว
doctl compute droplet-action snapshot "$DROPLET_ID" \
--snapshot-name "training-archive-$(date -u +%Y%m%dT%H%M%SZ)" \
--wait
doctl compute snapshot list --resource droplet \
--format ID,Name,Regions,MinDiskSize,Size
--wait รอ action จบ แต่หาก CLI timeout ไม่ได้แปลว่างานฝั่งคลาวด์ถูกยกเลิก ให้ตรวจสถานะก่อนสั่งซ้ำ ชื่อ Snapshot ใช้เวลา UTC ตามอักษร Z เพื่อให้ค้นหาร่วมกับระบบอัตโนมัติได้ง่าย [9][12]
ตัวอย่างสร้างเครื่องกลับจาก Snapshot โดยต้องกำหนดค่าจริงก่อน:
: "${SNAPSHOT_ID:?Set a verified snapshot ID}"
: "${TARGET_REGION:?Set a region where the snapshot is available}"
: "${TARGET_SIZE:?Set a supported size with enough disk}"
doctl compute droplet create restored-lab \
--image "$SNAPSHOT_ID" \
--region "$TARGET_REGION" \
--size "$TARGET_SIZE"
คำสั่งนี้เป็นโครงสร้างขั้นต่ำ ตรวจการเข้าถึง SSH, VPC, Firewall และตัวเลือก deployment ของระบบจริงก่อนใช้งาน ใช้บัญชีและ key ที่ตรวจแล้วในภาพต้นฉบับ และไม่ควรสมมติว่าตัวเลือก SSH key ใหม่จะลบ key เดิมที่ฝังใน Snapshot [6]
#10. ค่าใช้จ่ายและข้อจำกัด
อัตราที่ตรวจสอบวันที่ 29 ตุลาคม 2026: Droplet Snapshot 0.06 USD/GB/เดือน และ Volume Snapshot 0.06 USD/GiB/เดือน มีขั้นต่ำ 0.01 USD ตามเงื่อนไข คิดตามขนาด Snapshot และเอกสารระบุว่าไม่มีค่าบริการเพิ่มสำหรับทำ Snapshot ให้ใช้ได้หลาย region [2]
ตัวอย่างประมาณการสำหรับ Droplet Snapshot ที่มีขนาดคิดเงินจริง 20 GB:
20 × 0.06 = 1.20 USD ต่อเดือน
ตัวอย่างนี้สมมติเก็บเต็มเดือน ไม่รวมภาษี ค่าเครื่องขณะทดสอบ หรือทรัพยากรอื่น ตรวจอัตราปัจจุบันและใบเรียกเก็บเงินก่อนวางงบ
ข้อจำกัดที่ควรรู้:
- Snapshot เป็น full disk image ไม่ใช่ incremental snapshot [5]
- Volume Snapshot ย้ายข้าม region หรือโอนไปบัญชี DigitalOcean อื่นไม่ได้ตามข้อจำกัดที่ตรวจสอบ [5]
- ไม่สามารถดาวน์โหลด DigitalOcean Snapshot/Backup เป็น image file ออกมาโดยตรงได้ ควรมีสำเนาระดับข้อมูลด้วยเครื่องมืออื่นเมื่อต้องการเก็บนอกบัญชีหรือข้ามผู้ให้บริการ [10]
- Snapshot เก่าอาจมี software และ secrets เก่า ต้องตรวจแพตช์และสิทธิ์เข้าถึงก่อนเปิดใช้ต่อ
#11. แบบฝึกปฏิบัติ
ใช้เครื่องทดลองและข้อมูลจำลอง สร้างไฟล์ archive-proof.txt บน Droplet บันทึก checksum แล้ว Snapshot เครื่อง จากนั้นสร้าง Droplet ใหม่และตรวจว่าไฟล์กับ checksum ตรงกัน พร้อมทดสอบหน้าเว็บหนึ่งหน้า
ถ้ามี Volume ให้สร้างไฟล์ทดสอบอีกชุดบน Volume แล้วพิสูจน์ว่าต้องกู้ Volume แยกจึงจะอ่านข้อมูลชุดนั้นได้ ส่งผลการทดลองเป็นตาราง Snapshot ID, เวลาเริ่มกู้, เวลาที่เว็บพร้อม, ผลตรวจไฟล์ และสิ่งที่ต้องตั้งค่าใหม่
เกณฑ์ผ่าน: ระบบเปิดได้ ข้อมูลตรงกับจุดที่สำรอง และอธิบายได้ว่าเหตุใด Power Off ไม่หยุดค่าเครื่อง เหตุใดเครื่องใหม่ต้องตรวจ IP และเหตุใด Volume ต้องมีชุดสำรองแยก
#เอกสารอ้างอิง
- DigitalOcean — Droplet Pricing
- DigitalOcean — Snapshots Pricing
- DigitalOcean — Backups
- DigitalOcean — Create Snapshots of Droplets
- DigitalOcean — Snapshots Limits
- DigitalOcean — Create or Restore Droplets from Snapshots
- DigitalOcean — Snapshots Quickstart
- DigitalOcean — Destroy a Droplet
- DigitalOcean — doctl compute snapshot list
- DigitalOcean — Snapshots Support
- DigitalOcean — Create Volumes from Snapshots
- DigitalOcean — doctl compute droplet-action snapshot
