Umstellung von SQLite auf MySQL

Kategorie: LiveConfig
Erstellt: 09.04.2020
Aktualisiert: 16.09.2024

Sobald auf einer LiveConfig-Installation mehr als rund 400-500 Hostingverträge angelegt sind, ist es meist effizienter, die interne LiveConfig-Datenbank mit MySQL bzw. MariaDB statt mit der standardmäßig genutzten SQLite-Datenbank zu betreiben.

Diese Anleitung beschreibt die notwendigen Schritte, um die Daten von SQLite in eine MySQL-/MariaDB-Datenbank zu migrieren.

Schritt 1: Export der SQLite-Datenbank

Zum Export der Daten aus SQLite laden Sie das Tool lcdbdump herunter und erzeugen Sie damit einen MySQL-kompatiblen Dump der SQLite-Datenbank:

root@srv:~# wget http://download.liveconfig.com/tools/lcdbdump
root@srv:~# chmod 755 lcdbdump
root@srv:~# ./lcdbdump /var/lib/liveconfig/liveconfig.db dump.sql

Schritt 2: Anlegen der MySQL-Datenbank

Melden Sie sich als root-Benutzer an der MySQL-Konsole an und erzeugen Sie einen neuen Benutzer und eine neue Datenbank für LiveConfig. Sie können dafür einen beliebigen Benutzer- und Datenbanknamen wählen, aber verwenden Sie unbedingt ein sicheres (!) Passwort:

mysql> CREATE USER 'liveconfig'@'localhost' IDENTIFIED BY 'SaFePaSsWoRd';
mysql> CREATE DATABASE LIVECONFIG;
mysql> GRANT ALL PRIVILEGES ON LIVECONFIG.* TO 'liveconfig'@'localhost';

Falls MySQL auf einem anderen Server als LiveConfig läuft, tragen Sie statt localhost die entsprechende IP-Adresse ein.

Nun importieren Sie die vorbereitete MySQL-Tabellenstruktur. Im Verzeichnis /usr/share/doc/liveconfig liegt diese als komprimierter SQL-Dump bereit:

root@srv:~# zcat /usr/share/doc/liveconfig/db-mysql.sql.gz | mysql -u liveconfig -p -h localhost LIVECONFIG
Enter password: ************

Schritt 3: Import der Daten

Importieren Sie nun die in Schritt 1 exportierten Daten in MySQL:

root@srv:~# mysql -u liveconfig -p -h localhost LIVECONFIG < dump.sql
Enter password: ************

Schritt 4: Verwenden der MySQL-Datenbank

Öffnen Sie die Konfigurationsdatei /etc/liveconfig/liveconfig.conf und bearbeiten die Datenbankeinstellungen, z.B.:

db_driver   = mysql
db_host     = localhost
db_name     = LIVECONFIG
db_user     = liveconfig
db_password = SaFePaSsWoRd

Starten Sie LiveConfig nun neu (service liveconfig restart). Falls LiveConfig nicht startet, werfen Sie einen Blick in die Logdatei (/var/log/liveconfig/liveconfig.log).

Von MySQL zu SQLite wechseln

Sollten Sie (aus welchen Gründen auch immer) von einer MySQL-Datenbank zurück auf SQLite wechseln wollen (oder müssen), gehen Sie bitte wie folgt vor:

1. SQLite-Datenbankschema aktualisieren

Die SQLite-Datenbank von LiveConfig liegt immer unter /var/lib/liveconfig/liveconfig.db. Wenn Sie LiveConfig längere Zeit mit MySQL genutzt haben, muss das SQLite-Datenbankschema aktualisiert werden. Das geht recht einfach:

  • beenden Sie LiveConfig (service liveconfig stop)
  • ändern Sie in der /etc/liveconfig/liveconfig.conf die Datenbank zurück auf SQLite (db_driver = sqlite)
  • starten Sie LiveConfig (service liveconfig start)
  • beenden Sie LiveConfig wieder (service liveconfig stop).

Sollte es Probleme gegeben haben, prüfen Sie die Log-Datei unter /var/log/liveconfig/liveconfig.log.

2. Export der MySQL-Datenbank

Exportieren Sie nun die MySQL-Daten. Den MySQL-Benutzernamen und -Passwort passen Sie entsprechend aus der Konfiguration aus der liveconfig.conf an:

root@srv:~# echo "PRAGMA foreign_keys=off;" >dump.sql
root@srv:~# echo "PRAGMA synchronous=off;" >>dump.sql
root@srv:~# echo "BEGIN;" >>dump.sql
root@srv:~# mysqldump --no-create-info --complete-insert --compact --skip-extended-insert -u liveconfig -p LIVECONFIG >>dump.sql
root@srv:~# echo "COMMIT;" >>dump.sql
root@srv:~# sed -i -e 's/\\'\''/'\'''\''/g' -e 's/\\r/\r/g' -e 's/\\n/\n/g' dump.sql

3. Neue SQLite-Datenbank anlegen

Mit folgenden Befehlen legen Sie eine neue SQLite-Datenbank an und importieren die Daten:

root@srv:~# sqlite3 /var/lib/liveconfig/liveconfig.db '.schema' | grep -v 'sqlite_' >schema.sql
root@srv:~# sqlite3 liveconfig-neu.db <schema.sql
root@srv:~# sqlite3 liveconfig-neu.db <dump.sql
root@srv:~# chmod 0600 liveconfig-neu.db
root@srv:~# chown liveconfig:liveconfig liveconfig-neu.db

Anschließend können Sie die Datei /var/lib/liveconfig/liveconfig.db durch die neu erstellte liveconfig-neu.db ersetzen.

Sollte es bei einem der Schritte Warnungen oder Fehlermeldungen geben, wenden Sie sich am besten damit an support@liveconfig.com.