Escalabilidade com MySQL Proxy

O MySQL Proxy é uma ferramenta que pode ter muitas finalidades. A mais utilizada é para aumentar a escalabilidade horizontal do MySQL, sem ter que partir para uma Solução de Cluster.
É muito simples utilizar o MySQL Proxy, após ter o Master e Slaves configurados e em sincronia.
Em meu teste, utilizado como POC (Proof Of Concept) para um cliente, utilizei um Master e 2 Slaves, e mais um Servidor como Proxy, todos rodando em VMs com CentOS 5.5.

Veja que estas configurações de que Node está disponível para gravações e leituras, e quais estão disponíveis somente para leituras, são passadas na linha de comando de execução do MySQL Proxy, abaixo.

[root@MySQL-PROXY ~]# /root/mysql-proxy-0.8.0-linux-rhel5-x86-32bit/bin/mysql-proxy --proxy-backend-addresses=192.168.56.101:3306 --proxy-read-only-backend-addresses=192.168.56.102:3306 --proxy-read-only-backend-addresses=192.168.56.103:3306 --log-level=debug --proxy-lua-script=/root/mysql-proxy-0.8.0-linux-rhel5-x86-32bit/share/doc/mysql-proxy/rw-splitting.lua
2010-09-18 06:10:57: (message) mysql-proxy 0.8.0 started
2010-09-18 06:10:57: (debug) chassis-limits.c:75: current RLIMIT_NOFILE = 1024 (hard: 1024)
2010-09-18 06:10:57: (debug) chassis-limits.c:79: trying to set new RLIMIT_NOFILE = 8192 (hard: 1024)
2010-09-18 06:10:57: (critical) chassis-limits.c:81: could not raise RLIMIT_NOFILE to 8192, Invalid argument (22). Current limit still 1024.
2010-09-18 06:10:57: (message) proxy listening on port :4040
2010-09-18 06:10:57: (message) added read/write backend: 192.168.56.101:3306
2010-09-18 06:10:57: (message) added read-only backend: 192.168.56.102:3306
2010-09-18 06:10:57: (message) added read-only backend: 192.168.56.103:3306

Os Clients que utilizam o MySQL passarão a se conectar no MySQL Proxy (por padrão na Porta 4040), que verificará se o SQL resultará em uma gravação – e será direcionado para o Master – ou se é apenas uma leitura e pode ser direcionada para um Master ou Slave, o que estiver mais livre. Para fazer isto, veja que na linha de comando do MySQL eu chamei o Script Lua rw-splitting.lua. O MySQL Proxy aceita extensões em Lua, e desta forma, seu poder aumenta muito.

ricardo@ricardo-laptop:~$ mysql -u ricardo -pNerv2010 -P 4040 -h MySQL-PROXY
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 12
Server version: 5.5.5-m3-log MySQL Community Server (GPL)
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql> SELECT COUNT(*) FROM test.CLIENTES;
+----------+
| COUNT(*) |
+----------+
|    29116 |
+----------+
1 row in set (0.02 sec)
mysql>

One comment

  1. Pingback: Tweets that mention Escalabilidade com MySQL Proxy | Nerv -- Topsy.com

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.