Ir para

MySQL autogerenciado vs. Cloud SQL para MySQL

O MySQL é um dos bancos de dados relacionais de código aberto mais conhecidos do mundo. Um dos motivos da popularidade dele é a capacidade de hospedar e gerenciar o banco de dados de várias maneiras que estejam em conformidade com os requisitos da carga de trabalho do usuário. Um usuário pode configurar o banco de dados autogerenciado no local, gerenciado em máquinas virtuais na nuvem ou usar uma oferta totalmente gerenciada de um provedor de nuvem. O foco deste artigo é a opção MySQL autogerenciado e a solução totalmente gerenciada, Cloud SQL para MySQL, fornecida pelo Google Cloud Os prós e contras de cada uma das opções serão abordados.

MySQL autogerenciado

A opção MySQL autogerenciado significa que o usuário, na maioria dos casos um administrador do banco de dados, é responsável pela maioria das atividades envolvidas na configuração, instalação, configuração e manutenção do banco de dados, pelo sistema operacional (SO), rede, armazenamento, instância de máquina virtual (VM) e pelo hardware, que hospeda a instância e o servidor do banco de dados. Algumas dessas tarefas, como tarefas de hardware, instância de VM, armazenamento, rede e sistema operacional, podem ser realizadas com mais facilidade usando um provedor de serviços em nuvem, como o Google Cloud. Independentemente de um usuário autogerenciar um banco de dados no local ou na nuvem, essa pessoa é responsável por algumas tarefas importantes de gerenciamento de banco de dados necessárias para uma execução sem problemas do sistema. Essas tarefas estão listadas abaixo.

  • Disponibilidade : é provável que os componentes de hardware e software falhem. No entanto, a responsabilidade de projetar o sistema de modo que seja tolerante a falhas de hardware e software e garanta a disponibilidade contínua do banco de dados, do servidor e do aplicativo é do usuário.  
  • Manutenção do banco de dados: na opção MySQL autogerenciado, os usuários precisam manter as várias camadas da pilha de aplicativos atualizadas com as versões mais recentes do software, tomar decisões sobre suporte de versões em fim de vida útil, incompatíveis ou legadas do hardware, sistema operacional e outros softwares. Além disso, os usuários precisam instalar patches de software, SO e MySQL regularmente e manter o banco de dados em funcionamento sem grandes interrupções.
  • Escalonabilidade : à medida que o uso do aplicativo aumenta, a necessidade de um melhor desempenho do banco de dados aumenta. Da mesma forma, para suportar uma grande carga de trabalho ou base de clientes, os recursos de hardware precisam ser escalonados vertical ou horizontalmente. Essa responsabilidade é do usuário no caso do MySQL autogerenciado. O escalonamento de recursos de hardware em um ambiente local é uma atividade muito demorada e complexa, que às vezes causa inatividade do sistema.
  • Segurança:nos últimos tempos, a segurança se tornou o aspecto mais importante que abrange várias camadas do sistema de banco de dados, começando pela proteção física do hardware para configurar firewalls de rede, proteger conexões de banco de dados e muito mais. Essas são atividades complexas que exigem um esforço significativo e conhecimento especializado em casos de configuração autogerenciada.
  • Monitoramento: além da configuração, instalação e configuração do MySQL, os usuários também precisarão se preocupar em monitorar vários componentes em todas as camadas da pilha, como monitoramento no nível do hardware, SO, MySQL e realizar ações corretivas em caso de falhas.

O diagrama abaixo mostra a responsabilidade do usuário ao ativar a configuração autogerenciada. Embora o autogerenciamento no Google Cloud reduza algumas tarefas relacionadas a hardware, computação, rede e armazenamento, as responsabilidades pelo gerenciamento das camadas restantes da pilha ainda são do usuário. O administrador do banco de dados e o desenvolvedor do aplicativo ainda precisam passar tempo, energia e recursos suficientes gerenciando o MySQL.

Imagem mostrando todas as responsabilidades de um administrador de banco de dados na hospedagem do banco de dados autogerenciado

O que é o Cloud SQL para MySQL?

