%%
%%

\chapter{SQLite Installation und Konfiguration}
\label{SqlLiteChapter}
\index[general]{SQLite Installation und Konfiguration}
\index[general]{SQLite!Installation und Konfiguration}

Bitte beachten Sie, dass SQLite, in Version 2 und 3, beide nicht
netzwerkf\"{a}hig sind. Das bedeutet, dass SQLite auf dem selben System
installiert sein muss wie der Bacula-Director-Dienst. Es ist kein Zugriff
\"{u}ber das Netzwerk, wie bei MySQL und PostgreSQL, m\"{o}glich. Daraus
ergeben sich diese Konsequenzen:
\begin{enumerate}
\item SQLite kann nicht mit der Web-GUI {\bf bweb} benutzt werden.
\item Wenn SQLite auf einer anderen Maschine als Ihr Storage-Dienst
l\"{a}uft, m\"{u}ssen Sie die Datenbank auf das System des Storage-Dienstes
kopieren, bevor Sie die SD-Hilfsprogramme wie bscan usw. benutzen k\"{o}nnen.
\end{enumerate}

\section{SQLite Installation und Konfiguration -- Phase I}
\index[general]{Phase I!SQLite Installation und Konfiguration -- }
\index[general]{SQLite Installation und Konfiguration -- Phase I }

Wenn Sie den Bacula-Quelltext mit {\bf ./configure \verb:--:with-sqlite}
konfigurieren, m\"{u}ssen Sie SQLite in Version 2.8.16 oder neuer installiert
haben. Diese SQLite-Version finden Sie in dem "`Dependency-Package"' unter
{\bf depkgs/sqlite-<Version>}. Wenn neuere Version von SQLite verf\"{u}gbar sind,
wird auch dieses Paket aktualisiert.

Die Installation und Konfiguration ist sehr einfach: 

\begin{enumerate}
\item downloaden Sie das Bacula-Dependency-Package.
\item entpacken Sie es mit einem Kommando wie:

   {\bf tar xvfz depkgs.tar.gz}  

   Dieses Kommando ben\"{o}tigt das GNU tar Programm,
   ansonsten wird:

   {\bf zcat depkgs.tar.gz | tar xvf -}

   zum gleichen Ziel f\"{u}hren.

\item {\bf cd depkgs}

\item f\"{u}r SQLite2: {\bf make sqlite}

\item oder f\"{u}r SQLite3: {\bf make sqlite3}

\end{enumerate}

Je nachdem welche Version Sie installiert haben, SQLite oder SQLite3, m\"{u}ssen Sie
Bacule entsprechend mit {\bf \verb:--:with-sqlite} oder {\bf \verb:--:with-sqlite3}
konfigurieren. Die Version 2 von SQLite k\"{o}nnen Sie nicht zusammen mit der
Bacula-Konfigurations-Option {\bf \verb:--:enable-batch-insert} verwenden, da die Version 2
nicht thread-safe ist. Mit SQLite3 k\"{o}nnen Sie diese Option nur verwenden, wenn Sie
SQLite3 mit {\bf \verb:--:enable-threadsafe} und {\bf \verb:--:enable-cross-thread-connections}
konfiguriert und kompiliert haben.

Standardm\"{a}{\ss}ig l\"{a}uft SQLite3 mit {\bf PRAGMA synchronous=OFF}.
Das erh\"{o}ht zwar die Geschwindigkeit um bis zu das 30-fache, hat aber den
Nachteil, dass Ihre Datenbank leichter besch\"{a}digt wird, falls Ihre
Maschine, etwa durch Stromausfall oder einen Kernel-Bug, stehen bleibt.
Falls Sie auf die h\"{o}here Geschwindigkeit zugunsten der Sicherheit
verzichten wollen, k\"{o}nnen Sie PRAGMA in der Datei src/version.h
entsprechend anpassen.

An dieser Stelle sollten Sie mit der Installation von Bacula
fortfahren.

\section{SQLite Installation und Konfiguration -- Phase II}
\label{sqlite_phase2}
\index[general]{Phase II!SQLite Installation und Konfiguration -- }
\index[general]{SQLite Installation und Konfiguration -- Phase II }

Die Phase II wird durchgef\"{u}hrt, nachdem Bacula installiert wurde.

