Grafana SQLite Datenbank in eine MySQL Datenbank migrieren

In diesem Artikel beschreibe ich kurz, wie wir eine laufende Grafana Instanz mit einer SQLite Datenbank in eine MySQL Datenbank umziehen können.

Zuerst müssen wir auf unserem MySQL-Server eine Datenbank mit einem Benutzer anlegen, der vollen Zugriff auf die Datenbank besitzt.

create database grafana;
CREATE USER 'grafana'@'localhost' IDENTIFIED BY 'P@ssw0rd123!';
grant all privileges on grafana.* to 'grafana'@'localhost';
flush privileges;
quit

Im nächsten Schritt laden wir uns das Datenbank-Migrations-Tool herunter, welches uns dann nachher eine entsprechende SQL-Dump-Datei erstellt, welche wir dann einspielen können.

cd /opt
git clone https://github.com/grafana/database-migrator.git

Jetzt müssen wir einmal unseren Grafana-Server einmal stoppen und dann unsere grafana.db SQLite Datenbankdatei in einen MySQL-Dump konvertieren.

systemctl stop grafana-server
./sqlitedump.sh /var/lib/grafana/grafana.db > /opt/dump.sql

Damit unser Grafana-Server nach dem Einspielen der Daten auch eine Verbindung zur neuen Datenbank herstellen kann, müssen wir die ini Datei wie folgt anpassen.

#################################### Database ####################################
[database]
# You can configure the database connection by specifying type, host, name, user and password
# as separate properties or as on string using the url properties.

# Either "mysql", "postgres" or "sqlite3", it's your choice
type = mysql
host = mysql-server:3306
name = grafana
user = grafana
# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
password = P@ssw0rd123!

Jetzt müssen wir einmal den Grafana -Server starten und im Anschluss wieder stoppen. Damit soll Grafana einmal die Tabellen anlegen die benötigt werden.

systemctl stop grafana-server && systemctl start grafana-server

Zum Abschluss müssen die Daten einmal importiert werden. Der einfachste Weg wäre hier über eine phpMyAdmin Installation die Daten so in die Datenbank zu importieren.