MySQL Fabric

Oracle veröffentlichte im Mai 2014 MySQL Fabric . MySQL Fabric ist ein Framework das ein MySQL Server um zwei Funktionen erweitert: High Availability (HA) und Sharding. High Availability (HA) wurde bereits teilweise durch MySQL Replication oder durch MySQL Cluster erreicht . Sharding in Form von vertical partitioning existiert bereits seit MySQL 5.1 . MySQL Cluster (MySQL NDB Cluster) versucht durch die in-memory storage engine NDB das horizontal partitioning, jedoch mit der Einschränkung dass alle Daten in den RAM passen müssen. Betreibt man zum Beispiel 4 x MySQL Server mit insgesamt 10 TB (Daten + Index), dann benötigt man laut der Formel in den MySQL FAQ’s ohne Replikation 172 Server mit 64GB RAM. Neben dieser Entschränkung, sind der höhere Konfigurationsaufwand und das neue Schema-Design Hürden, warum MySQL Cluster keiner großen Beliebtheit findet . In vielen Fällen ist es dann einfacher die Logik der horizontalen Partitionierung in die Applikation zu implementieren. MySQL Fabric verwendet einen anderen Sharding-Ansatz. Schauen wir uns das genauer an.

Setup

Versuchen wir ein MySQL Fabric Cluster auf einem Server mit Ubuntu 14.04 aufzusetzen. Ziel soll es sein ein Gefühl dafür zu bekommen, wie hoch der Konfigurationsaufwand ist.

MySQL Fabric

v1.4

MySQL Fabric ist seit 2014 ein Teil von MySQL Utilities v.1.4. MySQL Utilities ist zum einen eine Sammlung von nützlichen Commandline-Befehlen wie z.B. dem Befehl mysqldbcompare, das 2 Datenbanken vergleicht, und zum anderen enthält MySQL Utilities eine python Library.

v1.5

Download die Version Generic Linux mysql-utilities-1.5.6.tar.gz. Zusätzlich wird noch MySQL Connector/Python benötigt. Wie man die installiert steht weiter unten unter v1.6. Die Dokumentation zu MySQL Fabric 1.5 findet man hier. Überprüfen wir nun erstmal ob alles richtig installiert ist.

mysqlfabric manage setup

mysqlfabric manage start

Fabric kann man auch als Daemon starten mit dem Befehl:
mysqlfabric manage start –daemonize
Danach kann eine fabric group erstellt werden.

mysqlfabric group create my_group

Server können so zu einer Gruppe hinzugefügt werden.

mysqlfabric group add my_group localhost:3307

Wenn bei dem Server keine Replikation aktiviert ist, dann erhält man diese Fehlermeldung.

Die Replikation per GTID (Global Transaction Identifier) lässt sich beim Start des Servers so aktivieren.

Fügt man zwei weitere Server hinzu:
– mysqlfabric group add my_group localhost:3308
– mysqlfabric group add my_group localhost:3309
dann lässt sich der Status des clusters mit diesem Befehl prüfen.

Alle Konfigurationen bis hierhin wurden noch nicht aktiviert. Das erfolgt mit:
mysqlfabric group promote my_group

Danach sieht man dass nun ein Server der Master ist.

Alles Weitere findet man in der MySQL Fabric Quick Start Dokumentation.

v1.6

Seit der MySQL Utilities Version 1.6 ist MySQL Fabric kein Teil mehr dieser, sondern ein eigenes Paket. Es hat nun seine eigene Dokumentation und Downloadbereich. MySQL Fabric v1.6 benötigt MySQL Instanzen ab der Version 5.6.17. MySQL Fabric v1.6 ist gerade (3. Januar 2016) nur für den Testbetrieb geeignet – produktiv sollte es nicht eingesetzt werden.

Herunterladen kann man MySQL Fabric v1.6 hier. Die Installation ist einfach und in den MySQL Docs beschrieben. Zusätzlich muss der mysql-connector-python aktualisiert werden. Dazu muss man das mysql apt repo installieren.

MySQL Fabric user auf allen Instanzen anlegen und config unter /etc/mysql/fabric.cnf bearbeiten, wie in der Fabric 1.6 Dokumentation beschrieben. Dann mit mysqlfabric manage setup das cluster anlegen.

Danach gibt es eine neue Tabelle mysql_fabric auf localhost:3306. Mit mysqlfabric manage start lässt sich fabric starten, leider gibt es wohl noch auf ubuntu einen Bug.

MySQL Instanzen

Installieren wir erstmal mit puppet 4 MySQL 5.6 Instanzen. Wie man die benötigten puppet module mysql und sdb_mysql installiert, steht hier.

PHP Client

Für PHP existiert eine Kurzanleitung die beschreibt, wie man in MySQL Fabric eine Tabelle anlegt, einen Datensatz einfügt und diesen ausliest.

PHP: MySQL Fabric – Manual

Literatur

quora.com. (2012, September 5). Why isn’t MySQL Cluster more popular than either NoSQL solutions or hand-sharded MySQL configurations? - Quora. Retrieved October 18, 2015, from https://www.quora.com/Why-isnt-MySQL-Cluster-more-popular-than-either-NoSQL-solutions-or-hand-sharded-MySQL-configurations
mysql.com. (2015). MySQL :: MySQL 5.7 Reference Manual :: 18 Partitioning. Retrieved October 18, 2015, from https://dev.mysql.com/doc/refman/5.7/en/partitioning.html
mysql.com. (2015). MySQL :: MySQL 5.6 Reference Manual :: A.10 MySQL 5.6 FAQ: MySQL Cluster. Retrieved October 18, 2015, from http://dev.mysql.com/doc/refman/5.6/en/faqs-mysql-cluster.html#qandaitem-A-10-1-10
mysql.com. (2015). MySQL :: MySQL 5.7 Reference Manual :: 16 High Availability and Scalability. Retrieved October 18, 2015, from https://dev.mysql.com/doc/refman/5.7/en/ha-overview.html
Oracle. (2014, May 27). Oracle Introduces MySQL Fabric, Simplifying High Availability and Scalability with MySQL. Retrieved from http://www.oracle.com/us/corporate/press/2208808

Schreibe einen Kommentar

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