Project Description

Cliente: Na área de serviços digitais

Tempo de contrato: Cliente desde 2016.

Bases de dados administradas: 3 servidores de dados MySQL.

Serviços contratados: Administração e monitoramento das bases de dados com atendimento 24 horas por dia.

Por conta do acordo de confidencialidade entre as empresas, detalhes específicos do projeto não serão divulgados. Somente serão descritas informações de conhecimento geral e/ou domínio público sobre hardware, software e atividades que sejam inerentes à administração de banco de dados.

Descrição do projeto:

Por conta dos custos envolvidos no licenciamento do banco de dados Oracle, o cliente decidiu converter seu banco de dados Oracle, com mais ou menos 1,5 TB de tamanho total, para o MySQL Enterprise Server. Contou com a colaboração dos profissionais da DBA para que, juntos, encontrassem a melhor solução, viabilizando tal procedimento.

Desafios

Converter com o menor impacto possível e uma parada mínima, todos os bancos de dados de tecnologia Oracle para tecnologia MySQL. Outras preocupações do cliente envolviam:

  • Garantias da eficiência da aplicação na nova tecnologia do banco de dados.
  • Aumentar a segurança dos dados, com uso de criptografia nas tabelas e nos backups, ambiente de alta-disponibilidade e plano de desastre e recuperação.
  • Certificar sua estrutura de dados para as principais práticas de governança, incluindo ISO, Sarbanes-Oxley (SOx), CobIT, ITil, entre outras.
  • O custo total da expansão do sistema atual  é sempre uma preocupação da empresa.

O projeto foi dividido em 4 fases, conforme abaixo:

Fase

Objetivo

Instalação do MySQL Enterprise em ambiente de testes, para homologar e adaptar a aplicação existente a essa nova tecnologia. O MySQL é um banco tradicional e confiável. Para prover acesso aos seus dados, utiliza a linguagem SQL, tal qual a tecnologia Oracle. Porém, com um otimizador mais simples que o Oracle, possui dificuldades em processar comandos SQL mais complexos ou joins em tabelas muito grandes.
Testes de Conversão Diversas simulações de migração dos dados foram realizadas para elencar a melhor forma de transformar os dados da tecnologia antiga para o MySQL.
Migração definitiva para o MySQL Enterprise Edition Com todos os pontos de falhas identificados na fase de testes e com a aplicação adaptada ao novo produto, utilizamos essa fase para migrar o banco de dados em definitivo e com tecnologias que garantissem o menor tempo de indisponibilidade possível.
Atividades Avançadas de Banco de Dados Criação do ambiente de desastre e recuperação, configuração de backups criptografados, ativação do Transparent Data Encryption (TDE), entre outras.

Atividades identificadas e ajustadas nos testes

  • Algumas partes da aplicação precisaram ser totalmente re-escritas, pois os comandos SQL que funcionavam bem na antiga tecnologia, passaram a não responder em um tempo aceitável. Após a adaptação dos comandos SQL para o MySQL, alguns processos executaram até 50% mais rápidos, quando comparados à tecnologia antiga;
  • Criação de diversos novos índices para o banco de dados MySQL, que não eram necessários no Oracle foram criados;
  • Criação de índices em todas as chaves estrangeiras do banco de dados MySQL, para evitarmos locks em cascata;
  • Alguns processos ficaram mais lentos quando comparados à tecnologia antiga, mas com desempenho satisfatório;
  • Criação de rotinas constantes de coleta de estatísticas do sistema;
  • Criação de cluster MySQL com a tecnologia Heartbeat do Linux.

Tecnologias de Banco de Dados Utilizadas

Entre outras facilidades, o MySQL Enterprise edition foi recomendado por suas características melhoradas de backup, podendo oferecer:

