2012-10-17 28 views
12

Tôi đang lấy bản sao lưu của SQLite DB bằng cách sử dụng lệnh cp commmand sau khi chạy wal_checkpoint (FULL). DB đang được sử dụng trong chế độ WAL để có các tệp khác như -shm và -wal trong thư mục của tôi. Khi tôi chạy wal_checkpoint (FULL), những thay đổi trong tập tin WAL được cam kết với cơ sở dữ liệu. Tôi waqs tự hỏi liệu các tập tin -wal và -shm có bị deelted sau khi chạy một trạm kiểm soát hay không. Nếu không, thì chúng chứa những gì?-shm và -wal trong SQLite DB

Tôi biết quy trình sao lưu của mình không tốt vì tôi không sử dụng API sao lưu SQLite. Đây là lỗi trong mã của tôi.

Bất kỳ ai cũng có thể đề xuất nội dung nào chứa tệp -shm và -wal sau khi chạy trạm kiểm soát.

Bất kỳ liên kết nào được cung cấp sẽ hữu ích.

Cảm ơn

Trả lời

14

Sau khi tìm kiếm qua nhiều nội dung, tôi sẽ liệt kê xuống dưới các điểm:
1. -shm tệp có chứa chỉ mục tới tệp -wal. -shm cải thiện hiệu năng của tập tin read -wal.
2. Nếu tệp -shm bị xóa, nó sẽ được tạo lại trong lần truy cập tiếp theo vào cơ sở dữ liệu.
3. Nếu trạm kiểm soát đang chạy, tập tin -wal có thể bị xóa.

sao lưu an toàn
1. Đó là khuyến cáo để sử dụng chức năng sao lưu SQLite cho việc thực hiện backup. Thư viện SQLite có chức năng đủ để thậm chí có thể sao lưu cơ sở dữ liệu trực tuyến.
2. Nếu bạn không muốn sử dụng (1), thì cách tốt nhất là đóng các chốt xử lý cơ sở dữ liệu. Điều này đảm bảo một trạng thái sạch và nhất quán của tệp cơ sở dữ liệu, nó cũng xóa các tệp -shm và -wal. Sao chép bình thường sau đó có thể được thực hiện để lấy sao lưu bằng cp, scp, v.v.
3. Nếu tệp cơ sở dữ liệu SQLite được truyền qua mạng, thì lệnh chân không sẽ được chạy sau khi kiểm tra. Điều này sẽ loại bỏ các phân mảnh trong tập tin cơ sở dữ liệu do đó làm giảm kích thước của nó, vì vậy bạn chuyển ít dữ liệu thông qua mạng. Nó chỉ là một gợi ý.
Tham khảo bên dưới hai dòng tốt
http://www.dbtalks.com/uploadfile/ca5be5/write-ahead-logging-concept-in-sqlite/
http://www.mentby.com/Group/sqlite-users/database-disk-image-is-malformed-37x.html

3

-shm tệp không chứa bất kỳ dữ liệu cố định nào.

Khi kết nối cuối cùng được đóng, cơ sở dữ liệu tự động được đánh dấu, và sau đó tệp -wal sẽ bị xóa. Điều này ngụ ý rằng sau một trạm kiểm soát, và nếu không có kết nối nào khác tồn tại, tệp -wal không chứa bất kỳ dữ liệu quan trọng nào.

Nếu có thể, bạn nên đóng kết nối trước khi thực hiện sao lưu.

+0

Sẽ -wal tập tin chứa bất cứ điều gì sau khi chạy trạm kiểm soát. Hãy xem xét rằng kết nối không được đóng lại. –

Các vấn đề liên quan