it

SQLite Litestream Post-mortem Analysis — Backup

sqlite litestream post mortem analysis
SQLite Litestream Post-mortem Analysis — Backup

SQLite Litestream Post-mortem

SQLite Litestream Post-mortem Analysis — Backup

SQLite Litestream WAL Streaming Real-time Replication S3 Backup Recovery Post-mortem Analysis Root Cause Incident RPO RTO Durability Embedded Database

Backup MethodRPORTOComplexityCost
Litestream~1 second~10 secondsต่ำต่ำมาก
sqlite3 .backupHoursMinutesต่ำต่ำ
File Copy (cron)HoursMinutesต่ำต่ำ
PostgreSQL Streaming~1 second~30 secondsสูงสูง

Litestream Setup

=== Litestream Installation & Configuration ===

อ่านเพิ่ม: Voice Cloning Low Code No Code | SiamCafe Blog · อ่านเพิ่ม: Ansible Automation สำหรับมือใหม่ จัดการ Server อัตโนมัติ · อ่านเพิ่ม: Proxmox VE Cluster ทำ High Availability สำหรับ Home Lab

Install

wget https://github.com/benbjohnson/litestream/releases/latest/download/litestream-linux-amd64.deb
sudo dpkg -i litestream-linux-amd64.deb

Configuration — /etc/litestream.yml

dbs:

  • path: /data/app.db

replicas:

  • type: s3

bucket: my-backup-bucket

path: app-db

region: ap-southeast-1

access-key-id:

secret-access-key:

retention: 72h

sync-interval: 1s

  • type: sftp

host: backup-server:22

user: backup

key-path: /etc/litestream/backup-key

path: /backups/app.db

Run as Service

sudo systemctl enable litestream
sudo systemctl start litestream
Docker Compose

เนื้อหาเกี่ยวข้อง — อ่านต่อ: cấy ốc tai điện tử bao nhiêu tiền

services:

app:

build: .

volumes: [data:/data]

litestream:

image: litestream/litestream:latest

volumes:

  • data:/data
  • ./litestream.yml:/etc/litestream.yml

command: replicate

environment:

  • AWS_ACCESS_KEY_ID=
  • AWS_SECRET_ACCESS_KEY=

Verify Replication

แนะนำเพิ่มเติม — XM Signal

litestream replicas list /data/app.db

litestream wal list /data/app.db

from dataclasses import dataclass

@dataclass

class ReplicaStatus:

SQLite Litestream Post-mortem Analysis — Backup

db_path: str

replica_type: str

destination: str

last_sync: str

lag_ms: int

status: str

replicas = [

ReplicaStatus("/data/app.db", "S3", "s3://backup/app-db", "10:30:01", 150, "Syncing"),

ReplicaStatus("/data/app.db", "SFTP", "backup-server:/backups", "10:30:00", 1200, "Syncing"),

เนื้อหาเกี่ยวข้อง — data structure w3schools

ReplicaStatus("/data/blog.db", "S3", "s3://backup/blog-db", "10:30:01", 80, "Syncing"),

]

Recovery และ Testing

=== Disaster Recovery ===

Restore Latest

litestream restore -o /data/restored.db s3://backup/app-db

Point-in-time Recovery

litestream restore -o /data/restored.db \
-timestamp "2024-03-15T10:30:00Z" \

s3://backup/app-db

Verify Integrity

sqlite3 /data/restored.db "PRAGMA integrity_check;"

sqlite3 /data/restored.db "SELECT count(*) FROM users;"

Automated Recovery Test (cron weekly)

#!/bin/bash

RESTORE_PATH="/tmp/recovery-test-$(date +%Y%m%d).db"

litestream restore -o "$RESTORE_PATH" s3://backup/app-db

INTEGRITY=$(sqlite3 "$RESTORE_PATH" "PRAGMA integrity_check;")

ROW_COUNT=$(sqlite3 "$RESTORE_PATH" "SELECT count(*) FROM users;")

if [ "$INTEGRITY" = "ok" ] && [ "$ROW_COUNT" -gt 0 ]; then

echo "RECOVERY TEST PASSED: $ROW_COUNT rows, integrity OK"

curl -X POST "$SLACK_WEBHOOK" \

-d "{\"text\":\"Recovery test PASSED: $ROW_COUNT rows\"}"

else

echo "RECOVERY TEST FAILED"

curl -X POST "$PAGERDUTY_WEBHOOK" \

แนะนำเพิ่มเติม — คู่มือเทรดจาก SiamCafeBook