O Cloud SQL é um serviço de banco de dados totalmente gerenciado que oferece facilidade de uso para configuração, manutenção, gerenciamento e administração dos bancos de dados MySQL, PostgreSQL e SQL Server no Google Cloud. O Cloud SQL gerencia todos os aspectos de hardware, rede, SO, segurança, monitoramento, manutenção, disponibilidade e escalonamento do banco de dados MySQL. Todas essas responsabilidades são ocultadas dos usuários, permitindo que eles se concentrem no desenvolvimento de aplicativos e agregam valor aos clientes.

O diagrama abaixo é semelhante ao diagrama acima, em que estão as tarefas envolvidas no gerenciamento das várias camadas do banco de dados MySQL, com a única diferença sendo que todas as tarefas gerenciadas pelo Cloud SQL em nome do usuário estão ilustradas em azul.

Imagem de hospedagem de banco de dados totalmente gerenciado

Além de gerenciar as muitas tarefas ilustradas acima, o Cloud SQL oferece vários recursos e soluções que não estão disponíveis nativamente em um ambiente autogerenciado. Veja abaixo alguns dos principais recursos oferecidos pelo Cloud SQL.

Confiabilidade: backup e recuperação são as atividades mais importantes no gerenciamento de banco de dados. O Cloud SQL oferece backup automatizado e backups sob demanda, que podem ser usados para restaurar o banco de dados em um determinado momento em caso de corrupção, desastre ou modificações de dados não intencional. 

Disponibilidade: o Cloud SQL oferece alta disponibilidade ao instanciar vários servidores que hospedam o banco de dados em várias zonas com capacidade de failover automatizada para fornecer alta disponibilidade em caso de falha de uma VM ou de um data center. O Cloud SQL garante disponibilidade superior a 99,95% em qualquer lugar do mundo.

Além do recurso de alta disponibilidade, o Cloud SQL também oferece uma equipe de engenharia de confiabilidade do site (SRE) 24 horas por dia, 7 dias por semana, responsável por garantir a confiabilidade das instâncias do banco de dados do Cloud SQL para MySQL no Google Cloud.

Réplicas de leitura entre regiões é outro recurso que pode ser usado como mecanismo de recuperação de desastres em caso de falhas. Ele permite que um usuário abra rapidamente o banco de dados afetado em outro local (região) com o mínimo de impacto nos negócios. 

Escalonabilidade: o Cloud SQL oferece a criação de réplicas de leitura do MySQL, como outras instâncias somente leitura do MySQL, na mesma região ou em regiões remotas que permitem atender às solicitações das réplicas e à instância principal, melhorando o desempenho de leitura. Réplicas de leitura também podem ser usadas para fins de relatório e podem ser destruídas após as necessidades comerciais serem atendidas.

O Cloud SQL permite escalonamento vertical de recursos (CPU, memória e armazenamento) e redução dos recursos na instância do MySQL com tempo de inatividade mínimo. Já no caso da configuração autogerenciada, essas atividades complicadas exigem muito esforço, experiência e planejamento. 

Segurança: os servidores de banco de dados do Cloud SQL para MySQL estão localizados em data centers protegidos do Google Cloud, garantindo o nível mais alto de segurança. Além disso, o Google Cloud oferece conectividade particular com a nuvem privada virtual e acesso de rede controlado pelo usuário com proteção de firewall, o que garante que os servidores de banco de dados do usuário estejam além do alcance de agentes mal-intencionados.

Outro aspecto da segurança é a conformidade com as regulamentações de segurança. O Cloud SQL está em conformidade com vários regulamentos reconhecidos, como SSAE 16, ISO 27001, PCI DSS e HIPAA. 

O Cloud SQL oferece a capacidade de gerenciar usuários e o acesso deles ao banco de dados por meio da integração do IAM. Essa integração gerencia a autorização e a autenticação dos usuários do Google Cloud e fornece acesso granular a recursos específicos do Google Cloud, o que impede o acesso não autorizado ao banco de dados. Além disso, o Cloud SQL facilita o controle de identidade e acesso fornecendo papéis predefinidos projetados para controlar o acesso aos seus recursos do Cloud SQL

Outro recurso de segurança do Cloud SQL é a criptografia de dados em repouso e em trânsito, garantindo que nenhum usuário não autorizado possa acessar esses dados.