Características Descrição
“Hot” Backups Os backups ocorrem totalmente on-line, sem interromper as transações do MySQL
Backup de Instância Completa Faz o backup de dados, bem como configurações e outras informações para criar facilmente uma “réplica” completa
Backup de log Binlog e Relay Simplifica a clonagem para servidores slaves para replicação HA
Backup Incremental Cópia apenas dos dados que foram alterados desde o último backup
Backup parcial Segmente tabelas ou espaços de tabela específicos
Compressão avançada LZ4 Suporta compressão LZ4 ultra eficiente, de baixo impacto e ultrarrápida, bem como LZMA e zlib
Criptografia AES 256 Criptografia AES (Advanced Encryption Standard) de 256 bits para proteger todos os dados confidenciais de backup
Excluir tabelas Excluir tabelas desnecessárias de seus backups, economizando tempo e espaço de backup
Incluir Tabelas Faça o backup apenas das tabelas necessárias para melhor granularidade e usabilidade.
Recuperação em um ponto no passado (PITR) Recupere o banco de dados até uma transação específica
Restauração seletiva “Hot” on-line Retorna apenas tabelas selecionadas em um banco de dados em execução
Validação de backup Fornece verificações de garantia para confirmar a integridade e a qualidade do backup, confirmando que as páginas internas estão válidas.

A replicação permite que os dados de um servidor de banco de dados MySQL (o master) sejam copiados para um ou mais servidores de banco de dados MySQL (os slaves). A replicação é assíncrona por padrão; os slaves não precisam estar conectados permanentemente para receber atualizações do master. Dependendo da configuração, você pode replicar todos os bancos de dados, bancos de dados selecionados ou até mesmo tabelas selecionadas em um banco de dados.

Vantagens da replicação no MySQL incluem:

Características Descrição
Soluções escaláveis ​​ Distribuindo a carga entre vários slaves para melhorar o desempenho.
Segurança de dados Os dados são replicados para o slave e o slave pode pausar o processo de replicação, assim é possível executar serviços de backup no slave sem corromper os dados masters correspondentes.
Analytics Os dados em tempo real podem ser criados no master, enquanto a análise das informações pode ocorrer no slave sem afetar o desempenho do master.

O TDE do MySQL Enterprise permite a criptografia dos dados que estão no servidor (dados em repouso), criptografando os arquivos físicos do banco de dados. Os dados são criptografados automaticamente, em tempo real, antes de serem gravados em disco e, descriptografados, quando lidos. Como resultado, hackers e usuários mal-intencionados não conseguem ler informações confidenciais das tablespaces, backups de bancos de dados ou dos discos. O MySQL Enterprise TDE usa algoritmos AES por padrão.

A vantagem do TDE no MySQL é que sua configuração ocorre puramente no banco de dados, sem nenhuma necessidade de codificação adicional na aplicação. Não há também nenhum novo tipo de dado nas colunas das tabelas, ou alguma modificação necessária nos esquemas de dados. Depois de configurado, o TDE aproveita o buffer cache já existente para fornecer agilidade na criptografia e baixo impacto no desempenho geral do banco de dados .

O Heartbeat é um daemon do sistema operacional Linux que fornece serviços de infraestrutura de cluster (comunicação e inclusão) para seus clientes. Isso permite que os clientes saibam sobre a presença de outras máquinas ativas ou inativas na rede, através de uma interface fácil de troca de mensagens.

Para ser mais efetivo, o Heartbeat precisa ser configurado em conjunto com um gerenciador de recursos em cluster, que possui a tarefa de iniciar e interromper os serviços diversos, entre eles, endereços IP, servidores de Banco de Dados e Web, etc., que o cluster tornará altamente disponível.

Resultados Alcançados

  • Economia no cluster de banco de dados. Licenças do MySQL Enterprise são 4 vezes mais baratas que licenças do Oracle Standard Edition;
  • A aplicação, adaptada ao MySQL, ficou quase tão rápida quanto a original, após revisão dos códigos SQL mais complexos;
  • Possibilidade de certificação aos processos de governança padrão internacional;
  • Garantia de backup dos dados sem parada dos sistemas (Backup On-Line), sem impacto no servidor principal. Os backups são executados no servidor slave;
  • Garantia de recuperação de desastres sem nenhuma perda de dados ou em até um ponto específico no tempo (PITR).
  • Espelhamento de dados de longa distância entre servidores MySQL;