Подтвердить что ты не робот

#ИМЯ?

Я беру резервную копию SQLite DB с помощью cp commmand после запуска wal_checkpoint (FULL). БД используется в режиме WAL, поэтому в моей папке есть другие файлы, такие как -shm и -wal. Когда я запускаю wal_checkpoint (FULL), изменения в файле WAL передаются в базу данных. Я думаю, что после запуска контрольной точки файлы -wal и -shm будут очищены. Если нет, то что они содержат?

Я знаю, что мой процесс резервного копирования не очень хорош, так как я не использую API-интерфейсы резервного копирования SQLite. Это ошибка в моем коде.

Может кто-нибудь может предложить, какой контент содержит файлы -shm и -wal после запуска контрольной точки.

Любая предоставленная ссылка будет полезна.

Спасибо

4b9b3361

Ответ 1

После поиска по большому количеству контента я перечислил ниже пункты:
1. -shm файл содержит индекс для -wal файла. -shm улучшает производительность файла read-wal.
2. Если файл -shm удаляется, он создается снова во время следующего доступа к базе данных.
3. Если контрольная точка запущена, -wal файл может быть удален.

Безопасное резервное копирование
1. Для резервного копирования рекомендуется использовать функции резервного копирования SQLite. Библиотека SQLite имеет функции, позволяющие даже делать резервные копии онлайн-базы данных.
2. Если вы не хотите использовать (1), лучший способ - закрыть дескрипторы базы данных. Это обеспечивает чистое и согласованное состояние файла базы данных, оно также удаляет файлы -shm и -wal. Затем можно выполнить нормальную копию для резервного копирования с помощью cp, scp и т.д.
3. Если файл базы данных SQLite предназначен для передачи по сети, тогда после контрольной точки должна запускаться команда вакуум. Это позволит удалить фрагментацию в файле базы данных, тем самым уменьшив ее размер, поэтому вы переносите меньше данных через сеть. Это всего лишь предложение.
См. Ниже две хорошие строки
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

Ответ 2

Файл -shm не содержит постоянных данных.

Когда последнее соединение закрыто, база данных автоматически проверяется, а затем удаляется файл -wal. Это означает, что после контрольной точки, и если никаких других соединений не существует, файл -wal не содержит важных данных.

Если возможно, вы должны закрыть соединение, прежде чем делать резервную копию.