O Cloud SQL oferece um recurso de validação de senha para usuários de banco de dados, que permite aos clientes definir a política de senha para complexidade da senha, tamanho mínimo da senha, intervalo de alteração de senha e uso do nome de usuário na senha no nível da instância. Os clientes também podem definir políticas para os dias de expiração da senha, número de tentativas com falha e requisitos antigos de alteração de senha no nível do usuário individual. Esses recursos no Cloud SQL oferecem práticas recomendadas de conformidade de segurança e reduzem o risco de acesso não autorizado aos dados críticos.

O Cloud SQL também fornece uma maneira de auditar ações e operações no banco de dados MySQL usando um plug-in de registro de auditoria. O registro de auditoria fornece insights sobre quem fez, qual ação, em qual objeto e quando. A auditoria do banco de dados permite rastrear ações específicas do usuário no banco de dados, como atualizações de tabela, consultas de leitura, concessões de privilégios a usuários, entre outras. 

Observabilidade: o Cloud SQL oferece várias soluções de monitoramento e tem uma lista crescente de métricas prontas para uso, que fornecem insights sobre o estado do banco de dados. Os usuários podem utilizar as métricas para criar alertas para manter os administradores cientes da integridade do banco de dados. 

O Cloud SQL também fornece recursos, como o Query Insights e recomendadores, permitindo que os usuários resolvam problemas e identifiquem os gargalos de desempenho de uma consulta ou carga de trabalho. Esses recursos são difíceis de replicar em um ambiente MySQL autogerenciado.

Integração: o Cloud SQL facilita a conectividade de rede e a integração com outros serviços do Google Cloud, como o Google Kubernetes Engine, Compute Engine e Cloud Run, que facilitam o desenvolvimento de soluções profundamente integradas. O Cloud SQL também oferece integração nativa com o BigQuery e o Looker, que podem ser usados para o processamento analítico dos dados presentes no Cloud SQL.

Patching: como um serviço gerenciado, o Cloud SQL atualiza automaticamente as instâncias para garantir que o hardware e e o sistema operacional subjacentes sejam confiáveis, eficientes, seguros e atualizados. A maioria dessas atualizações é realizada enquanto a instância do Cloud SQL está em execução. No entanto, algumas atualizações do sistema podem exigir uma breve interrupção do serviço, em que os usuários podem definir janelas de manutenção para a atividade de upgrade. 

Upgrades de versão: o Cloud SQL também oferece um processo automatizado de upgrade da versão do banco de dados (MySQL). Os usuários também podem fazer upgrade da versão principal migrando os dados para uma instância de uma versão superior.  

Como criar uma instância do banco de dados MySQL no Cloud SQL para MySQL?

Prós e contras do MySQL autogerenciado

Prós

  1. Capacidade de usar qualquer bifurcação MySQL no ecossistema MySQL, como MariaDB ou Percona, para configurar o MySQL.
  2. Flexibilidade na configuração do MySQL, já que os usuários têm controle total da instância, dos recursos e do sistema operacional. Além disso, os usuários podem usar o SO que quiserem, configurar o SO como quiserem e configurar o MySQL de acordo com as necessidades deles, sem limitações.
  3. Os usuários não são limitados pelas limitações do Cloud SQL, como tamanho máximo de armazenamento de 64 TB. Os usuários podem exceder o limite de armazenamento de 64 TB e usar uma infraestrutura de computação muito maior para hospedar o MySQL.
  4. Os usuários têm acesso total à instância do MySQL, incluindo privilégios SUPER, e acesso total ao sistema operacional, incluindo permissões sudo.
  5. Os usuários podem configurar topologias de alta disponibilidade e replicação de acordo com os requisitos, mesmo que não sejam compatíveis com o Cloud SQL.  