เนื้อหาเกี่ยวข้อง — ทำความเข้าใจ ArgoCD ApplicationSet Database Migration

-d "{\"text\":\"CRITICAL: Recovery test FAILED\"}"

fi

rm -f "$RESTORE_PATH"

@dataclass

class RecoveryTest:

date: str

db: str

rows_restored: int

integrity: str

duration_sec: float

status: str

เนื้อหาเกี่ยวข้อง — บทความที่เกี่ยวข้อง: บอร์ด iot คืออะไร — ทุกสิ่งที่ต้องรู้ในปี 2026

tests = [

RecoveryTest("2024-03-15", "app.db", 150000, "OK", 8.5, "PASSED"),

RecoveryTest("2024-03-08", "app.db", 148500, "OK", 7.2, "PASSED"),

RecoveryTest("2024-03-01", "app.db", 145000, "OK", 6.8, "PASSED"),

RecoveryTest("2024-03-15", "blog.db", 5200, "OK", 1.2, "PASSED"),

]

เคล็ดลับ

  • sync-interval: ตั้ง 1s สำหรับ RPO ต่ำสุด
  • retention: เก็บ 72h+ สำหรับ Point-in-time Recovery
  • Test: ทดสอบ Recovery ทุกสัปดาห์อัตโนมัติ
  • Monitor: Monitor Replication Lag และ Disk Usage
  • Blameless: Post-mortem ต้อง Blameless โฟกัสที่ระบบ

Best Practices สำหรับนักพัฒนา

การเขียนโค้ดที่ดีไม่ใช่แค่ทำให้โปรแกรมทำงานได้ แต่ต้องเขียนให้อ่านง่าย ดูแลรักษาง่าย และ Scale ได้ หลัก SOLID Principles เป็นพื้นฐานสำคัญที่นักพัฒนาทุกคนควรเข้าใจ ได้แก่ Single Responsibility ที่แต่ละ Class ทำหน้าที่เดียว Open-Closed ที่เปิดให้ขยายแต่ปิดการแก้ไข Liskov Substitution ที่ Subclass ต้องใช้แทน Parent ได้ Interface Segregation ที่แยก Interface ให้เล็ก และ Dependency Inversion ที่พึ่งพา Abstraction ไม่ใช่ Implementation

เรื่อง Testing ก็ขาดไม่ได้ ควรเขียน Unit Test ครอบคลุมอย่างน้อย 80% ของ Code Base ใช้ Integration Test ทดสอบการทำงานร่วมกันของ Module ต่างๆ และ E2E Test สำหรับ Critical User Flow เครื่องมือยอดนิยมเช่น Jest, Pytest, JUnit ช่วยให้การเขียน Test เป็นเรื่องง่าย

เรื่อง Version Control ด้วย Git ใช้ Branch Strategy ที่เหมาะกับทีม เช่น Git Flow สำหรับโปรเจคใหญ่ หรือ Trunk-Based Development สำหรับทีมที่ Deploy บ่อย ทำ Code Review ทุก Pull Request และใช้ CI/CD Pipeline ทำ Automated Testing และ Deployment

Litestream คืออะไร

Real-time SQLite Replication S3 GCS WAL Streaming ไม่หยุด App Recovery วินาที Binary เดียว Durability ง่าย

ทำไมใช้ Litestream กับ SQLite

SQLite ไม่มี Replication Disk เสียข้อมูลหาย Litestream WAL ไป S3 RPO ~0 RTO วินาที ราคาถูก ไม่ต้อง PostgreSQL

Post-mortem Analysis คืออะไร

วิเคราะห์หลัง Incident Blameless Timeline Root Cause Impact Action Items Follow-up DevOps SRE Culture ป้องกันเกิดซ้ำ

Recovery จาก Litestream ทำอย่างไร

litestream restore -o ดึงจาก S3 Point-in-time -timestamp WAL Segments integrity_check Verify ทดสอบเป็นประจำ

สรุป

SQLite Litestream WAL Real-time Replication S3 Backup Recovery RPO RTO Post-mortem Blameless Root Cause Action Items Disk Monitoring logrotate Durability Integrity

XM Legend · เทรดเดอร์ & ผู้สอน Forex 13 ปี

ผู้ก่อตั้ง SiamCafe ตั้งแต่ปี 1997 · เทรดเดอร์สาย Forex มากกว่า 13 ปี ได้รับการยกย่องเป็น XM Legend · แบ่งปันความรู้ Forex, ไอที, AI และการเทรด จากประสบการณ์จริงในตลาดจริง