Galera Cluster mit Ubuntu 12.04 64bit und MySQL 5.5 – Teil 1

Warum  Ubuntu? Weil ich mal etwas einigermaßen aktuelles Testen wollte ;-). Tatsächlich lief mein erster Test mit Galera und MySQL 5.1 unter drei Debian Nodes ohne großen Aufwand. Ich beschränke mich auf die Installation des ersten Nodes, da die Installation eines weiteren Nodes nur minimal abweicht. Zum Testen sollte man 3-4 Maschinen zur Verfügung haben.

Einige Daten über Galera von der Entwicklerseite:

MySQL/Galera is synchronous multi-master cluster for MySQL/InnoDB database, having features like:

  • Synchronous replication
  • Active-active multi-master topology
  • Read and write to any cluster node
  • Automatic membership control, failed nodes drop from the cluster
  • Automatic node joining
  • True parallel replication, on row level
  • Direct client connections, native MySQL look & feel

Benefits

These features yield un-seen benefits for a DBMS clustering solution:

  • No slave lag
  • No lost transactions
  • Both read and write scalability
  • Smaller client latencies

Von codership.com/products/mysql_galera die benötigten Pakete laden, zur Zeit:

galera-23.2.1-amd64.deb
mysql-server-wsrep-5.5.23-23.6-amd64.deb

Das System vorbereiten:

aptitude install libaio1 libssl0.9.8 libdbi-perl libdbd-mysql-perl mysql-client libmysqlclient18 mysql-common libplrpc-perl libnet-daemon-perl

Galera und Mysql installieren:

dpkg -i galera-23.2.1-amd64.deb mysql-server-wsrep-5.5.23-23.6-amd64.deb

In der /etc/mysql/my.cnf

bind-address           = 127.0.0.1

anpassen bzw. auskommentieren.

Mysql starten

/etc/init.d/mysql start

mysqladmin -u root password 'superpassword'

mysqladmin -u root -p -h hostname password 'superpassword'

Ich habe einen User fuer die Repliaktion auf jedem Node angelegt. Zum testen kann man natürlich auch einfach den Mysqladminuser nehmen


mysql> SET wsrep_on = OFF; grant all on *.* to replikator@'%' identified by 'thisisnotfacebookandimnotyourfriend';

In der /etc/mysql/conf.d/wsrep.cnf

# Full path to wsrep provider library or 'none'
#wsrep_provider=none
wsrep_provider=/usr/lib/galera/libgalera_smm.so

# Logical cluster name. Should be the same for all nodes.
wsrep_cluster_name="imnotshyijusdontlikeyou_cluster"

# Group communication system handle
wsrep_cluster_address="gcomm://" #Dies nur beim ersten Server, bei den anderen trägt man dort die Adresse eines anderen Nodes ein. Spaeter sollte man die IP auch beim ersten Node anpassen

# Group communication system handle# SST authentication string. This will be used to send SST to joining nodes.
# Depends on SST method. For mysqldump method it is root:
wsrep_sst_auth=replikatior:thisisnotfacebookandimnotyourfriend #hier muss natuerlich ein user mit den benötigten Rechten eingetragen werden, im Zweifel root

wsrep_cluster_address sollte später nicht leer bleiben.

Danach

/etc/init.d/mysql restart 

Am besten tail -f /varlog/syslog auf den einzelnen Maschinen laufen lassen um zu schauen ob Fehler auftauchen. Zum testen Datenbanken auf den einzelnen Nodes anlegen und mit Daten füllen.

Größtenteils habe ich mich an http://blog.causal.ch/2012/02/installing-mysql-galera-on-debian-60.html orientiert. Empfehlen kann man natürlich generell die Galera Seite und den Artikel im Admin -Magazin 04/2012 über Galera Cluster für Mysql. Die einzelnen Optionen in der/etc/mysql/conf.d/wsrep.cnf sollte man sich nochmal genauer anschauen.    Teil 2 folgt dann (hoffentlich) mit garbd, pen, HAproxy, Splitbrain Problem und ein-zwei mehr Erfahrungen.

Mediawiki Update auf 1.19 und rev_sha1

