Sao lưu và khôi phục
MPCIUM cung cấp khả năng sao lưu và khôi phục mạnh mẽ để đảm bảo dữ liệu của cụm MPC phân tán được bảo vệ khỏi mất mát. Hệ thống sao lưu sử dụng chiến lược sao lưu gia tăng kết hợp mã hóa để lưu trữ và bảo vệ trạng thái cơ sở dữ liệu một cách hiệu quả, đồng thời giảm thiểu việc sử dụng tài nguyên.

Quan trọng: Luôn kiểm thử quy trình sao lưu và khôi phục trong môi trường không phải production trước khi triển khai chúng trên production.
Cấu hình sao lưu
MPCIUM hỗ trợ các cài đặt sao lưu có thể điều chỉnh trong file config.yaml:
Cấu hình sao lưu
# Backup Configuration
backup_enabled: true # Enable/disable automatic backups (default: true)
backup_period_seconds: 300 # How often to perform backups in seconds (default: 300)
backup_dir: "./backups" # Directory where encrypted backups are stored
Tham số cấu hình
backup_enabled (boolean)
Kiểm soát việc có thực hiện sao lưu tự động hay không. Đặt thành false để tắt hoàn toàn việc sao lưu.
backup_period_seconds (integer)
Xác định khoảng thời gian giữa các lần sao lưu tự động, tính bằng giây. Giá trị mặc định 300 giây (5 phút) mang lại sự cân bằng tốt giữa bảo vệ dữ liệu và hiệu năng hệ thống.
backup_dir (string)
Chỉ định thư mục lưu trữ các file sao lưu đã mã hóa. Hãy đảm bảo thư mục này có quyền truy cập phù hợp và đủ dung lượng đĩa.
Chiến lược sao lưu
MPCIUM triển khai chiến lược sao lưu gia tăng, chỉ lưu trữ những thay đổi kể từ lần sao lưu trước, giúp giảm dung lượng lưu trữ và thời gian sao lưu. Cách tiếp cận này đảm bảo mỗi bản sao lưu không trùng lặp với các bản trước đó, tiết kiệm đáng kể dung lượng lưu trữ và băng thông mạng trong khi vẫn bảo vệ dữ liệu đầy đủ.
Cấu trúc file sao lưu
Các file sao lưu được lưu trong thư mục sao lưu đã cấu hình với quy ước đặt tên như sau:
node0/
└── backups/
├── backup-node0-2025-07-28_20-46-39-1.enc
├── backup-node0-2025-07-28_20-48-39-2.enc
├── backup-node0-2025-07-28_20-49-39-3.enc
└── latest.version
Định dạng file sao lưu
Mỗi file sao lưu chứa:
- Các thay đổi gia tăng của cơ sở dữ liệu kể từ lần sao lưu trước (không phải bản sao đầy đủ)
- Trạng thái cơ sở dữ liệu đã mã hóa bằng AES-256-GCM để bảo mật khi truyền tải và lưu trữ
- Metadata bao gồm thời điểm tạo, tham số mã hóa và thông tin phiên bản
- Chuỗi các bản cập nhật gia tăng có thể được tái dựng để khôi phục trạng thái đầy đủ của cơ sở dữ liệu
Ví dụ metadata sao lưu
{
"algo": "AES-256-GCM",
"nonce_b64": "MgDMCSqKNujD+9na",
"created_at": "2025-07-28T20:46:39+07:00",
"since": 0,
"next_since": 6,
"encryption_key_id": "bd1937594bea2580"
}
Bảo mật: Các file sao lưu được mã hóa bằng chính badger_password dùng để mã hóa cơ sở dữ liệu, đảm bảo dữ liệu sao lưu luôn an toàn khi truyền tải và lưu trữ. Cách tiếp cận gia tăng kết hợp với mã hóa mang lại cả hiệu quả về tài nguyên lẫn khả năng bảo vệ dữ liệu.
Quy trình khôi phục
Sử dụng mpcium-cli recover
Để khôi phục cơ sở dữ liệu MPCIUM từ các file sao lưu đã mã hóa, hãy dùng lệnh mpcium-cli recover:
Lệnh khôi phục
mpcium-cli recover --help
NAME:
mpcium recover - Recover database from encrypted backup files
USAGE:
mpcium recover [command [command options]]
OPTIONS:
--backup-dir string, -b string Directory containing encrypted backup files
--recovery-path string, -r string Target path for database recovery
--backup-encryption-key string, -k string Encryption key for backup files (will prompt if not provided)
--force, -f Force overwrite if recovery path already exists (default: false)
--help, -h show help
Quy trình khôi phục
- Dừng node MPCIUM để đảm bảo không có thao tác cơ sở dữ liệu nào đang diễn ra
- Chạy lệnh khôi phục với các tham số phù hợp
- Cập nhật cấu hình để trỏ tới cơ sở dữ liệu đã khôi phục
- Khởi động lại node với dữ liệu đã khôi phục
Ví dụ khôi phục
# Step 1: Stop the MPCIUM node
# Step 2: Recover the database
mpcium-cli recover \
--backup-dir backups/ \
--recovery-path restore_db/node0
# Step 3: Update config.yaml
# Change db_path to: db_path: "restore_db"
# Step 4: Restart the node
mpcium start -n node0
Tích hợp AWS S3
MPCIUM hỗ trợ AWS S3 để lưu trữ bản sao lưu trên cloud, mang lại khả năng dự phòng bổ sung và khôi phục sau thảm họa.
Thiết lập sao lưu S3
1. Tạo S3 bucket
Tạo S3 bucket
aws s3 mb s3://node0-backup --region ap-southeast-1
2. Cấu hình quyền S3
Hãy đảm bảo thông tin xác thực AWS của bạn có quyền phù hợp cho các thao tác S3:
Ví dụ chính sách S3
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:ListBucket",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::node0-backup",
"arn:aws:s3:::node0-backup/*"
]
}
]
}
Thao tác sao lưu S3
Tải bản sao lưu cục bộ lên S3
Tải lên S3
# Sync local backup folder to S3
aws s3 sync ./backups s3://node0-backup
Tải bản sao lưu từ S3 về
Tải về từ S3
# Sync from S3 to local folder
aws s3 sync s3://node0-backup ./backups
Xác minh bản sao lưu S3
Xác minh nội dung S3
# List S3 backup contents
aws s3 ls s3://node0-backup --recursive
# Check backup file details
aws s3api head-object --bucket node0-backup --key backup-node0-2025-07-28_20-46-39-1.enc
Former: Product Manager at TomoChain labs
Sao lưu tự động
Thiết lập cron job
Thiết lập sao lưu S3 tự động bằng cron job để đảm bảo đồng bộ thường xuyên với kho lưu trữ cloud:
Cấu hình cron job
# Edit crontab
crontab -e
# Add backup job (runs every hour)
0 * * * * /usr/local/bin/backup-mpcium.sh
# Add daily backup verification
0 2 * * * /usr/local/bin/verify-backup.sh
Ví dụ script sao lưu
Tạo một script sao lưu để tự động hóa quá trình đồng bộ S3:
Script sao lưu
#!/bin/bash
# /usr/local/bin/backup-mpcium.sh
# Configuration
NODE_NAME="node0"
S3_BUCKET="node0-backup"
BACKUP_DIR="/opt/mpcium/node0/backups"
LOG_FILE="/var/log/mpcium-backup.log"
# Log function
log() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
}
# Start backup
log "Starting MPCIUM backup to S3"
# Sync local backups to S3
if aws s3 sync "$BACKUP_DIR" "s3://$S3_BUCKET" --delete; then
log "Backup completed successfully"
else
log "Backup failed"
exit 1
fi
# Verify backup
if aws s3 ls "s3://$S3_BUCKET" | grep -q "backup-$NODE_NAME"; then
log "Backup verification successful"
else
log "Backup verification failed"
exit 1
fi
Script xác minh
Tạo một script để xác minh tính toàn vẹn của bản sao lưu:
Script xác minh
#!/bin/bash
# /usr/local/bin/verify-backup.sh
# Configuration
S3_BUCKET="node0-backup"
LOG_FILE="/var/log/mpcium-backup-verify.log"
# Log function
log() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
}
# Check S3 bucket accessibility
if aws s3 ls "s3://$S3_BUCKET" > /dev/null 2>&1; then
log "S3 bucket accessible"
else
log "S3 bucket not accessible"
exit 1
fi
# Count backup files
BACKUP_COUNT=$(aws s3 ls "s3://$S3_BUCKET" --recursive | grep -c "\.enc$")
log "Found $BACKUP_COUNT backup files in S3"
# Check for recent backups (within last 24 hours)
RECENT_BACKUPS=$(aws s3 ls "s3://$S3_BUCKET" --recursive | grep "$(date '+%Y-%m-%d')" | wc -l)
log "Found $RECENT_BACKUPS backups from today"
if [ "$RECENT_BACKUPS" -eq 0 ]; then
log "WARNING: No recent backups found"
exit 1
fi
Giám sát và cảnh báo
Thiết lập giám sát cho các quy trình sao lưu:
Thiết lập giám sát
# Check backup script exit status
if [ $? -ne 0 ]; then
# Send alert (example with curl to webhook)
curl -X POST -H "Content-Type: application/json" \
-d '{"text":"MPCIUM backup failed"}' \
https://your-webhook-url.com/alert
fi
Thực tiễn tốt nhất: Thường xuyên kiểm thử quy trình sao lưu và khôi phục trong môi trường thử nghiệm để đảm bảo chúng hoạt động đúng khi cần.