MariaDB-Galera auf dem Banana Pi installieren

MariaDB-Galera auf dem Banana Pi installieren war gar nicht so einfach. Fertige Pakete mit Galera support habe ich nicht gefunden und wenn waren sie Jahre alt. Also habe ich mich daran gemacht MariaDB und Galera selbst zu übersetzen und zu installieren. Mein Ziel ist es auf meinem Banana-Pi-Cluster einen MariaDB-Cluster mit Galera und einem HAProxy zu installieren und zu schauen wie sich die Performance gegenüber einer einzelnen Installation verändert.

Die Voraussetzungen schaffen

Im ersten Schritt holen wir uns die Quelldateien mit

git clone https://github.com/mariadb/serverCode-Sprache: PHP (php)

. Danach haben wir die Dateien im Verzeichnis „server“. Dann werden die Quellen zu Galera mit

cd server; git checkout 10.0-galeraCode-Sprache: CSS (css)

herunter geladen und dann die Quellen zum Galera-Plugin an sich

cd..; git clone https://github.com/codership/galera.gitCode-Sprache: PHP (php)

Bevor wir jetzt mit der eigentlichen Übersetzung der Programme beginnen installieren wir noch die Abhängigkeiten für die beiden Pakete.

Maria DB benötigt die folgenden zusätzlichen Pakete:

apt-get install bison libncurses-dev libxml2-devCode-Sprache: JavaScript (javascript)

Galera benötigt die folgenden zusätzlichen Pakete:

apt-get install scons libboost-dev libboost-program-options-dev checkCode-Sprache: JavaScript (javascript)

MariaDB kompilieren und installieren

Jetzt übersetzen wir zuerst den Server. Dazu wechseln wir in das server Verzeichnis und setzen folgende Befehle ab:

cmake -DWITH_WSREP=ON -DWITH_INNODB_DISALLOW_WRITES=ON ./
make PREFIX=/usr/local 
make PREFIX=/usr/local install  
Code-Sprache: JavaScript (javascript)

Das dauert dann 1-2 Stunden.

Galera kompilieren und installieren

Danach wechseln wir in das galera-Verzeichnis und starten den Übersetzungsvorgang mit den Befehlen

export CXXFLAGS=-I/root/server/wsrep;sconsCode-Sprache: JavaScript (javascript)

Nach ca. 70 Minuten ist auch das Galera-Plugin übersetzt. Erfolgreich war der Vorgang, wenn die Datei libgalera_smm.so existiert.

Jetzt kopieren wir die Bibliothek noch in den zugehörigen MariaDB-Ordner

cp libgalera_smm.so /usr/local/mysql/lib/

.

MariaDB konfigurieren und starten

zuerst legen wir eine Gruppe und einen User für MariaDB an.

groupadd mysql; useradd -g mysql mysql

Dann initialisieren wir die Datenbank.

cd /usr/local/mysql
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/dataCode-Sprache: JavaScript (javascript)

Die Datenbank wird im Verzeichnis /usr/local/mysql/data abgelegt.

Im nächsten Schritt passen wir die Berechtigungen der Verzeichnisse an.

chown -R mysql /usr/local/mysql
chgrp -R mysql /usr/local/mysql

Um die Datenbank beim Start des Banana Pi automatisch zu starten richten wir ein Start-Stop-Skript ein.

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld; update-rc.d mysqld defaults
update-rc.d mysqld enable
service mysqld start

Der letzte Befehl fügt das Skript zum Dienstmanager hinzu und sorgt dafür, dass mysql beim Start des Banana Pi automatisch gestartet wird.

Jetzt können wir schon mal testen, ob die Datenbank auch funktioniert. Einfach mit /usr/local/mysql/bin/mysql mit der Datenbank verbinden und z.B. ein „show databases;“ eingeben. Wenn das klappt stoppen wir die Datenbank wieder mit

service mysqld stop

MariaDB und Galery konfigurieren

Die Konfigurationsdatei liegt unter /etc/mysql/my.cnf und hat bei mir folgenden Inhalt:

[client]
 port        = 3306
 socket        = /var/run/mysqld/mysqld.sock
 [mysqld_safe]
 socket        = /var/run/mysqld/mysqld.sock
 nice        = 0
 [mysqld]
 #
 * Basic Settings
 #
 user        = mysql
 pid-file    = /var/run/mysqld/mysqld.pid
 socket        = /var/run/mysqld/mysqld.sock
 port        = 3306
 basedir        = /usr/local/mysql
 datadir        = /usr/local/mysql/data
 tmpdir        = /tmp
 lc-messages-dir    = /usr/local/mysql/share
 skip-external-locking
 Galera settings
 binlog_format=ROW
 bind-address=0.0.0.0
 default_storage_engine=innodb
 innodb_autoinc_lock_mode=2
 innodb_flush_log_at_trx_commit=0
 innodb_buffer_pool_size=122M
 wsrep_on=ON
 wsrep_provider=/usr/local/mysql/lib/libgalera_smm.so
 wsrep_provider_options="gcache.size=300M; gcache.page_size=300M"
 wsrep_cluster_name="BananaGalera"
 wsrep_cluster_address="gcomm://192.168.0.2, 192.168.0.3"
 wsrep_sst_method=rsync
 change the next two lines per node
 wsrep_node_name=Node1
 wsrep_node_address="192.168.0.1"
 * Fine Tuning for Banana Pi
 key_buffer        = 16M
 max_allowed_packet    = 1M
 thread_stack        = 192K
 thread_cache_size       = 8
 myisam-recover          = BACKUP
 max_connections         = 10
 max_user_connections    = 10
 table_open_cache        = 64
 sort_buffer_size    = 512k
 net_buffer_length    = 8k
 read_buffer_size    = 256k
 read_rnd_buffer_size     = 512K
 myisam_sort_buffer_size = 8M
 query_cache_limit    = 1M
 query_cache_size        = 16M
 log_error = /var/log/mysql/error.log
 expire_logs_days    = 10
 max_binlog_size         = 100M
 [mysqldump]
 quick
 quote-names
 max_allowed_packet    = 16M
 [isamchk]
 key_buffer        = 16M
 !includedir /etc/mysql/conf.d/