Wer sein 1.17er oder 1.18er Wiki auf 1.19 bringen will und danach die Meldung

A database query syntax error has occurred. This may indicate a bug in the software. The last attempted database query was:

(SQL query hidden)

from within function "Revision::fetchFromConds". Database returned error "1054: Unknown column 'rev_sha1' in 'field list' (dbserver)".

auf der Startseite des Wikis bekommt, sollte einfach mal probieren anstatt von

php5 maintenance/update.php

das Update via Webinterface zu machen. Zu finden unter
http://wtfismywiki.net/mw-config/index.php
Hat man nur 1-2 Wikis, sicherlich kein Problem, bei einer groesseren Anzahl, leider etwas schwieriger.
Ursache ist wohl, dass die column rev_sha1 im table revisions von update.php nicht mit angelegt wird. Vielleicht betrifft dies Problem auch nur meine Installationen.

Ruckeln beim Fensterverschieben mit Ubuntu 12.04 und compiz

Ich nutze unter anderem eine GT 9800. Nachdem Upgrade auf 12.04 ruckelten plötzlich die Fenster beim verschieben. Geholfen hat ein deaktivieren der Option „Mit VBLANK synchronisieren“ unter dem Compizsettings Manager -> Allgemeine Optionen. Generell hat 12.04 bei mir sehr viele Probleme mitgebracht, z.B. gibt es mit einer TI 550 sehr häufig freezes. Das Problem ist wohl bekannt, aber bisher wurde noch keine Lösung Angeboten.

Postfix Virtual Domain Hosting

Braucht man immer wieder mal,

/etc/postfix/main.cf:
virtual_alias_domains = example.com ...other hosted domains...
virtual_alias_maps = hash:/etc/postfix/virtual

/etc/postfix/virtual:
postmaster@example.com postmaster
info@example.com       joe
sales@example.com      jane
# Uncomment entry below to implement a catch-all address
# @example.com         jim
...virtual aliases for more domains...

postmap /etc/postfix/virtual
/etc/init.d/postfix reload

findet man alles gut erklaert unter http://www.postfix.org/VIRTUAL_README.html

 

 

 

omreport chassis pwrmonitoring

Nachdem ich essen war, liefert omreport ploetzlich:

#omreport chassis pwrmonitoring
Power Consumption Information

Error : Current probes not found

Wodurch auch der check_openmanage Check von Nagos Fehler meldet.  Auch blacklisting diverser Checks von check_openmanage hat nichts gebracht. Also im check_openmanage Skript folgendes auskommentiert:

#    else {
#       @output = @{ run_omreport("$omopt_chassis pwrmonitoring") };
#    }

Gleichzeitig gab es in Goettingen einen Brand mit involvierter Starkstromleitung, ein seltsamer Zufall.

omreport sollte beim Aufruf eigentlich so etwas liefern


#omreport chassis pwrmonitoring
Power Consumption Information

Power Consumption
Index             : 2
Status            : Ok
Probe Name        : System Board System Level
Reading           : 175 W
Warning Threshold : 917 W
Failure Threshold : 966 W

Amperage
PS 1 Current : 0.4 A
PS 2 Current : 0.4 A

Power Headroom
System Instantaneous Headroom : 796 W
System Peak Headroom          : 652 W

Power Tracking Statistics
Statistic               : Energy Consumption
Measurement Start Time  : Fri Mar 25 19:14:50 2011
Measurement Finish Time : Mon Mar 19 13:54:03 2012
Reading                 : 301.8 KWh

Statistic              : System Peak Power
Measurement Start Time : Fri Mar 25 18:58:46 2011
Peak Time              : Fri Mar 25 19:21:18 2011
Peak Reading           : 320 W

Statistic              : System Peak Amperage
Measurement Start Time : Fri Mar 25 18:58:46 2011
Peak Time              : Fri Mar 25 19:20:07 2011
Peak Reading           : 1.4 A

Mal schauen ob man raus finden kann, was da genau im System den Geist aufgegeben hat.

update: Der Brand war Schuld, anscheinend gab s ein „kurzes“ Flackern im Stromnetz.

