Migration von MySQL (TS3 3.0.10) auf MariaDB (TS3 3.0.11.2), so richtig?

  • Überall gibt es Anleitungen wie man von sqlite auf MariaDB migriert (auch hier).


    Eine Anleitung, wie man von MySQL zu MariaDB wechselt bleibt das Internet schuldig. Die einzige und offizielle befindet sich im Teamspeak3-Server. Wer jedoch genauer hinsieht, wird feststellen, dass die Engine nach dem Update nach wie vor MyISAM ist. Teamspeak3 verwendet jedoch bei der Neuinstallation InnoDB, die auch den Standard von MariaDB darstellt.
    Mich verwundert, dass sich keiner um diese Angelegenheit Gedanken macht. Dabei war im Update von 3.0.10 auf 3.0.11 dies einer der wesentlichen Punkte. Nun ich habe sie mir gemacht und versucht das zu ändern. Im Folgenden werde ich meine Schritte niederschreiben.


    Dies soll weniger eine Anleitung, als vielmehr eine Bitte um Korrektur oder Bestätigung sein.


    !!! Achtung dies ist eine Migration vom TS3-Server 3.0.10 zu 3.0.11.2 !!!


    Edit: Ich habe nun nochmal alle files im Teamspeak3-Server angeschaut - vor allem im sql-Ordner - und eine einfachere Methode gefunden.

    • Export:

      Code
      mysqldump –u teamspeak –p --no-create-info teamspeak_db > teamspeakdb.sql


      Diesen Befehl auf dem MySQL-Server ausführen.

    • Erstellen der neuen Datenbank:
      Teamspeak erstellt beim ersten Start eine Datenbank, natürlich startet dann auch der Server und es werden Channels und einiges mehr in die Datenbank geschrieben. Da wir nicht alles haben möchten, darf man nur das erstellen nutzen. Hier bedient sich TS3 ja auch nur der sql-Scripte und das können wir auch.

      Code
      mysql -u teamspeak -p teamspeak_db_neu < /opt/teamspeak/sql/create_mariadb/create_tables.sql


    • Eine Spalte löschen:
      nun kann man entweder über phpmyadmin die Spalte "token_from_client_id" aus der "tokens" Tabelle löschen oder mit folgenden Befehlen.

      Code
      $ mysql -u teamspeak -pMariaDB [(none)]> use teamspeak_db_neu;MariaDB [ts3db]> ALTER TABLE `tokens` DROP `token_from_client_id`;MariaDB [ts3db]> quit;


    • Import:
      nun muss nur noch der Import gemacht werden.

      Code
      mysql -u teamspeak -p teamspeak_db_neu < teamspeakdb.sql


    • Aufräumen und starten:
      Damit man nicht nur alle Rechte und Channels , sondern auch alle Files, wieder hat, müssen diese natürlich noch in den Files-Ordner kopiert werden (z.B. /opt/teamspeak/files/ ). Ich lösche auch noch alle, beim ersten Start erstellten, Logs. Dann kann auch der Server gestartet werden.

    Ich habe den so migrierten Server einige Zeit bereits am Laufen. Fehler habe ich bisher noch keine bemerkt. Ich hoffe das hilft euch.


    An alle mysql/mairadb Gurus, Ich würde mich über ein Feedback und konstruktive Kritik freuen.

    Einmal editiert, zuletzt von whfor ()

    • Offizieller Beitrag

    Hallo,
    vielen Dank für das Teilen deiner Erfahrungen! :)


    Man startet den Server einmal (ein Einloggen ist nicht notwendig) und stoppt ihn auch gleich.

    Code
    sudo supervisorcrl start TS3Server
    sudo supervisorcrl stop TS3Server


    Hier muss erwähnt sein, dass man dazu das Paket "supervisor" installiert und entsprechend konfiguriert haben muss. Nähere Details findet ihr auch hier unter "5. Autostart": TS3Server mit MariaDB Datenbank (Ubunut 14.04) Tutorial


    Ich kann mal schauen, ob es nicht einfacher geht, weil deine Vorgehensweise ist schon sehr eigenartig, da du die Tabellen löschst etc.. Normalerweise kannst du auf dem selben Server einfach die MariaDB drüber installieren und die Daten aus der MySQL werden einfach übernommen. Da ich mir allerdings nicht sicher bin, werde ich das demnächst mal testen.

    Viele Grüße,
    Sebbo

    ---

    DevOps Engineer <3