Bei der Installation von Bacula werden mehrere Scripte in das
Installations-Verzeichnis kopiert, mit denen Sie verschiedene
\"{A}nderungen an der Datenbank durchf\"{u}hren k\"{o}nnen.
Diese Scripte haben Namen im Format *\_bacula\_*
(z.B. create\_bacula\_database)und dienen dazu die Datenbank
zu initialisieren, zu aktualisieren oder zu l\"{o}schen.
Diese Scripte sind auch im Bacula-Quelltext-Verzeichnis, nach
der Ausf\"{u}hrung des "`./configure"'-Scripts, unter
\lt{}bacula-src\gt{}/src/cats zu finden. Wenn Sie sich, zum
Beispiel, das Script create\_bacula\_database n\"{a}her ansehen
werden Sie merken, dass dieses Script einfach nur
create\_mysql\_database ausf\"{u}hrt. Alle Scripte die *\_bacula\_*
heissen, dienen nur der Bequemlichkeit. Es spielt keine Rolle
mit welcher Datenbank Sie den Bacula-Quelltext \"{u}bersetzt haben,
das Script create\_bacula\_database wird immer die f\"{u}r Sie
richtige Datenbank erstellen.

Jetzt k\"{o}nnen die Datenbank und die Tabellen erstellt werden:

\begin{enumerate}
\item cd \lt{}Bacula-Installations-Verzeichnis\gt{}
   In diesem Verzeichnis finden Sie die Bacula-Datenbank-Scripte.

\item ./make\_sqlite\_tables

   Dieses Script erzeugt sowohl die Datenbank als auch die Tabellen
   die Bacula benutzt. Standardm\"{a}{\ss}ig wird die Datenbank als 
   {\bf bacula.db} im Arbeitsverzeichnis von Bacula erstellt.
\end{enumerate}

\section{Bacula mit SQLite linken}
\index[general]{SQLite!Bacula linken mit}
\index[general]{Bacula mit SQLite linken}

Wenn Sie alle Schritte bis hierhin befolgt haben, passiert das
Linken der SQLite-Bibliotheken mit Bacula automatisch. 

\section{SQLite Tests}
\index[general]{SQLite!Tests }
\index[general]{SQLite Tests }

Da SQLite eigentlich nicht in Produktionsumgebungen eingestzt wird,
gibt es viel weniger Anwender und Erfahrungen als z.B. bei MySQL.
Als "`Hilfsdatenbank"' die w\"{a}hrend der Entwicklung eingesetzt wird,
funktioniert SQLite allerdings sehr gut. Trotzdem wird immer wieder von 
Benutzer gemeldet, dass sie Probleme mit ihrer SQLite-Datenbank haben.
Aus diesem Grund wird davon abgeraten, SQLite in Produktionsumgebungen
einzusetzen.

Falls Bacula beim Start mit dem folgenden Fehler abbricht:

\footnotesize
\begin{alltt}
Using default Catalog name=MyCatalog DB=bacula
Could not open database "bacula".
sqlite.c:151 Unable to open Database=/var/lib/bacula/bacula.db.
ERR=malformed database schema - unable to open a temporary database file
for storing temporary tables
\end{alltt}
\normalsize

liegt es meistens daran, dass SQLite versucht, die Datenbank-Datei
im aktuellen Verzeichnis zu erstellen. Falls das fehlschl\"{a}gt,
weil Bacula keine Schreibrechte f\"{u}r dieses Verzeichnis besitzt,
kommt es zu diesem Fehler. Als Abhilfe sollten Sie Bacula in einem
Verzeichnis starten wo es Schreibrechte besitzt.

\section{Re-Initialisierung der Katalog-Datenbank}
\index[general]{Datenbank!Re-Initialisierung der Katalog- }
\index[general]{Re-Initialisierung der Katalog-Datenbank }

Nachdem Sie einige anf\"{a}ngliche Tests mit Bacula gemacht haben, wollen
Sie eventuell Ihre Katalog-Datenbank komplett leeren, um alle gelaufenen
Test-Backups aus der Datenbank zu entfernen. Um das zu erreichen,
tun Sie folgendes:

\footnotesize
\begin{alltt}
  cd <install-directory>
  ./drop_bacula_tables
  ./make_bacula_tables
\end{alltt}
\normalsize

Bitte bedenken Sie, dass dabei alle Informationen unwiderruflich
aus der Datenbank gel\"{o}scht werden. Falls Sie auch beschriebene
Volumes wiederverwenden wollen, m\"{u}ssen Sie das Volume-Label
\"{u}berschreiben damit Bacula sie erneut benutzen kann.
Das erreichen Sie durch:

\footnotesize
\begin{alltt}
   (stop Bacula or unmount the drive)
   mt -f /dev/nst0 rewind
   mt -f /dev/nst0 weof
\end{alltt}
\normalsize

hierbei m\"{u}ssen Sie {\bf /dev/nst0} durch das Device ersetzen,
dem Ihr Tapelaufwerk entspricht.
