Kompilieren von MySQL 5.5 unter Debian 6.0 (Debug-Version)

Ziel

Dieser Blogeintrag beschäftigt sich mit der Kompilierung und Einrichtung von MySQL 5.5 unter Debian 6.0.2 Zusätzlich wird gezeigt, wie man die Debug Optionen der MySQL Datenbank aktivieren kann. Bei einer vorkompilieren MySQL Version, schlägt das Akivieren des Session Tracings mit der folgenden Fehlermeldung fehl:

mysql: ERROR: Option 'debug' used, but is disabled

Das Mitschreiben eines Trace Files kann zum Beispiel Sinn machen, wenn der MySQL Deamon ohne erkennbaren Grund abbricht. Weitere Informationen zum Debuggen eines MySQL Servers finden sich hier.

 

Vorraussetzungen

Dieses Tutorial setzt die Installation einer Debian 6.0.x Version voraus. Spezielle Anforderungen an die Installation gibt es nicht.

 

Kompilieren von CMake

Für das Kompilieren von MySQL verwende ich das Open-Source und plattformübergreifende Build Werkzeug CMake.

Bevor CMake kompiliert werden kann müssen zunächst weitere Pakete installiert werden.

root@eden:~# aptitude install g++ ncurses-dev

Download des Source Codes von der CMake Homepage.

root@eden:~# cd /tmp root@eden:~# wget http://www.cmake.org/files/v2.8/cmake-2.8.5.tar.gz

Entpacken und Kompileren von CMake

root@eden:~# tar xzf cmake-2.8.5.tar.gz root@eden:~# cd cmake-2.8.5 root@eden:~# ./configure root@eden:~# make  root@eden:~# make install

Überprüfung der kompilierten Version

root@eden:~# cmake -version cmake version 2.8.5

Tipp: CMake kann unter Debian auch mithilfe von aptitude (aptitude install cmake) installiert werden. Auf anderen Systemen, wie z.B. CentOS 5.x steht kein vorgefertiges Paket zur Verfügung. 

 

Komplieren von MySQL 5.5

In diesem Schritt wird nun MySQL mithilfe von CMake kompiliert. Bevor dies aber durchgeführt werden kann, müssen zunächst ein paar Voraussetzungen erfüllt sein.

 

Der MySQL Daemon läuft in der Standardinstallation als Benutzer mysql. Dies möchte ich beibehalten und lege zunächst den Benutzer und eine gleichnamige Gruppe an.

root@eden:~# useradd mysql root@eden:~# groupadd mysql

Anschließend werden die Verzeichnisse für den MySQL Server verwendet. Bei der Wahl der Verzeichnisse orientiere ich mich an den Standardverzeichnissen.

Pfad Aufgabe Benutzer Gruppe Rechte Manuell angelegt?
/usr/local/mysql Basis Verzeichnis des MySQL Servers root staff 755 Nein
/var/run/mysqld Speicherort der UNIX Socket Datei mysql root 755 Ja
/var/lib/mysql Datenverzeichnis des MySQL Servers mysql mysql 700 Ja
root@eden:~# mkdir -p /var/run/mysqld root@eden:~# chown -R mysql:root /var/run/mysqld root@eden:~# chmod -R 755 /var/run/mysqld root@eden:~# mkdir -p /var/lib/mysql root@eden:~# chown -R mysql:mysql /var/lib/mysql root@eden:~# chmod -R 700 /var/lib/mysql 

Als letzte Voraussetzung müssen die folgenden Pakete nachinstalliert werden.

root@eden:~# aptitude install libaio-dev bison

Nun wird der MySQL Source Code über die MySQL Homepage heruntergeladen und entpackt.

root@eden:~# cd /tmp root@eden:~# wget http://www.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.15.tar.gz/from/http://ftp.gwdg.de/pub/misc/mysql/ -O mysql-5.5.15.tar.gz root@eden:~# tar zcf mysql-5.5.15.tar.gz

MySQL kann nun kompiliert werden. Für das Aktivieren der Debug Optionen muss der Parameter -DWITH_DEBUG auf 1 gesetzt werden.

root@eden:~# cd mysql-5.5.15  root@eden:~# cmake . -DINSTALL_LAYOUT=STANDALONE -DWITH_DEBUG=1 \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_UNIX_ADDR=/var/run/mysqld/mysql.sock \ -DMYSQL_DATADIR=/var/lib/mysql  root@eden:~# make root@eden:~# make install

Der Kompiliervorgang ist abgeschlossen und die Version kann überprüft werden.

root@eden:~# export PATH=/usr/local/mysql/bin:$PATH  root@eden:~# mysqld -V root@eden:~# mysqld  Ver 5.5.15-debug for Linux on x86_64 (Source distribution)

Damit nicht jedes Mal die PATH Variable angepasst werden muss, wird die Standardprofil Datei erweitert.

root@eden:~# vi /etc/profile export PATH=/usr/local/mysql/bin:$PATH

Im nächsten Schritt müssen das MySQL Data Directory und die Systemtabellen angelegt werden.

root@eden:~# /usr/local/mysql/scripts/mysql_install_db --user=mysql --ldata=/var/lib/mysql --basedir=/usr/local/mysql

Zur Absicherung der neuen MySQL Server Installation wird das Skript mysql_secure_installation ausgeführt. Dieses setzt unter Anderem ein Passwort für den root Benutzer, entfernt den anoymen Benutzer und passt Rechte an.

root@eden:~# /usr/local/mysql/bin/mysql_secure_installation

Der MySQL Server verwendet als Konfigurationsdatei die Datei my.cnf im Verzeichnis /etc. Als Grundlage für diese Datei verwende ich die Beispieldatei my-small.cnf, die beim MySQL Server mitgeliefert wird.

root@eden:~# cp /usr/local/mysql/support-files/my-small.cnf /etc/mysql/my.cnf

Damit automatisch das Mitschreiben einer neuen MySQL Session aktiviert wird, passe ich entsprechend die my.cnf Datei an. In diesem Fall wird das Tracefile unter /tmp/mysqld_debug.trace gespeichert.

root@eden:~# vi /etc/my.cnf debug=d,info,error,query,general,where:O,/tmp/mysqld_debug.trace

Hinweis: Das Tracefile kann sehr groß werden. Über die Angabe der verschiedenen Debug-Level (z.b. info oder error) kann der Umfang des Tracefiles reduziert werden. Für weitere Informationen siehe hier.

 

Für das Starten und Stoppen des MySQL Deamons verwende ich das mitgelieferte Init Skript .

root@eden:~# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

Die Konfiguration ist abgeschlossen und der MySQL Deamon kann gestartet werden.

root@eden:~# /etc/init.d/mysql start Starting MySQL ...

Für das Testen des Debugging melde ich mich an der Datenbank an und erstelle eine Testdatenbank mit den Namen debugtest.

root@eden:~# mysql -u root -p mysql> CREATE DATABASE debugtest; mysql> EXIT;

Nun überprüfe ich das Tracefile /tmp/mysqld_debug.trace.

root@eden:~# more /tmp/mysqld_debug.trace ... dispatch_command: info: query ready net_send_eof: info: EOF sent, so no more error sending allowed do_command: info: vio_read returned -1  errno: 11 do_command: info: Command on socket (20) = 3 (Query) dispatch_command: info: packet: ''; command: 3 dispatch_command: query: CREATE DATABASE debugtest ...

Wie man sieht funktioniert das Mitschreiben der Datenbankaktivittäten einwandfrei.

Leave a Reply

Your email address will not be published.