Khởi tạo thư mục dữ liệu trên Edge Node
Trên server Edge Node, bạn cần tạo cấu trúc thư mục để LiteFS lưu trữ trạng thái đồng bộ hóa và dữ liệu SQLite thực tế.
Thư mục /var/lib/litefs sẽ chứa các file journal (log) của LiteFS, trong khi thư mục con /var/lib/litefs/data là nơi chứa file database SQLite (.db) sẽ được mount vào.
Thực hiện lệnh sau để tạo thư mục và gán quyền sở hữu cho user root (hoặc user runtime của ứng dụng, ví dụ www-data):
sudo mkdir -p /var/lib/litefs/data
sudo chown -R root:root /var/lib/litefs
Kết quả mong đợi: Thư mục được tạo thành công, không có lỗi quyền truy cập khi chạy lệnh ls -la /var/lib/litefs.
Cấu hình file litefs.yml cho chế độ Replica
File cấu hình /etc/litefs/litefs.yml trên Edge Node cần được chỉnh sửa để xác định node này là Replica và chỉ định địa chỉ Primary.
Khác với Primary Node, Edge Node không chạy chế độ primary mà sử dụng chế độ replica. Nó cần biết địa chỉ remote (URL của Primary) để kết nối và pull dữ liệu.
Tạo file cấu hình hoàn chỉnh với nội dung dưới đây. Lưu ý thay thế 192.168.1.10 bằng IP thực tế của Primary Node và mydb bằng tên database thực tế của bạn.
cat > /etc/litefs/litefs.yml
Kết quả mong đợi: File /etc/litefs/litefs.yml được tạo thành công. Nội dung file hiển thị chính xác các thông số kết nối về Primary.
Cấu hình chính sách đồng bộ hóa và chế độ Read-Only
Trong file litefs.yml ở bước trên, tham số mode: "replica" tự động đặt database ở chế độ Read-Only (chỉ đọc) đối với các node Edge.
Tham số sync: "full" trong phần primary yêu cầu Edge Node đồng bộ toàn bộ dữ liệu ngay khi khởi động hoặc khi mất kết nối, đảm bảo dữ liệu mới nhất từ Primary được tải về.
Để Edge Node có thể nhận yêu cầu đọc từ ứng dụng nhưng từ chối mọi yêu cầu ghi (Write), LiteFS đã xử lý ngầm định khi mode là replica. Tuy nhiên, bạn cần đảm bảo ứng dụng không cố gắng ghi vào database này.
Khởi động dịch vụ LiteFS trên Edge Node để áp dụng cấu hình:
sudo systemctl enable litefs
sudo systemctl start litefs
Kết quả mong đợi: Dịch vụ LiteFS chạy mà không có lỗi khởi động. Lệnh sudo systemctl status litefs trả về trạng thái active (running).
Xác nhận quá trình pull dữ liệu từ Primary
Sau khi khởi động, LiteFS trên Edge Node sẽ tự động thiết lập kết nối với Primary và bắt đầu quá trình pull để đồng bộ dữ liệu.
Để kiểm tra trạng thái đồng bộ hóa, sử dụng lệnh litefs status. Lệnh này hiển thị thông tin về node, chế độ hoạt động, và trạng thái đồng bộ với Primary.
sudo litefs status
Kết quả mong đợi: Đầu ra hiển thị mode: replica, primary: 192.168.1.10:20202, và trạng thái sync đang ở mức idle hoặc pulling. Nếu dữ liệu đã đồng bộ xong, bạn sẽ thấy last-applied khớp với primary-applied.
Để kiểm tra dữ liệu thực tế đã được mount vào thư mục /var/lib/litefs/data, liệt kê thư mục và đọc file database bằng công cụ sqlite3 ở chế độ chỉ đọc:
ls -la /var/lib/litefs/data
sqlite3 /var/lib/litefs/data/mydb.db "SELECT * FROM your_table LIMIT 5;"
Kết quả mong đợi: File database xuất hiện trong thư mục data. Lệnh sqlite3 trả về dữ liệu tương tự như trên Primary Node mà không bị lỗi "database is locked" hoặc "read-only".
Để thử nghiệm tính Read-Only, cố gắng thực hiện lệnh ghi (INSERT/UPDATE) trên Edge Node:
sqlite3 /var/lib/litefs/data/mydb.db "INSERT INTO your_table (col1) VALUES ('test');" 2>&1
Kết quả mong đợi: Lệnh trả về lỗi database is locked hoặc read-only database, xác nhận Edge Node đang hoạt động đúng chức năng Replica.
Điều hướng series:
Mục lục: Series: Triển khai Database Edge với LiteFS và Ubuntu 24.04
« Phần 3: Cấu hình LiteFS cho chế độ Primary (Master)
Phần 5: Tích hợp LiteFS với ứng dụng và Docker Compose »