Contras

  1. Os usuários são responsáveis por gerenciar operações complexas de infraestrutura de hardware, rede e data center em um ambiente local. Mesmo ao autogerenciar o MySQL na nuvem, os usuários precisam lidar com a complexidade da configuração, da configuração de discos permanentes e das instâncias e do design e gerenciamento de clusters de alta disponibilidade, segurança, recuperação de desastres e escalonabilidade.
  2. Manter versões de bancos de dados, sistemas operacionais e sistemas de hardware atualizadas com patches mais recentes para evitar bugs e vulnerabilidades de segurança pode gerar custos significativos, recursos, complexidade e inatividade.
  3. Além da configuração do banco de dados, os usuários precisam configurar e gerenciar a segurança em todas as camadas, não apenas o banco de dados. Por exemplo, garantir que as conexões sejam criptografadas em trânsito usando SSL e manter os certificados atualizados, criptografar os dados em repouso e gerenciar o acesso de login de usuários e contas de serviço aos bancos de dados.
  4. Para garantir a disponibilidade da instância, várias camadas do sistema de banco de dados precisam ser monitoradas para verificar falhas. Os usuários precisam gastar mais recursos na configuração das ferramentas de monitoramento. Os alertas precisam ser definidos para notificar em caso de erros, e são necessárias ações corretivas para corrigir falhas.
  5. Os usuários precisam dedicar um tempo, recursos e esforço considerável na configuração e no gerenciamento de bancos de dados, em vez de se concentrar no desenvolvimento de aplicativos.

Prós e contras do Cloud SQL para MySQL

Prós

  1. O Cloud SQL para MySQL fornece uma interface fácil de criar, gerenciar, acessar e monitorar o banco de dados MySQL para desenvolvedores e engenheiros, mesmo para quem não tem experiência com bancos de dados. Para acelerar o processo, o Cloud SQL também oferece uma maneira fácil de migrar bancos de dados MySQL existentes do local ou de outras nuvens para o Cloud SQL para MySQL do Google Cloud.
  2. O Cloud SQL para MySQL oferece um conjunto avançado de recursos necessários para hospedar bancos de dados MySQL para aplicativos variados, desde bancos de dados para microsites até aplicativos empresariais imensos e muito essenciais, aplicativos de jogos e dados para casos de uso de análise. Com esses recursos avançados, os usuários podem criar aplicativos altamente confiáveis e escalonáveis.
  3. O Cloud SQL compartilha a responsabilidade da segurança com os usuários. O Cloud SQL garante a segurança em níveis mais baixos de infraestrutura e rede, permitindo que os usuários se concentrem em configurar e desenvolver aplicativos de nível superior. 
  4. O Cloud SQL fornece vários recursos de segurança, como plug-ins de validação de senha e registro de auditoria que não estão prontamente disponíveis nas versões da comunidade e são complexos de implementar em ambientes autogerenciados. O Cloud SQL simplifica e disponibiliza esses recursos para os usuários.
  5. O Cloud SQL oferece várias maneiras de interagir com o banco de dados. Os usuários podem usar a GUI, a CLI e a API para personalizar as operações de acordo com a necessidade, com muito pouco esforço.
  6. O Cloud SQL oferece fácil integração com outras soluções e produtos, como o BigQuery, permitindo o desenvolvimento de soluções de análise com o mínimo de esforço.
  7. O Cloud SQL assume a responsabilidade pela confiabilidade da instância do banco de dados com infraestrutura altamente disponível, soluções de autorrecuperação e, o mais importante, equipes de SRE 24 horas por dia, todos os dias da semana.
  8. Os usuários gastam menos tempo e esforço em tarefas operacionais do banco de dados e podem se concentrar no desenvolvimento de aplicativos e, assim, aumentar a capacidade deles de fornecer soluções que atendam às necessidades dos negócios com mais eficiência.
  9. Além de ajudar a gerenciar o banco de dados, o Cloud SQL  também oferece dicas e recomendações para melhorar o desempenho dos bancos de dados usando recursos como Query Insights e recomendações. Com esses recursos, a hospedagem e o gerenciamento do banco de dados na nuvem são simples, seguros e econômicos.
  10. O Cloud SQL oferece serviços de atendimento ao cliente para simplificar e agilizar o suporte necessário para problemas ou solicitações relacionados a bancos de dados.

Contras

  1. As bifurcações do MySQL do ecossistema MySQL, como MariaDB e Percona, não são compatíveis com o Cloud SQL. 
  2. Alguns recursos do MySQL não são compatíveis. Saiba mais sobre recursos incompatíveis.
  3. Os tipos de máquina com até 624 GB de RAM e 96 CPUs são compatíveis com o Cloud SQL. É possível armazenar até 64 TB. Se o banco de dados precisar de mais capacidade, uma opção autogerenciada é a única opção disponível no momento.

O Google Cloud oferece um banco de dados MySQL gerenciado para atender às suas necessidades de negócios, desde a desativação de um data center local até a execução de aplicativos SaaS e a migração dos principais sistemas de negócios.