Galera starten

Um Galera zu starten verwendet man den Befehl

service mysqld bootstrap

Nach dem Start kann man testen, ob Galera auch läuft indem man zuerst /usr/local/mysql/bin/mysql aufruft und dann den Befehl

SHOW STATUS LIKE 'wsrep_%';Code-Sprache: JavaScript (javascript)

eingibt. Man sieht dann alle Parameter, die für Galera hinterlegt sind. Wenn der Parameter wsrep_ready den Wert ON hat bedeutet das der Knoten ist betriebsbereit.
Der Parameter wsrep_local_state_comment sollte den Wert Synced haben und der Parameter wsrep_cluster_size gibt die Anzahl der Knoten im Cluster an.

MariaDB und Galera auf weiteren Knoten einrichten

Damit wir nicht auf jedem Knoten den ganzen stundenlangen Übersetzungsvorgang abwarten müssen machen wir uns jetzt ein Paket mit den benötigten Dateien, dass wir dann auf die anderen Knoten kopieren und auspacken.

tar cvzf mariadb-galera-node-package.tgz /usr/local/mysql /etc/mysql /etc/init.d/mysqld

Dann kopiert man die Datei auf die anderen Knoten (z.B. mit scp oder per ftp).
Und packen sie im root Verzeichnis wieder aus mit

tar xvzf mariadb-galera-node-package.tgzCode-Sprache: CSS (css)

.

Zur endgültigen Einrichtung führen wir dann noch folgende Schritte auf jedem Knoten aus:

rm mariadb-galera-node-package.tgz
rm -rf /usr/local/mysql/data/*
groupadd mysql; useradd -g mysql mysql
cd /usr/local/mysql; /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
chown -R mysql /usr/local/mysql; chgrp -R mysql /usr/local/mysql
chmod +x /etc/init.d/mysqld; update-rc.d mysqld defaults; update-rc.d mysqld enable
# die Datei /etc/mysql/my.cnf editieren und die beiden Zeilen
# wsrep_node_name=Node1
# wsrep_node_address="192.168.0.1"
# auf jeden Node anpassen

# ACHTUNG die weiteren Knoten dürfen nicht mit bootstrap gestartet werden
service mysqld start 

Wie oben beschrieben kann man durch Abfrage des Parameters wsrep_cluster_size feststellen wie viele Knoten mit dem Cluster verbunden sind und so überprüfen, ob sie auch jeder Knoten dem Verbund angeschlossen hat.

Den Cluster testen

Abschließend führen wir einen kleinen Test durch, um zu schauen, ob Tabellen wirklich auf jedem Knoten verfügbar sind.

Auf Knoten 1 starten wir /usr/local/mysql/bin/mysql und geben ein:

create database dbtest;
use dbtest;
create table table1 ( name int primary key, value varchar(30) ) ENGINE=InnoDB;
insert into table1 values(1,'Apfel');
insert into table1 values(2,'Birne');
Code-Sprache: PHP (php)

Dann melden wir uns auf den anderen Knoten an starten wiederum /usr/local/mysql/bin/mysql und schauen uns die Tabelle an mit:

use dbtest;
select * from table1;
Code-Sprache: PHP (php)

Werden uns die beiden angelegten Datensätze angezeigt, ist alles in Ordnung.

MariaDB-Galera auf dem Banana Pi installieren lies sich dann doch meistern. Man muss allerdings ein wenig Geduld bei den lagen Compile-Zeiten mitbringen und ein bisschen tüfteln.

Teile diesen Beitrag

1 Kommentar zu „MariaDB-Galera auf dem Banana Pi installieren“

  1. Pingback: Einen Proxy für den Galera-Cluster

Kommentar verfassen

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

:bye: 
:good: 
:negative: 
:scratch: 
:wacko: 
:yahoo: 
B-) 
mehr...
 


Diese Seite verwendet Cookies. Mit der Nutzung von tuxlog erklärst Du Dich mit der Verwendung von Cookies einverstanden. Detaillierte Informationen über die Verwendung von Cookies auf dieser Website findest Du in der Datenschutzerklärung.

Nach oben scrollen