Mit MySQL-Proxy Lastenverteilung auf mehere SQL Server

fehlt wasgeht sogutsehr guthat geholfen (No Ratings Yet)
Loading ... Loading ...
Werbung




mysql_proxy

MySQL-Proxy, ein eher unbekannter Helfer, verteilt SQL Anfragen auf mehrere Server und hilft so zur Lastenverteilung der Server.  Aber der Proxy kann noch mehr. Er kann auch die Querys verändern und somit das Verhalten der Server beeinflussen – bis hin zu den Ausgaben an die Webanwendung.

MySQL Proxy im Einsatz

MySQL-Proxy bietet mehrere Einsatzmöglichkeiten, die für Administratoren größerer und auch kleinerer Webseiten interessant sein können. Er bietet

  • Load Balancing Möglichkeiten
  • Failover Funktion
  • Query Analyse
  • Query Filterung und Modifizierung

Der Proxy wird vor den oder die MySQL Server geschaltet und verwaltet von da an die SQL-Abfragen. Hierbei leitet er sie entweder an den SQL Server weiter oder gibt die Antworten vom Server an die Webanwendung zurück.

MySQL-Proxy set auf die LUA-Scriptsprache auf, die nach einer Einarbeitungsphase ein mächtiges Werkzeug ist, die SQL Querys zu beeinflussen. Ein Beispiel ist, die Webanwendung schickt alle SQL Anfragen an nur einen MySQL-Port, nämlich den MySQL-Proxy. Dieser kann aber die Querys selektieren und alle SELECT Anweisungen an einen MySQL-Slave schicken um damit den Mysql-Master erheblich zu entlasten.

Dabei kann der MySQL-Proxy anhand des Round-Robin-Systems die Anfragen an mehrere SQL-Server verteilen. Dieses Thema Connection-Pooling und Load Balancing ist im MySQL-Proxy bereites vorgesehen.

MySQL-Proxy anwenden

Zunächst muss der Proxy für MySQL installiert werden. Er ist bereits im Debian Repository enthalten

# aptitude install mysql-proxy

Nun muss noch der Port des laufenden MySQL Servers in der Konfiguration geändert werden
/etc/mysql/my.cnf

port = 4444

Nun muss der MySQL-Proxy aktiviert werden
/etc/default/mysql-proxy

ENABLED="true"

und die Optionen angepasst werden

OPTIONS="--proxy-lua-script=/usr/share/mysql-proxy/rw-splitting.lua
          --proxy-address=192.168.0.100:3306
          --proxy-backend-addresses=127.0.0.1:4444
          --proxy-read-only-backend-addresses=192.168.0.120:3306
          --proxy-read-only-backend-addresses=192.168.0.121:3306"

In dieser Konfiguration agiert der MySQL-Proxy auf der IP 192.168.0.100 und dem Standart Port 3306.
Hier ist schon die Load-Balancing von MySQL-Proxy integriert. Der Proxy weiß, dass es einen Master Server gibt, der local auf Port 444 läuft und 2 Slave-Server, von denen nur gelesen werden darf, nämlich 192.168.0.120 und 192.168.0.121 auf den Standard Ports.

Nun müssen die Konfigurationen aktiviert werden

# /etc/init.d/mysqld restart
# /etc/init.d/mysql-proxy start

Nun sollten alle SQL Abfragen über den Proxy laufen. Dieser gibt die Schreib-Anweisungen an den lokalen Server und verteilt die lesenden Anfragen auf die 2 read-only Server.

Das Skript “rw-splitting.lua” ist bereits in der Standard-Installation von MySQL-Proxy enthalten.

Nun kann sich der Server-Administrator an due LUA-Sprache machen. Diese bietet eine Vielzahl von Möglichkeiten, auf die ich hier nicht näher eingehen möchte, da diese sehr umfangreich ist und ich in diesem Howto dessen nicht gerecht werden würde.

Aber so könnte zumindest ein Load-Balancing mit dem MySQL-Proxy verwirklicht werden, was schon eine Entlastung der SQL Server zur Folge hat.

bisherige Suchbegriffe:

  • mysql proxy


Werbung


Hinterlasse eine Antwort

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


*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>