Então, quando se trata de rotear seu tráfego MySQL, existem várias opções.
- HAoxy
- MariaDB MaxScale
- NGINX
- MySQL Router
- ProxySQL
- Você ainda pode obter o MySQL Proxy se você quiser, mas é EOF.
Agora eu tenho visto HAproxy usado com mais freqüência com os clientes, é bastante simples de configurar. Percona tem um exemplo para os interessados:
Pessoalmente eu gosto de ProxySQL. Percona também tem alguns blogs sobre isso também
- https://github.com/sysown/proxysql/wiki/ProxySQL-Configuration
- https://www.percona.com/blog/2017/01/19/setup-proxysql-for-high-availability-not-single-point-failure/
- https://www.percona.com/blog/2017/01/25/proxysql-admin-configuration/
- https://www.percona.com/blog/2016/09/15/proxysql-percona-cluster-galera-integration/
Percona também tem versão ProxySQL disponível
Eu estava pensando em escrever alguns exemplos, mas no geral Percona explicou tudo muito bem. Eu não quero tirar nada desses posts, em vez disso, salientar que muita informação boa está disponível através desses URLs. Então, em vez de reescrever o que já foi escrito, vou criar uma coleção de informações para os interessados.
Primeiro compare e decida por si mesmo o que você precisa e quer. O link a seguir, claro, vai ser inclinado para o ProxySQL, mas dá-lhe um escopo geral para você considerar.
Se você tem um cluster ou mestre para dominar e não se importa com qual servidor as leituras versus leituras serão feitas, contanto que você tenha uma conexão; então o HAproxy é provavelmente um simples e rápido setup para você.
O bônus com o ProxySQL é a capacidade de classificar o tráfego de maneira ponderada, FÁCIL. Assim, você pode escrever no nó 1 e selecionar pull do nó 2 e do nó 3. A documentação pode ser encontrada aqui:
Sim, isso pode ser feito com o HAproxy, mas você deve instruir o aplicativo de acordo.
Isso é tratado no ProxySQL com base em suas regras de consulta.
Agora a pergunta óbvia aqui: OK, então como você mantém ProxySQL de se tornar o único ponto de falha?
Você pode investir é um balanceador de carga robusto e etc etc etc ... Lançar hardware nele ... Ou tornar mais fácil em si mesmo e apoiar open source e usar KeepAlive d. Isso é muito fácil de configurar e tudo está documentado novamente aqui:
- https://www.percona.com/blog/2017/01/19/setup-proxysql-for-high-availability-not-single-point-failure/
- http://www.keepalived.org/doc/
- Para ser justo, aqui está um exemplo para keepalived e HAproxy bem
- https://andyleonard.com/2011/02/01/haproxy-and-keepalived-example-configuration/
Se você já lidou com lua e mysql-proxy , ProxySQL e Keepalived devem ser muito simples para você. Se você ainda quiser, por algum motivo: https://launchpad.net/mysql-proxy
Independentemente de você escolher HAproxy, ProxySQL ou outra solução, você precisa garantir que não substitua um único ponto de falha por outro e que keepalived seja ótimo para isso. Tão pouco motivo para não fazer isso se você estiver usando um proxy.
Então, mais algumas coisas no ProxySQL.
- Se você rastrear hosts que se conectam ao seu banco de dados por meio de relatórios ou monitoramento, perceba que os nomes de host ou IPS agora serão o servidor proxy.
- E quanto a todos os usuários que você já tem no MySQL então? Você pode migrá-los para o proxysql? Sim você pode.Demora alguns passos, mas é capaz. Aqui está um exemplo disso:
- Certifique-se de entender o sistema de configuração de várias camadas . Salve suas informações no disco!
- https://github.com/sysown/proxysql/wiki/Main-(runtime)#runtime-tables
- https://github.com/sysown/proxysql/wiki/Main-(runtime)#disk-database
- ProxySQL pode ser executado na porta padrão do MySQL 3306
- Sim Edite as interfaces mysql
- Tenha em mente agora suas max_connections. Se você tem Max_connections no mysql configurado para 500, então esse é o seu limite de curso para usuários padrão. Com o ProxySQL, agora você pode distribuir usuários pelo sistema e definir um máximo por nó. Então, para ajudar a garantir que você não atinja 500 conexões, configure o mysql-max_connections um pouco abaixo do valor do MySQL.
- Aproveite o Monitor Module e STATS . Saiba o que está acontecendo com seu proxy e tráfego.
- Aproveite o Query Caching se aplicável para sua aplicação.
http://anothermysqldba.blogspot.com/2018/05/proxy-mysql-haproxy-proxysql-keepalived.html