Uniwersalne kopie zapasowe

W tym artykule poznasz zasadę działania systemu uniwersalnych kopii zapasowych używanych w eStats od wersji 4.9.

^ Wprowadzenie

System uniwersalnych kopii zapasowych został stworzony w celu ułatwienia przenoszenia danych pomiędzy róznymi modułami baz danych, zmniejszeniu objętości plików wynikowych oraz ujednolicenia tego mechanizmu we wszystkich modułach.

Dodatkowym zastosowaniem jest ujednolicenie procesu instalacji oraz aktualizacji, który polega obecnie na wygenerowaniu pliku danych, a następnie na przywróceniu tej kopii zapasowej.

^ Budowa

Plik uniwersalnej kopii zapasowej jest zwykłym plkiem tekstowym o rozszerzeniu .estats.bak.

Składa się z nagłówka zawierającego informacje takie jak wersja skryptu, format kopii, tryb wykonania (istotny przy jej przywracaniu), zakres czasu jaki obejmuje, typ bazy danych i dane modułu, dla których została wykonana.

Tuz pod nagłówkiem znajduje się lista tabel (zapisywane są tylko ich identyfikatory, bez prefiksów) wraz z listą ich zawartości. Pojedynczy wiersz w tabeli odpowiada jednemu wierszowi w pliku kopii. Separatorem jest znak ASCII numer 30 (a co za tym idzie wystąpienia tego nzaku w danych są kasowane). Dodatkowo znaki nowej linii i powrotu karetki są zastępowane odpowiednio znakami \n oraz \r. Wiersze w pliku powinny być oddzielone pojedynczym znakiem nowej linii. Linie rozpoczynające się od kombinacji /* (pobierane są z nich identyfikatory tabel, o ile pasują do wzorca), puste oraz pierwsze dziesięć są pomijane.

Przykład:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/*
eStats v4.9.08 database backup
Format: eStats
Mode: full (replace data)
Time range: 02.19.2006 14:26:19 - 02.18.2008 11:34:50
Database: SQLite
Module: eStats SQLite v3.0.05 (http://estats.emdek.cba.pl)
*/


/*Table: browsers*/

2006-07-22 00:00:00Opera849.00
2006-07-22 00:00:00MSIE556.0
2006-07-22 00:00:00Firefox352.0
2006-07-22 00:00:00Konqueror23.5

^ Działanie

W przypadku wykonywania kopii zapasowych wykorzystywana jest metoda estats_db::backup_create (). Może ona zwracać także kopie w formacie SQL (specyficznym dla konkretnego typu bazy danych). Jej działanie polega na pobraniu wszystkich wierszy z podanej listy tabel oraz zapisanie ich w odpowiednim formacie.

Metoda estats_db_gui::backup_restore () natomiast służy do przywracania kopii o podanym ID (zwraca status operacji). Także może przywracać kopie w formacie SQL.

Przywracanie uniwersalnej kopii zapasowej może odbywać się w kilku trybach:

  • domyślnie - dane są dołączane do istniejących;
  • replace data - dane są zastępowane;
  • create tables - należy dodatkowo utworzyć strukturę tabel;
  • recreate tables - należy odtworzyć tabele (usuwanie istniejących tabel o takicg samych nazwach);

Na podstawie danych generowane są zapytania SQL, a następnie wykonywane.

Ostatnia modyfikacja: 2008-02-18 12:48:22 CET

Wszystko co robimy jest jedynie rozwinięciem dzieł naszych poprzedników, nawet jeśli wydaje się nam, że jest inaczej.

(...)