Kategoria: (MySQL) Autor: Gabrym Data 7 mar 2009

Witajcie po dłuższej przerwie. Zaprezentuję bardzo przydatną aplikację do dzielania ruchu dla baz mysql.
Podczas dużego obciążenie stosujemy replikację w celu jego rozłożenia na wiekszą ilość maszyn.
Co jednak zrobić żeby właściwie zarządzać ruchem.
Dla bazy mysql jest kilka rozwiązań którę to zapenią między innymi – mysql-proxy.
Mysql-proxy oferuje nam:
- monitorowanie ruchu
- analizowanie zapytań
- load balancer
- failover
- filtrowanie
- możliwość modyfikowania wchodzących/wychodzących zapytań
- obsługa socketów
- lua-script do definiowania działania

Przykład:

Jedna z najczęściej stosowana konfiguracji (małe serwisy internetowe). Widać klienta łączącego się z bazą danych na jednym serwerze. W momencie gdy obciążenie maszyny przekracza 50% czas na zmiany które zabezpieczą dalszy rozwój potencjalnej strony. Warto tu wspomnieć o małym bezpieczeństwie takiej konfiguracji – awaria bazy wyłącza dostęp do strony.
Rozkładamy ruch na dwie maszyny w replikacji Master-Slave + proxy.
Pozwoli to także zwiększyć bezpieczęństwo w momencie awarii jednego z serwerów.
Konfigurujemy proxy tak żeby automatycznie przepinało ruch w momencie braku odpowiedzi od serwera.

Parametry startowe:


$ ./mysql-proxy
  --proxy-backend-addresses=127.0.0.1:3306               -- master
  --proxy-read-only-backend-addresses=127.0.0.2:3306     -- slave
  --daemon

Bilans zysków:
+ dla bezpieczeństwa
+ dla stabilności
+ dla elastyczności

Więcej opcje:


$ ./mysql-proxy --help-all
Usage:
  mysql-proxy [OPTION...] - MySQL Proxy

Help Options:
  -?, --help                                          Show help options
  --help-all                                          Show all help options
  --help-admin                                        Show options for the admin-module
  --help-proxy                                        Show options for the proxy-module

admin module
  --admin-address=                         listening address:port of internal admin-server (default: :4041)

proxy-module
  --proxy-address=                         listening address:port of the proxy-server (default: :4040)
  --proxy-read-only-backend-addresses=     address:port of the remote slave-server (default: not set)
  --proxy-backend-addresses=               address:port of the remote backend-servers (default: 127.0.0.1:3306)
  --proxy-skip-profiling                              disables profiling of queries (default: enabled)
  --proxy-fix-bug-25371                               fix bug #25371 (mysqld > 5.1.12) for older libmysql versions
  --proxy-lua-script=                           filename of the lua script (default: not set)
  --no-proxy                                          Don't start proxy-server

Application Options:
  -V, --version                                       Show version
  --daemon                                            Start in daemon-mode
  --pid-file=                                   PID file in case we are started as daemon

Strony warte odwiedzenia:
- strona projektu
http://forge.mysql.com/wiki/MySQL_Proxy
- kod do poprania:

https://launchpad.net/mysql-proxy

- blog jednoego z programistów:
http://jan.kneschke.de/projects/mysql/mysql-proxy/

Odpowiedz
Nick: 
Email: 
WWW: 
Treśą: