มหาวิทยาลัยมหามกุฏราชวิทยาลัย · ระบบสาธิต (Demo)
ข้ามไปยังเนื้อหา

รายงานผลการทดสอบ Restore

งวดที่ 3 · รายงานอัตโนมัติ

ดาวน์โหลด .md
← กลับไปศูนย์เอกสารสร้างอัตโนมัติ · สร้างเมื่อ 3 ตุลาคม 2569 เวลา 09:55ข้อ TOR: ก.1.6.3

สร้างอัตโนมัติเมื่อ 2026-10-03T02:55:11Z

รายงานผลการทดสอบ Restore

อ้างอิง TOR: ข้อ ก.1.6.3

รายงานนี้สร้างโดย scripts/restore-test.sh (npm run report:restore-test) เพื่อยืนยันว่าข้อมูลที่สำรองไว้กู้คืนได้จริงและครบถ้วน ตาม TOR ข้อ ก.1.6.3 (คู่มือ Backup/Restore และการทดสอบ Restore อย่างน้อย 1 ครั้งพร้อมรายงาน)

1. สรุปผล

รายการค่า
ผลการทดสอบผ่าน (PASS)
เริ่มทดสอบ2026-10-03T02:55:09Z
สิ้นสุด2026-10-03T02:55:11Z
ระยะเวลารวม1.59 วินาที
ระยะเวลากู้คืน (RTO ที่วัดได้)0.39 วินาที
ฐานข้อมูลต้นทาง (อ่านอย่างเดียว)prisma/dev.db
ฐานข้อมูลที่ใช้ทดสอบ (สำเนา)prisma/restore-test.db
ไฟล์สำรองbackups/.restore-test-20261003-095509-17292/backups/20261003-095509.db
ขนาดไฟล์สำรอง43819008 ไบต์
SHA-256 ของไฟล์สำรองd477bb37ca3a890bef8eefd83389d300dc047c747861c79189750f867bfa9017
จำนวนตาราง (ก่อน / หลัง)26 / 26
จำนวนแถวรวม (ก่อน / หลัง)25935 / 25935
จำนวนตารางที่ไม่ตรง0
สภาพแวดล้อมDarwin 25.4.0, SQLite 3.51.0, bash 3.2.57(1)-release

2. ขอบเขตและวิธีทดสอบ

  • ทดสอบกับ สำเนา ของฐานข้อมูล (prisma/restore-test.db) และสำเนาของไฟล์อัปโหลด — ฐานข้อมูลจริงถูกอ่านเพียงครั้งเดียวเพื่อทำสำเนา ไม่ถูกแก้ไขหรือลบ
  • สำรองด้วย scripts/backup-db.sh (sqlite3 .backup + tar ของ storage/uploads) และกู้คืนด้วย scripts/restore-db.sh ซึ่งเป็นสคริปต์ชุดเดียวกับที่ผู้ดูแลระบบใช้งานจริง
  • เกณฑ์ผ่าน: (1) จำนวนแถวทุกตารางหลังกู้คืนตรงกับก่อนสำรอง (2) PRAGMA integrity_check = ok (3) ข้อมูลที่เพิ่มหลังการสำรองต้องไม่ปรากฏ (4) SHA-256 ของเนื้อหาฐานข้อมูลตรงกัน (5) จำนวนไฟล์อัปโหลดตรงกัน
  • สำเนาและไฟล์สำรองของการทดสอบถูกลบอัตโนมัติเมื่อจบ (ตั้ง KEEP_RESTORE_TEST_FILES=1 เพื่อเก็บไว้)

3. ขั้นตอนและผลการทดสอบ

