Debian Wheezy: Von MySQL zu MariaDB 10.0 migrieren (unattended)

MariaDB ist ein Fork von MySQL und sogar ein echtes „Drop-in Replacement“ für dieses. Ein Umstieg von MySQL auf MariaDB verläuft somit fast immer reibungslos, eine Nachkonfiguration ist nicht notwendig.
In seltenen Fällen und besonders bei Verwendung eigener (Web-)Anwendungen mit MySQL-Backend, rate ich dringlichst einen Blick auf die Kompatibilitätsübersicht.

Eine kurze, eilig übersetzte Zusammenfassung:

  • .frm-Dateien sind binärkompatibel.
  • Alle Client-APIs, Protokolle und „structs“ sind identisch.
  • Alle Dateinamen, Anwendungsdateien, Pfade, Ports, Sockets etc. sind identisch.
  • Alle MySQL-Anschlüsse (PHP, Perl, Python, Java, .NET, MyODBC, Ruby, MySQL C etc.) funktionieren mit MariaDB.
  • Das Paket „mysql-client“ arbeitet mit MariaDB zusammen.
  • Die „shared client library“ ist binärkompatibel mit der MySQL „client library“.
  • Selten gibt es Probleme mit PHP5 und der alten „mysql_connect“-Methode in Verbindung mit MariaDB, hier ein Fix.

Ja, es ist WordPress-kompatibel.

Was macht das Script?

Das Script geht folgendermaßen vor:

  • „python-software-properties“ installieren, um das Repository einfacher hinzuzufügen.
  • Schlüsselbund um den Schlüssel für das MariaDB 10.0 Repository erweitern.
  • Repository aktualisieren, setzen des Root-Passworts für die unbeaufsichtigte Installation.
  • Installation von MariaDB 10.0 – diese entfernt das Paket „mysql-server“! Alle Daten bleiben jedoch erhalten!
  • Log-Datei „migration.log“ im selben Verzeichnis des Scripts

Script und Anleitung

#!/bin/bash
if [ "$(id -u)" != "0" ]; then
    echo "This script must be run as root" 1>&2
    exit 1
fi

EXPECTED_ARGS=1
E_BADARGS=65

if [ $# -ne $EXPECTED_ARGS ]
then
  echo "Usage: `basename $0` SQL_ROOT_PW"
  exit $E_BADARGS
fi

MYSQL_PASS=$1

echo -en "Migrating MySQL to MariaDB...\t\t"
apt-get update >> migration.log 2>&1
apt-get install -y python-software-properties >> migration.log 2>&1
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db >> migration.log 2>&1
add-apt-repository 'deb http://mirror.netcologne.de/mariadb/repo/10.0/debian wheezy main' >> migration.log 2>&1
apt-get update >> migration.log 2>&1
export DEBIAN_FRONTEND=noninteractive
debconf-set-selections <<< "mariadb-server-10.0 mysql-server/root_password password $MYSQL_PASS"
debconf-set-selections <<< "mariadb-server-10.0 mysql-server/root_password_again password $MYSQL_PASS"
apt-get install -y mariadb-server-10.0 >> migration.log 2>&1
if [ $? -ne 0 ] ; then
  echo -e "\e[00;31m ERR\e[00m"
  exit 1
fi
echo -e "\e[00;32m OK\e[00m"

Usage: # ./script.sh SQL_ROOT_PW
Vorab als ausführbar markieren: chmod +x script.sh
Falls Fehler auftreten, „migration.log“ prüfen.

Im Notfall zurück zu MySQL

Sollte das Upgrade nicht funktionieren, kann MySQL im Notfall schnell wiederhergestellt werden. Hier eine Schritt-für-Schritt Beschreibung für ein Downgrade:

service mysql stop
apt-get remove -y mariadb-server mariadb-server-10.0
rm /var/lib/mysql/debian-*
add-apt-repository -r 'deb http://mirror.netcologne.de/mariadb/repo/10.0/debian wheezy main'
apt-get update
export DEBIAN_FRONTEND=text
apt-get install -y mysql-server

6 Antworten auf “Debian Wheezy: Von MySQL zu MariaDB 10.0 migrieren (unattended)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.