Wykonuję kopię zapasową bazy danych SQLite przy użyciu polecenia cp po uruchomieniu wal_checkpoint (FULL). Baza danych jest używana w trybie WAL, więc w moim folderze znajdują się inne pliki, takie jak -shm i -wal. Kiedy uruchamiam wal_checkpoint(FULL), zmiany w pliku WAL zostają zatwierdzone do bazy danych. Zastanawiam się, czy pliki -wal i -shm zostaną usunięte po uruchomieniu punktu kontrolnego. Jeśli nie, to co zawierają?

Wiem, że mój proces tworzenia kopii zapasowych nie jest dobry, ponieważ nie używam API do tworzenia kopii zapasowych SQLite. To jest błąd w moim kodzie.

Czy ktoś może zasugerować jaką zawartość zawierają pliki -shm i -wal po uruchomieniu punktu kontrolnego.

Każdy podany link byłby pomocny.

Dzięki

19
Manik Sidana 17 październik 2012, 10:20

2 odpowiedzi

Najlepsza odpowiedź

Po przeszukaniu wielu źródeł uważam, że prawdziwe są następujące:

  1. Plik -shm zawiera indeks do pliku -wal. Plik -shm poprawia wydajność podczas odczytywania pliku -wal.
  2. Jeśli plik -shm zostanie usunięty, zostanie utworzony ponownie podczas następnego dostępu do bazy danych.
  3. Jeśli checkpoint zostanie uruchomiony, plik -wal można usunąć.

Aby wykonać bezpieczne kopie zapasowe:

  1. Zaleca się korzystanie z funkcji tworzenia kopii zapasowych SQLite do tworzenia kopii zapasowych. Biblioteka SQLite może nawet tworzyć kopie zapasowe bazy danych online.
  2. Jeśli nie chcesz używać (1), najlepszym sposobem jest zamknięcie uchwytów bazy danych. Zapewnia to czysty i spójny stan pliku bazy danych oraz usuwa pliki -shm i -wal. Następnie można wykonać kopię zapasową za pomocą cp, scp itd.
  3. Jeśli plik bazy danych SQLite ma być przesyłany przez sieć, polecenie próżnia powinno zostać uruchomione po checkpoint. Usuwa fragmentację w pliku bazy danych, zmniejszając w ten sposób jego rozmiar, dzięki czemu przesyłasz mniej danych przez sieć.
25
stkent 21 marzec 2018, 18:19

Plik -shm nie zawiera żadnych trwałych danych.

Po zamknięciu ostatniego połączenia baza danych jest automatycznie sprawdzana, a plik -wal jest następnie usuwany. Oznacza to, że po punkcie kontrolnym i jeśli nie istnieją żadne inne połączenia, plik -wal nie zawiera żadnych ważnych danych.

Jeśli to możliwe, przed wykonaniem kopii zapasowej zamknij połączenie.

8
CL. 17 październik 2012, 14:23