#ขั้นตอนผลรายละเอียด
1ทำสำเนาฐานข้อมูลและไฟล์อัปโหลดเพื่อทดสอบสำเร็จprisma/dev.db → prisma/restore-test.db (43819008 ไบต์) และ storage/uploads (1 ไฟล์)
2สำรองข้อมูลด้วย scripts/backup-db.shสำเร็จbackups/.restore-test-20261003-095509-17292/backups/20261003-095509.db (43819008 ไบต์) + 20261003-095509-storage.tar
3บันทึกจำนวนแถวทุกตารางก่อนทำลายสำเร็จ26 ตาราง รวม 25935 แถว; ไฟล์อัปโหลด 1 ไฟล์
4เพิ่มข้อมูลทดสอบหลังการสำรอง (marker)สำเร็จสร้างตาราง _restore_test_marker 1 แถว เพื่อพิสูจน์ว่าสถานะย้อนกลับไป ณ เวลาสำรองจริง
5จำลองความเสียหาย: ลบไฟล์ฐานข้อมูลและไฟล์อัปโหลดสำเร็จลบ prisma/restore-test.db (+ -wal/-shm) และโฟลเดอร์ไฟล์อัปโหลดของสำเนา
6กู้คืนด้วย scripts/restore-db.shสำเร็จใช้เวลา 0.39 วินาที
7เทียบจำนวนแถวรายตาราง ก่อนสำรอง ↔ หลังกู้คืนสำเร็จตรงกันทั้ง 26 ตาราง (รวม 25935 แถว)
8ตรวจ PRAGMA integrity_check ของฐานข้อมูลที่กู้คืนสำเร็จok
9ตรวจว่าข้อมูลที่เพิ่มหลังการสำรองหายไปสำเร็จไม่พบตาราง _restore_test_marker (สถานะย้อนกลับไป ณ เวลาสำรอง)
10เทียบ SHA-256 ของเนื้อหาทั้งฐานข้อมูล (.dump)สำเร็จตรงกัน
11เทียบจำนวนไฟล์อัปโหลด ก่อนสำรอง ↔ หลังกู้คืนสำเร็จ1 ↔ 1 ไฟล์

4. เปรียบเทียบจำนวนแถวรายตาราง

ตารางก่อนสำรอง (แถว)หลังกู้คืน (แถว)ผล
AiConfigSetting2626ตรงกัน
AlertEmailLog22ตรงกัน
ApiRequestLog72367236ตรงกัน
AuditLog121121ตรงกัน
Chunk43934393ตรงกัน
Citation33003300ตรงกัน
ConfigSnapshot1010ตรงกัน
Conversation490490ตรงกัน
DefectLog22ตรงกัน
EvaluationDataset88ตรงกัน
EvaluationItem620620ตรงกัน
EvaluationResult25202520ตรงกัน
EvaluationRun3030ตรงกัน
Feedback130130ตรงกัน
GuardrailTopic1515ตรงกัน
IngestionJob44ตรงกัน
IngestionJobItem171171ตรงกัน
KnowledgeDocument330330ตรงกัน
LlmPricing66ตรงกัน
LoginAttempt7272ตรงกัน
Message12681268ตรงกัน
PrivacyRequest11ตรงกัน
PromptVersion66ตรงกัน
TokenUsage51285128ตรงกัน
User4444ตรงกัน
_prisma_migrations22ตรงกัน
รวม2593525935ตรงกัน

5. การตรวจสอบเพิ่มเติม

รายการตรวจก่อนสำรองหลังกู้คืน
PRAGMA integrity_check-ok
ตาราง marker _restore_test_marker (เพิ่มหลังสำรอง)ไม่มีไม่มี (ถูกต้อง)
SHA-256 ของ .dumpe45c2281d64177d2ae4ce32d22e833a82eee83911c242bea6b50a17ea7bc95ece45c2281d64177d2ae4ce32d22e833a82eee83911c242bea6b50a17ea7bc95ec
จำนวนไฟล์อัปโหลด11

6. สรุป

ผลการทดสอบ Restore: ผ่าน (PASS) — ใช้เวลารวม 1.59 วินาที

  • วิธีทำซ้ำ: npm run report:restore-test หรือ bash scripts/restore-test.sh
  • การสำรอง/กู้คืนจริง: bash scripts/backup-db.sh และ bash scripts/restore-db.sh backups/<timestamp>.db (ดูหน้า /admin/backup)
  • Production (PostgreSQL 16 + Object Storage ตาม Solution Architecture): ใช้ขั้นตอนเดียวกัน — สำรอง (pg_dump/PITR + snapshot ของ bucket) → กู้คืนลง instance แยก → เทียบจำนวนแถวรายตาราง → ออกรายงาน โดยไม่กระทบระบบที่ให้บริการอยู่