A AWS é o provedor de nuvem nº 1 para hospedagem de banco de dados de código aberto e a nuvem principal para implantações do MySQL. À medida que as organizações continuam migrando para a nuvem, é importante se antecipar aos problemas de desempenho, como alta latência, baixa taxa de transferência e atraso de replicação com distâncias maiores entre seus usuários e a infraestrutura de nuvem. Embora muitos usuários da AWS optem por sua solução de banco de dados gerenciado, o Amazon RDS, existem alternativas disponíveis que podem melhorar o desempenho do MySQL na AWS por meio de opções avançadas de personalização e suporte ilimitado ao tipo de instância EC2. O ScaleGrid oferece uma alternativa atraente para hospedar o MySQL na AWS que oferece melhor desempenho, mais controle e sem dependência de fornecedor de nuvem e o mesmo preço do Amazon RDS. Nesta postagem, comparamos o desempenho do MySQL Amazon RDS vs. MySQL Hosting no ScaleGrid em instâncias de alto desempenho da AWS.
TLDR
A implantação do MySQL no AWS High Performance do ScaleGrid pode fornecer 2x-3x a taxa de transferência com metade da latência do Amazon RDS for MySQL com a vantagem adicional de ter 2 réplicas de leitura em comparação com 1 em RDS.
MySQL no teste de desempenho da AWS
ScaleGrid | Amazon RDS | |
Tipo de instância | AWS High Performance XLarge (veja os detalhes do sistema abaixo) | Instância de banco de dados r4.xlarge (Multi-AZ) |
Tipo de implantação | 3 Node Master-Slave Set com replicação semisíncrona | Implantação multi-AZ com 1 réplica de leitura |
Disco SSD | SSD local e uso geral – 2 TB | Uso geral – 2TB |
Custo Mensal (USD) | $1.798 | $1.789 |
Amazon RDS Custos | Preço | Quantidade | Total | Notas |
Multi-AZ | ||||
instância de banco de dados (hr) | $0,48 | 730 | $350,40 | db.r4.xlarge |
instância de banco de dados (hr) | $0,48 | 730 | $350,40 | db.r4.xlarge |
Armazenamento (GB) | $0,115 | 2000 | $230.00 | Uso geral - 2 TB (AZ único) |
Ler réplica | ||||
instância de banco de dados (hr) | $0,48 | 730 | $350,40 | db.r4.xlarge (Single-AZ) |
Armazenamento (GB) | $0,115 | 2000 | $230.00 | Uso geral - 2 TB (AZ único) |
Outros custos | ||||
Armazenamento de backup (GB) | $0,095 | 1000 | $95,00 | Libere até 100% do armazenamento de banco de dados |
Transferência de dados (saída para a Internet) | $0,09 | 0 | $0.00 | Livre até 1GB/mês |
Transferência de dados (para regiões) | $0.01 | 2000 | $20,00 | Leste dos EUA (Norte da Virgínia) |
Suporte | $162,62 | 1 | $162,62 | 10% do custo mensal |
Total | $1.788,82 |
Como você pode ver na tabela acima, o preço do MySQL RDS está dentro de US$ 10 da solução de hospedagem MySQL totalmente gerenciada e abrangente do ScaleGrid.
O que são os conjuntos de réplicas de alto desempenho do ScaleGrid?
O conjunto de réplicas ScaleGrid MySQL no AWS High Performance usa um híbrido de SSD local e disco EBS para obter alto desempenho e alta confiabilidade. Uma configuração típica é implantada usando um conjunto de réplicas de 3 nós:
- O Master e o Slave-1 usam discos SSD locais.
- Slave-2 usa um disco EBS (pode ser de uso geral ou um disco IOPS provisionado).
O que isso significa? Como o Master e o Slave-1 estão sendo executados no SSD local, você obtém o melhor desempenho de disco possível de suas máquinas AWS. Não há mais EBS baseado em rede, apenas SSD local extremamente rápido. Lê e grava no seu primário e até lê do Slave-1 funcionará na velocidade do SSD. O Slave-2 usa um disco de dados do EBS e você pode configurar a quantidade de IOPS necessária para seu cluster. Essa configuração oferece total segurança para seus dados, mesmo no caso de você perder os discos SSD locais.
O conjunto de réplicas MySQL AWS High Performance XLarge do ScaleGrid usa instâncias i3.xlarge (30,5 GB de RAM) com SSD local para Master e Slave-1 e um i3.2xlarge (61 GB RAM) para Slave-2.
Configuração do MySQL
Uma configuração similar do MySQL é usada nas implantações do ScaleGrid e do RDS:
Configuration | Valor |
versão | 5.7.25 edição da comunidade |
innodb_buffer_pool_size | 25G |
innodb_log_file_size | 1G |
innodb_flush_log_at_trx_commit | 1 |
sync_binlog | 1 |
innodb_io_capacity | 3000 |
innodb_io_capacity_max | 6000 |
slave_parallel_workers | 30 |
slave_parallel_type | LOGICAL_CLOCK |
Configuração do benchmark de desempenho do MySQL
Configuração | Detalhes |
Ferramenta | Sysbench versão 1.0.17 |
Host | 1 r4.xlarge localizado no mesmo datacenter da AWS que o MySQL Master |
# Tabelas | 100 |
# linhas por tabela | 5.000.000 |
Script de geração de carga de trabalho | oltp_read_write.lua |
Cenários e resultados do teste de desempenho do MySQL
Para garantir que fornecemos resultados informativos para todos os tipos de carga de trabalho do MySQL AWS, dividimos nossos testes nesses três cenários para que você possa avaliar com base na intensidade da carga de trabalho de leitura/gravação:
- Carga de trabalho de leitura intensiva: 80% de leituras e 20% de gravações
- Carga de trabalho balanceada: 50% de leituras e 50% de gravações
- Carga de trabalho intensiva de gravação: 20% de leituras e 80% de gravações
Cada cenário é executado com um número variável de threads de cliente sysbench que variam de 50 a 400, e cada teste é executado por uma duração de 10 minutos. Medimos a taxa de transferência em termos de consultas por segundo (QPS) e latência do percentil 95 e garantimos que o atraso máximo de replicação nos escravos não ultrapasse 30s. Para alguns dos testes na implantação do ScaleGrid, a configuração do MySQL binlog_group_commit_sync_delay é ajustada para que o atraso da replicação do escravo não ultrapasse 30s. Essa técnica é chamada de “desacelerar o mestre para acelerar os escravos” e é explicada no blog de J-F Gagne.
Como melhorar o desempenho do #MySQL AWS 2X em relação ao Amazon RDS com o mesmo custoClique para Tweet
Cenário-1:Carga de trabalho intensiva em leitura com 80% de leituras e 20% de gravações
Como podemos ver nos testes de carga de trabalho de leitura intensiva, as instâncias MySQL de alto desempenho do ScaleGrid na AWS são capazes de lidar consistentemente com cerca de 27.800 QPS em qualquer lugar de 50 a 400 fios. Isso representa um aumento de quase 200% em relação ao desempenho do MySQL RDS, cuja média é de apenas 9.411 QPS na mesma faixa de threads.
ScaleGrid também mantém uma latência 53% menor, em média, em todos os testes de desempenho do MySQL AWS. A latência do Amazon RDS e do ScaleGrid aumenta constantemente à medida que o número de encadeamentos aumenta, onde o ScaleGrid atinge o máximo de 383 ms para 400 encadeamentos enquanto o Amazon RDS está em 831 ms no mesmo nível.
Cenário-2:carga de trabalho balanceada com 50% de leituras e 50% de gravações
Em nossos testes de desempenho de carga de trabalho balanceada, a implantação do MySQL High Performance do ScaleGrid na AWS supera novamente com uma média de 20.605 QPS em threads que variam de 50 a 400. Amazon RDS apenas 8.296 em média para a mesma contagem de encadeamentos, resultando em uma melhoria de 148% com ScaleGrid.
A latência do ScaleGrid e do Amazon RDS diminuiu significativamente nos testes de carga de trabalho balanceada em comparação com os testes de leitura intensiva abordados acima. O Amazon RDS teve uma latência média de 258 ms nos testes de carga de trabalho balanceada, onde o ScaleGrid teve uma média de apenas 125 ms, alcançando uma redução de mais de 52% na latência em relação ao MySQL no Amazon RDS.
Cenário-3:Carga de trabalho intensiva de gravação com 20% de leituras e 80% de gravações
Em nosso cenário final de carga de trabalho MySQL AWS com uso intensivo de gravação, o ScaleGrid alcançou um desempenho de taxa de transferência significativamente maior com uma média de 17.007 QPS no intervalo de 50 a 400 threads. Essa é uma melhoria de 123% em relação ao Amazon RDS, que alcançou apenas 7.638 QPS no mesmo número de threads.
Os testes de latência do percentil 95 também produziram latência significativamente menor para ScaleGrid em uma média de 114ms em 50 a 400 threads. O Amazon RDS alcançou uma média de 247 ms em seus testes de latência, resultando em uma redução média de 54% na latência ao implantar o MySQL de alto desempenho do ScaleGrid nos serviços da AWS no Amazon RDS.
Análise
Como observamos nos resultados do teste, as cargas de trabalho com uso intenso de leitura resultaram em maior taxa de transferência e latência em cargas de trabalho equilibradas e cargas de trabalho com uso intenso de gravação, independentemente de como O MySQL foi implantado na AWS:
MySQL on AWS Throughput Performance Test Averages> | ScaleGrid | Amazon RDS | Melhoria do ScaleGrid |
Taxa de transferência intensiva de leitura | 27.795 | 9.411 | 195,4% |
Balancear taxa de transferência de carga de trabalho | 20.605 | 8.296 | 148,4% |
Taxa de transferência intensiva de gravação | 17.007 | 7.638 | 122,7% |
Médias de teste de desempenho de latência do MySQL na AWS> | ScaleGrid | Amazon RDS | Melhoria do ScaleGrid |
Latência de leitura intensiva | 206ms | 439ms | -53,0% |
Latência de carga de trabalho balanceada | 125ms | 258ms | -51,6% |
Latência de gravação intensiva | 114ms | 247ms | -53,8% |
Explicação dos resultados
- Vemos que a implantação do ScaleGrid MySQL na AWS forneceu uma taxa de transferência quase 3x melhor para a carga de trabalho de leitura intensiva em comparação com a implantação do RDS.
- À medida que a carga de gravação aumentava, embora a taxa de transferência absoluta diminuísse, o ScaleGrid ainda oferecia um desempenho de taxa de transferência cerca de 2,5 vezes melhor.
- Para cargas de trabalho com uso intenso de gravação, descobrimos que o atraso de replicação começou a ocorrer para o escravo do EBS na implantação do ScaleGrid. Como nosso objetivo era manter o atraso de replicação do escravo dentro de 30s para nossas execuções, introduzimos binlog_group_commit_sync_delay para garantir que o escravo pudesse obter uma melhor execução paralela. Isso controlou o atraso e resultou em uma taxa de transferência absoluta menor na implantação do ScaleGrid, mas ainda pudemos ver uma taxa de transferência 2,2 vezes melhor em comparação com a implantação do RDS.
- Para todos os cenários de carga de trabalho balanceada, de leitura e de gravação intensiva, o ScaleGrid ofereceu características de latência 0,5X mais baixas em comparação com o RDS.
A implantação de 'Alto Desempenho' do ScaleGrid pode fornecer 2x-3x a taxa de transferência com metade da latência do RDS com a vantagem adicional de ter 2 réplicas de leitura em comparação com 1 em RDS. Para saber mais sobre as vantagens de hospedagem MySQL do ScaleGrid sobre o Amazon RDS for MySQL, confira nossa página Comparar provedores MySQL ou inicie uma avaliação gratuita de 30 dias para explorar a plataforma DBaaS totalmente gerenciada.