PDFs exportieren unter Dokuwiki

Das Plugin dw2pdf herunterladen und installieren. Nutzt man als Template Arctic kann man einfach in die main.php

<form method="get" action="<?php wl($ID)?>">
  <div>
    <button type="submit">
      <img src="<?php echo DOKU_BASE?>lib/images/fileicons/pdf.png" alt="PDF Export" />
      Export to PDF
    </button>
    <input type="hidden" name="do" value="export_pdf" />
    <input type="hidden" name="id" value="<?php echo $ID?>" />
  </div>
</form>

einfügen und gut ist. Ich habe es unterhalb von

<div class="left_sidebar">
<?php if(!tpl_sidebar_hide()) { ?>

eingetragen (hängt natürlich von der jeweiligen Konfiguration ab) und finde es sieht ganz brauchbar aus . Wozu man PDF Export im Wiki braucht ist  eine andere Frage.
update (12.06.2013):

Ansonsten geht auch

<html><a href='?do=export_pdf'>Aktuelle Seite als PDF exportieren</a></html>

irgendwo einfügen.

etherpad

Man sollte nicht das offiziele Repository von etherpad nutzen, sondern etherpad direkt vom git Repository runterladen. Das Debian Repository ist veraltet.

git clone git://github.com/ether/pad.git etherpad
cd  etherpad/etherpad
dpkg-buildpackage -us -uc

Die Abhaengigketen sollten natuerlich installiert sein. Das ist alles grosses Gefrickel. Hoffen wir mal, dass etherpad lite schnell von den Funktionen her aufholt.

Link:
http://feeding.cloud.geek.nz/2011/12/installing-etherpad-on-debianubuntu.html

Touchpad ssh

Mein Touchpad hatte den beliebten Riss ueber dem Lautsprecher. Heute kam es wieder repariert zurueck und ich musste alles neu einrichten.
Vor einiger Zeit schon mal bei google+ geschrieben. Leider ist es dort etwas schwer zu finden, daher…

Ssh unter WebOS einrichten ist realtiv einfach. Openssh aus optware installieren, via WebOSQuickInstall auf das Touchpad connecten und dann je nach belieben eine der Loesungen waehlen. Ich habe es ueber „Enabling_non-root_Password_logins_via_SSH_using_the_command_line“ eingerichtet. Ein eigener User mit Passwort ist fuer mich die einfachste Loesung.

Falls ssh nicht starten sollte:
/opt/sbin/sshd -D -p 22
Fehlermeldung anschauen und hostkey anlegen, falls nicht vorhanden.

mysql logs und Replikation

Kommt man in die Situation, dass man raus finden will, was man denn nun genau fuer Mysql Kommandos in den letzten Tagen so ausgefuehrt hat, helfen die binlog Dateien in /var/log/mysql/.

mysqlbinlog mysql-bin.000001

Vorausgesetzt man nutzt log_bin und  STATEMENT als logging Format in der my.cnf . Vorher aber den Zeitstempel der Logdateien anschauen, um die Datensuche etwas einzugrenzen. Nutzt man row-based als Replikationsvefahren hat man keine  Logdateien zum ueberpruefen. Die Frage ob man nun row-based oder statement-based als Verfahren nutzt ist eine andere.  Beide Verfahren, row- und statement-based, haben Ihre Vor- und Nachteile. Man kommt also nicht drumherum sich damit etwas ausgiebiger zu beschaeftigen.

Links zum Thema row-based Replkation:

http://www.databasejournal.com/features/mysql/article.php/3922266/Comparing-MySQL-Statement-Based-and-Row-Based-Replication.htm

http://dev.mysql.com/doc/refman/5.1/de/replication-row-based.html

http://dev.mysql.com/doc/refman/5.1/en/replication-sbr-rbr.html

http://albertech.net/2011/10/upgrading-debian-lenny-to-squeeze-with-mysql-for-row-based-replication/

http://www.ovaistariq.net/528/statement-based-vs-row-based-replication/

http://www.mysqlperformanceblog.com/2010/05/06/debugging-problems-with-row-based-replication/