2. Este documento visa descrever nossa direção geral em termos de produtos. Tal conteúdo destina-se a fins exclusivamente
informativos e não poderá ser incorporado a nenhum contrato. Este documento não consiste em compromisso de entregar
nenhum material, código ou funcionalidade, tampouco deve servir de base para decisões de compras. O desenvolvimento,
a liberação e a coordenação de recursos ou funcionalidades dos produtos Oracle aqui descritas permanecem sob exclusivo
critério da Oracle.
3. Por que MySQL?
O MySQL Database move os mais exigentes aplicativos da Web, E-commerce e OLTP
(processamento de transações on-line), sendo um banco de dados Transaction-Safe
totalmente integrado, compatível com o padrão ACID (atomicidade, consistência,
isolamento e durabilidade) e que oferece recursos completos de confirmação
(commit), reversão (rollback), recuperação de panes e bloqueio em nível de linha.
A facilidade de usar, a escalabilidade e o desempenho do MySQL tornaram-no o
banco de dados de código aberto mais popular do mundo.
Os Maiores Websites Usam o MySQL
Dezesseis dos vinte sites com maior tráfego na web, como
Facebook, Google, craigslist, LinkedIn, e eBay, confiam no MySQL
para seus aplicativos de missão crítica.
O MySQL Database 5.5 melhora o desempenho e a escalabilidade em
arquiteturas de hardware com multiprocessador. Os novos recursos
de gerenciabilidade e monitoramento de replicação oferecem a
desenvolvedores e administradores de bancos de dados (DBAs)
ferramentas aprimoradas para a criação de aplicativos escaláveis e de Usuários de MySQL Enterprise nos EUA
alto desempenho. Além disso, o MySQL Performance Schema oferece Empresas Telecomunicações
insights de alto nível sobre os indicadores de performance do banco Lafarge Cox Communications
de dados do MySQL. Toys-R-Us Nokia
Shinsei Bank Alcatel
MySQL Enterprise Edition CVS Vodafone
O MySQL Enterprise Edition inclui o mais completo conjunto de Governo OEM/ISV
recursos avançados e ferramentas de gestão para alcançar os mais Naval Air Systems Command Symantec
altos níveis de escalabilidade, segurança, confiabilidade e tempo U.S. Census Bureau SAP Sage
de funcionamento. Ele reduz o risco, o custo e a complexidade no NASA Cisco
desenvolvimento, implantação e gerenciamento de aplicativos MySQL National Security Agency
de missão crítica e inclui:
MySQL Enterprise Backup: reduz o risco de perda de dados, permitindo a realização de backups dos bancos de
dados online, com suporte a backups totais, gradativos e parciais, recuperação pontual e compactação de backups.
MySQL Enterprise High Availability: permite tornar a infraestrutura de seu banco de dados altamente disponível.
O MySQL oferece soluções compatíveis e certificadas, como o MySQL Replication, o Oracle VM Templates for
MySQL e o Windows Failover Clustering for MySQL.
MySQL Enterprise Scalability: permite alcançar desempenho sustentável e atende às exigências de escalabilidade
impostas pelas crescentes cargas de dados, consultas e usuários. O MySQL Thread Pool oferece um eficiente
modelo de processamento de threads desenvolvido para reduzir a sobrecarga na gestão das conexões de clientes e
threads de execução de instruções.
MySQL Enterprise Security: oferece módulos de autenticação externa prontos para usar, para fácil integração do
MySQL com as atuais infraestruturas de segurança, entre as quais, PAM e Windows Active Directory. Os usuários
do MySQL podem ser autenticados com os Pluggable Authentication Modules (“PAM”) ou serviços nativos do
Windows.
MySQL Enterprise Monitor e MySQL Query Analyzer: monitoram continuamente seus bancos de dados e o
alertam sobre possíveis problemas antes que estes possam afetar o sistema. É como ter um “assistente virtual
de DBA” ao seu lado para recomendar as melhores práticas a fim de eliminar vulnerabilidades da segurança,
aprimorar a replicação, otimizar o desempenho e muito mais. Como resultado, haverá um considerável aumento
na produtividade dos desenvolvedores, DBAs e administradores de sistemas de sua empresa.
MySQL Workbench: ferramenta visual unificada para arquitetos de bancos de dados, desenvolvedores e DBAs.
Fornece recursos de modelagem de dados, desenvolvimento em SQL e um conjunto completo de ferramentas de
administração para configuração de servidor, administração de usuários e muito mais.
MySQL | 3
4. Compromisso da Oracle com o MySQL
Estratégia da Oracle: Hardware e Software Projetados Juntos
• Criados e testados em conjunto
• Gerenciados e mantidos em conjunto
• Baseados em padrões abertos
• Custo mais baixo
• Menor risco
• Maior confiabilidade
Compromisso da Oracle
• A Oracle é orientada pela demanda dos clientes
• A empresa tem o compromisso de oferecer suporte,
desenvolvimento, promoção e adoção viável de
tecnologias de código aberto
• Capacitação das comunidades de desenvolvedores
• Importância aos padrões abertos
O LAMP stack Mais Completo do Setor Oracle Enterprise Linux
Oracle Magazine • janeiro/fevereiro de 2011
• A Oracle tem negócios expressivos na linha de
software de código aberto: Apache, Glassfish
• Oracle Enterprise Linux
• Oracle VM (baseado em Xen)
MySQL
• Apache, Glassfish
• MySQL
PHP, Perl, Python
• PHP, Perl, Python, Ruby, Java, C, C++
Lista com os dez compromissos da Oracle com o MySQL e sua comunidade:
1. Disponibilidade contínua de APIs do engine de armazenamento. A Oracle deve manter e aprimorar periodicamente a Pluggable Storage Engine
Architecture do MySQL para que os usuários possam escolher entre vários engines de armazenamento nativos e de terceiros. A Pluggable Storage Engine
Architecture do MySQL deve corresponder à atual prática do MySQL de usar interfaces de programação de aplicativos documentadas e disponíveis para o
público, de modo que os fornecedores de engines possam “conectá-los” no servidor de bancos de dados do MySQL. A documentação deve ser consistente
com a documentação fornecida anteriormente pela Sun.
2. Cláusula de Non-assertion (não-asserção). Como detentora de direitos autorais, a Oracle mudará a atual política da Sun e não deverá fazer asserções
ou ameaças de que as implementações de engines de armazenamento de terceiros deverão ser liberadas sob Licença Pública Geral (GPL, na sigla em
inglês) por terem implementado interfaces de programação disponíveis como parte da Pluggable Storage Engine Architecture do MySQL. A Oracle não
exigirá licença comercial de outros fornecedores de engines de armazenamento para implementar interfaces de programação de aplicativos como parte
da Pluggable Storage Engine Architecture do MySQL. A Oracle deverá reproduzir esse compromisso em obrigações contratuais para fornecedores de
armazenamento que atualmente tenham uma licença junto à Sun.
3. Compromisso de licença. No término do atual contrato de OEM do MySQL, a Oracle deverá oferecer aos fornecedores de armazenamento que
atualmente tenham uma licença comercial junto à Sun uma extensão de seus contratos nos mesmos termos e condições por um prazo não posterior a
10 de dezembro de 2014. A Oracle deverá reproduzir esse compromisso em obrigações contratuais para fornecedores de armazenamento que atualmente
tenham uma licença junto à Sun.
4. Compromisso de aprimorar o MySQL no futuro sob GPL. A Oracle continuará a aprimorar o MySQL e fornecer versões subsequentes do MySQL,
inclusive a versão 6, disponível sob a GPL. A Oracle não lançará nenhuma versão inédita e aprimorada do MySQL Enterprise Edition sem lançar
concomitantemente uma versão inédita e aprimorada do MySQL Community Edition licenciada sob a GPL. A Oracle deverá continuar a disponibilizar
gratuitamente o código fonte de todas as versões do MySQL Community Edition ao público.
5. Suporte não obrigatório. Os clientes não serão obrigados a adquirir serviços de suporte da Oracle como condição para obter uma licença comercial.
6. Maior investimento em pesquisa e desenvolvimento (P&D) do MySQL. A Oracle compromete-se a disponibilizar recursos financeiros para o
desenvolvimento contínuo do MySQL (versão GPL e versão comercial). Durante cada um dos próximos três anos, a Oracle investirá mais em P&D da
unidade de negócios global MySQL que a Sun em seu último ano fiscal (cerca de $24 milhões) antes do fechamento da transação.
7. Conselho Consultivo de Clientes do MySQL. A Oracle criará e financiará um Conselho Consultivo de Clientes com usuários finais e clientes selecionados
para oferecer orientação e feedback sobre as prioridades de desenvolvimento do MySQL e outros assuntos importantes para os clientes desse produto.
8. Conselho Consultivo de Fornecedores de Engines de Armazenamento do MySQL. A Oracle criará e financiará um Conselho Consultivo de
Fornecedores de Engines de Armazenamento para oferecer orientação e feedback sobre as prioridades de desenvolvimento do MySQL e outros assuntos
importantes para os clientes desse produto.
9. Manual de Referência do MySQL. A Oracle continuará a manter, atualizar e disponibilizar para download, gratuitamente, um Manual de Referência do
MySQL de qualidade semelhante ao atualmente distribuído pela Sun.
10. Preservação da Escolha de Suporte ao Cliente. A Oracle garantirá que os usuários finais e clientes que pagam assinaturas de suporte para o MySQL
poderão renová-las em regime anual ou plurianual, de acordo com sua preferência.
4 | MySQL
5. Recursos e Benefícios do MySQL
Arquitetura Cliente/Servidor: O MySQL é um sistema de cliente/servidor. Existe um servidor de banco de dados (MySQL)
e, arbitrariamente, muitos clientes (aplicativos), que se comunicam com o servidor, ou seja, consultam dados, salvam
alterações, etc. Os clientes podem rodar no mesmo computador, como o servidor, ou em outro computador (comunicação
por rede local ou pela Internet).
Quase todos os grandes sistemas conhecidos de bancos de dados (Oracle, Microsoft SQL Server etc.) são do tipo cliente/
servidor, em contraste aos sistemas do tipo arquivos/servidor, como o Microsoft Access, o dBase e o FoxPro. A principal
desvantagem dos sistemas de arquivos/servidor é que, quando executados em rede, tornam-se extremamente ineficientes à
medida que o número de usuários aumenta.
Compatibilidade com SQL: Como o nome sugere, o MySQL oferece suporte à sua própria linguagem de banco de dados,
SQL (Structured Query Language). SQL é uma linguagem padronizada para consulta e atualização de dados, bem como
para administração do banco de dados. Existem vários dialetos SQL (quase tantos quanto o número de sistemas de bancos
de dados). O MySQL segue o atual padrão de SQL (no momento, a SQL:2003), embora com restrições significativas e um
grande número de extensões
Exibições: As exibições se relacionam a uma consulta de SQL visualizada como um objeto distinto de banco de dados,
oferecendo uma determinada exibição do banco de dados. O MySQL comporta exibições desde a versão 5.0.
Procedimentos armazenados (SPs, na sigla em inglês), geralmente são usados para simplificar determinadas etapas, como
inserir ou excluir um registro de dados. Com eles, os programadores de clientes têm a vantagem de não precisar processar as
tabelas diretamente, e sim por meio dos SPs. Assim como as exibições, os SPs ajudam na administração de grandes projetos
de bancos de dados e também podem aumentar a eficiência. O MySQL comporta SPs desde a versão 5.0.
Triggers (gatilhos) são comandos SQL executados automaticamente pelo servidor em determinadas operações do banco de
dados (INSERIR, ATUALIZAR e EXCLUIR). O MySQL comporta triggers de forma limitada desde a versão 5.0.
Unicode: O MySQL aceita todos os conjuntos de caracteres imagináveis desde a versão 4.1, inclusive Latin-1, Latin-2 e
Unicode (na variante UTF8 ou UCS2).
A pesquisa de texto completo simplifica e acelera a busca de palavras localizadas em um campo de texto. Se você usar o
MySQL para armazenar texto (como em um grupo de discussão na Internet), poderá usar a pesquisa de texto completo para
implementar, sem dificuldades, uma eficiente função de pesquisa.
A replicação permite que o conteúdo de um banco de dados seja copiado (replicado) para vários outros computadores. Na
prática, isso é feito por dois motivos: para aumentar a proteção em caso de falha do sistema (assim, se um computador ficar
inoperante, outro poderá ser colocado em produção) e para acelerar as consultas ao banco de dados.
Transações: No contexto de um sistema de banco de dados, uma transação significa a execução de várias operações de
bancos de dados em bloco. O sistema garante que ou todas as operações serão executadas corretamente ou nenhuma
delas será efetivada. Isso vale mesmo se no meio de uma transação houver uma falha de energia, se ocorrer uma pane no
computador ou acontecer algum outro tipo de desastre. Desse modo, por exemplo, não é possível que uma quantia de
dinheiro seja retirada da conta A, mas não seja depositada na conta B por causa de algum tipo de erro de sistema. O engine
(formato) de tabela padrão é o InnoDB, que oferece suporte a transações.
Principais restrições externas: São regras que garantem a inexistência de referências cruzadas nas tabelas vinculadas, que
levariam a lugar nenhum. O MySQL aceita as principais restrições externas para tabelas InnoDB.
Funções GIS: Desde a versão 4.1, o MySQL oferece suporte ao armazenamento e processamento de dados geográficos
bidimensionais. Desse modo, o MySQL é adequado para aplicativos SIG (sistemas de informações geográficas).
Linguagens de programação: Existem várias APIs (interfaces de programação de aplicativo) e bibliotecas para o
desenvolvimento de aplicativos MySQL. Para a programação de clientes, é possível usar as linguagens C, C++, Java, Perl,
PHP, Python e Tcl, entre muitas outras.
Conectores MySQL: O MySQL oferece drivers baseados em padrões do mercado para JDBC, ODBC e .Net, com os quais
os desenvolvedores podem criar aplicativos de bancos de dados na linguagem de sua preferência. Além disso, a biblioteca C
nativa permite embutir o MySQL diretamente em seus aplicativos.
Independência de plataforma: Como os aplicativos de clientes rodam em vários sistemas operacionais (OS), o próprio
MySQL (o servidor) pode ser executado em inúmeros OS. Os sistemas mais importantes são Apple Macintosh OS X, Linux,
Microsoft Windows e as infinitas variantes do Unix, como AIX, BSDI, FreeBSD, HP-UX, OpenBSD, Net BSD, SGI Iris e
Sun Solaris.
MySQL | 5
6. Recursos empresariais do MySQL 5.5
O MySQL Database 5.5 oferece recursos empresariais que incluem:
• Aprimorado! Desempenho até 1.500% mais rápido no Windows.
• Aprimorado! Desempenho até 370% mais rápido no Linux.
• Aprimorado! Melhor escalabilidade em moderno hardware com vários núcleos (cores) e CPUs.
• Novidade! Performance Schema para monitorar o desempenho do servidor MySQL em tempo de execução.
• Novidade! Replicação semi-síncrona para garantir redundância e consistência dos dados.
• Novidade! Suporte ao Heart Beat para identificar imediatamente eventuais interrupções na replicação.
• Novidade! Opções de particionamento para pesquisas mais rápidas.
• Novidade! Maior facilidade no desenvolvimento e depuração de funções, triggers e procedimentos
armazenados.
• Confiabilidade com pouca ou nenhuma intervenção para alcançar tempo de funcionamento contínuo.
• Facilidade de uso, com instalação e configuração “bem-sucedidas em 15 minutos”.
• Baixa administração com pouquíssima manutenção do banco de dados.
• Replicação que oferece topologias flexíveis para expansão e alta disponibilidade.
• Particionamento para aprimorar o desempenho e a gestão de ambientes de bancos de dados de grande porte.
• Transações ACID para criar aplicativos empresariais de missão crítica que sejam seguros e confiáveis.
• SPs para melhorar a produtividade dos desenvolvedores.
• Triggers para aplicar regras de negócios complexas no nível do banco de dados.
• Exibições para garantir que informações confidenciais não sejam expostas a riscos.
• Information Schema (banco de informações) para acessar facilmente metadados.
• Pluggable Storage Engine Architecture para máxima flexibilidade.
Os seguintes recursos foram adicionados ao MySQL 5.5:
• O modelo de processamento de threads do MySQL Server executa instruções usando uma conexão de thread por cliente.
Conforme mais clientes se conectam ao servidor e executam instruções, há uma degradação no desempenho geral.
Desde a versão 5.5.16, as distribuições comerciais do MySQL incluem um plugin para pool de threads que oferece um
modelo alternativo de processamento de threads, projetado para reduzir a sobrecarga e melhorar o desempenho. O
plugin implementa um pool de threads que melhora o desempenho do servidor, gerenciando com eficácia os threads de
execução de instruções para um grande número de conexões de clientes.
• Desde a versão 5.5.16, as distribuições comerciais do MySQL incluem dois plugins que habilitam o MySQL Server a usar
métodos externos para autenticar os usuários do MySQL:
• O PAM (Pluggable Authentication Modules) permite que o sistema acesse vários tipos de métodos de autenticação
através de uma interface padrão. O plugin de autenticação PAM permite que o MySQL use o PAM para autenticar
seus usuários.
• As distribuições do MySQL para Windows incluem um plugin de autenticação que habilita o MySQL Server a usar
serviços nativos do Windows para autenticar as conexões dos clientes. Os usuários que iniciaram uma sessão do
Windows poderão conectar-se dos programas de clientes MySQL ao servidor com base nas informações inseridas em
seu ambiente, sem precisar especificar uma senha adicional.
Esses plugins de autenticação permitem que o MySQL Server aceite conexões de usuários definidos fora das tabelas de
concessão do MySQL. Eles também são compatíveis com o recurso de proxy users do MySQL. Cada plugin pode retornar
ao MySQL um nome de usuário diferente do que iniciou a sessão, ou seja, o plugin pode retornar o usuário do MySQL
que define os privilégios que o usuário autenticado externamente deverá ter.
• Escalabilidade aprimorada nas CPUs com vários núcleos. A tendência atual no desenvolvimento de hardware é colocar
diversos núcleos em vez de aumentar a velocidade de clock das CPUs, o que torna a ideia de “esperar até a velocidade das
CPUs aumentar” um meio inviável de melhorar o desempenho do banco de dados. Em vez disso, é necessário fazer melhor
uso dos vários núcleos para maximizar a exploração dos ciclos de processamento que eles disponibilizam. O MySQL 5.5
aproveita os recursos dos sistemas SMP e tente eliminar os gargalos na arquitetura do MySQL que atrapalham o uso
6 | MySQL
7. pleno dos diversos núcleos. O foco é mantido no InnoDB, especialmente na gestão de memória e locks. As mudanças no
subsistema de I/O (entrada/saída) do InnoDB possibilitam um uso mais eficaz da capacidade de I/O disponível.
• Várias modificações melhoram a operação do MySQL Server no Solaris.
• Melhor acesso às informações de execução e desempenho. Os aprimoramentos de diagnóstico incluem Performance
Schema (um recurso para monitorar a execução do MySQL Server no nível mais baixo), investigações do DTrace, saída
expandida do comando SHOW ENGINE INNODB STATUS, Debug Sync e uma nova variável de status.
• O engine de armazenamento padrão para novas tabelas é o InnoDB em vez do MyISAM.
• O MySQL Cluster foi lançado como um produto separado, com novo desenvolvimento para a versão 7.2 do engine de
armazenamento NDB, baseado no MySQL 5.5. O suporte a clusters não está disponível no MySQL Server 5.5.
• As versões do MySQL Cluster são identificadas por um número de versão do NDB (banco de dados da rede) em três
partes. Atualmente, o MySQL Cluster NDB 7.1 é a série de versão GA (de disponibilidade geral) mais recente. O MySQL
Cluster NDB 6.3 e o MySQL Cluster NDB 7.0 ainda estão disponíveis. Essas versões do MySQL Cluster são baseadas no
MySQL Server 5.1 e estão documentadas no manual do MySQL 5.1.
• Suporte para interface de replicação semissíncrona: uma confirmação (commit) é executada nos blocos do lado master
antes de retornar à sessão que executou a transação até que pelo menos um slave (escravo) reconheça o recebimento e
registre os eventos referentes à transação. A replicação semissíncrona é implementada através de um componente de
plugin opcional.
• Suporte complementar para caracteres Unicode, ou seja, caracteres fora do Basic Multilingual Plane (BMP). Esses novos
conjuntos de caracteres Unicode incluem os caracteres complementares utf16, utf32 e utf8mb4.
• Os aprimoramentos ao particionamento de tabelas incluem suporte a dois novos tipos de particionamento definidos pelo
usuário: RANGE COLUMNS (colunas de intervalo), uma extensão do particionamento RANGE, e o LIST COLUMNS
(colunas da lista), uma extensão do particionamento LIST. Cada uma dessas extensões oferece duas melhorias aos recursos
de particionamento do MySQL:
• Permitem definir intervalos ou listas no particionamento, com base nas sintaxes DATE, DATETIME, ou valores de
string (como CHAR ou VARCHAR).
Também é possível definir intervalos ou listas com base em vários valores de colunas ao particionar tabelas por
RANGE COLUMNS ou LIST COLUMNS, respectivamente. Esse tipo de intervalo ou lista pode conter até 16 colunas.
• Quando esses tipos de particionamento definirem as tabelas, o particionamento por faixas poderá otimizar as
consultas com condições WHERE que utilizem várias comparações entre (diferentes) valores de colunas e constantes,
por exemplo, = 10 AND b > 5 ou < “2005-11-25” AND b = 10 AND c = 50.
Agora é possível excluir todas as linhas de uma ou mais partições de uma tabela particionada usando a instrução
ALTER TABLE... TRUNCATE PARTITION. A execução da instrução exclui linhas sem afetar a estrutura da tabela. A
partições nomeadas na cláusula TRUNCATE PARTITION não precisam ser contíguas.
• Os principais caches agora são compatíveis com índices em tabelas MyISAM particionadas por meio das instruções
CACHE INDEX e LOAD INDEX INTO CACHE. Além disso, é possível definir um cache principal e carregá-lo com
índices de toda uma tabela particionada ou de uma ou mais partições. Se a carga for proveniente das partições, estas não
precisam ser contíguas.
• A nova função TO_SECONDS() converte uma expressão DATE ou DATETIME em inúmeros segundos a partir do ano
zero. Essa função de uso geral é útil para o particionamento, podendo ser usada em expressões com tal finalidade. Além
disso, as tabelas definidas por meio de tais expressões aceitam particionamento por faixas.
• Suporte para instruções SIGNAL e RESIGNAL padrão SQL.
• Os aprimoramentos à funcionalidade XML incluem uma nova instrução LOAD XML INFILE.
• A autenticação do MySQL aceita dois novos recursos: autenticação conectável e usuários de proxy. Com a autenticação
conectável, o servidor pode usar plugins para autenticar conexões recebidas de clientes e esses computadores podem
carregar um plugin de autenticação que interage adequadamente com o plugin de servidor correspondente.
• Agora, as versões do MySQL são desenvolvidas com CMake e não com as autoferramentas GNU. Como consequência, as
instruções para instalação do MySQL foram atualizadas e explicam como desenvolver no MySQL usando o CMake.
• O processo de compilação tornou-se semelhante em todas as plataformas, inclusive no Windows, eliminando a
necessidade de seções mais extensas dedicadas a notas para plataformas específicas.
MySQL | 7
8. MySQL 5.6 - (Recursos de Acesso Antecipado) - InnoDB e Replicação
Aprimoramentos ao InnoDB. O InnoDB é o engine de armazenamento padrão para o MySQL.
O Full Text Search do InnoDB oferece aos usuários a capacidade de compilar índices e pesquisas de texto completo referentes a um
determinado conteúdo baseado em texto nas tabelas do InnoDB. Essa nova funcionalidade permite pesquisas rápidas e precisas no
conteúdo de documentos usando linguagem natural, booleana, expansão de consultas (caractere curinga) e opções/algoritmos de
pesquisa por proximidade.
Arquivos de REDO log InnoDB com tamanho máximo aumentado para até 2 TB. Isso significa um aumento de 4 GB para 2 TB,
representando um excelente ganho de desempenho para aplicativos com pesadas cargas de trabalho de gravação ou transações de
execução extremamente demoradas, nos quais o limite do arquivo de REDO log poderia ser alcançado. Os UNDO logs do InnoDB
residirão em seu próprio espaço de tabela.
Atualmente, o InnoDB armazena os UNDO logs no espaço de tabela do sistema InnoDB. Com essa melhoria, os usuários poderão
separar os UNDO logs (e a atividade de I/O aleatória associada) do espaço de tabela do sistema (mais atividade de I/O sequencial) e
armazená-los em seu próprio espaço de tabela. Os usuários também poderão armazenar espaços de tabela específicos dos UNDO logs
em Flash ou SSDs se desejarem.
Opções do Buffer Pool do InnoDB para pré-carga/aquecimento na reinicialização. As novas opções permitem a pré-carga ou
“aquecimento” do buffer pool do InnoDB, com a capacidade de despejar (dumping) e restaurar o conteúdo de um ou mais buffer pools
do InnoDB de/para o disco automaticamente no desligamento ou na reinicialização, ou manualmente a qualquer momento. O processo
de dump é rápido e compacto, com mínima sobrecarga de armazenamento no servidor, pois armazena apenas uma lista de páginas
no buffer pool, e não o conteúdo delas. Na reinicialização, o processo de restauração recarrega os dados da página, mas é executado
em background (segundo plano) para que as operações normais do banco de dados sejam iniciadas de modo mais rápido e não sejam
afetadas enquanto o buffer pool é recarregado.
Auto-extensão aprimorada dos arquivos .ibd do InnoDB para tabelas criadas usando o parâmetro innodb_file_per_table. Essa
configuração é usada por muitos recursos úteis do InnoDB - compactação, armazenamento fora da página (off-page) para BLOBs e
grandes prefixos de índices. Esse aprimoramento ajuda a reduzir a contenção no mutex do sistema de arquivos do InnoDB quando esses
recursos são usados em configurações com muitas tabelas. Desse modo, vários arquivos podem ser estendidos em um processo em
background sem contenção/bloqueio de outros threads que estejam executando operações normais de leitura/gravação.
Tamanho de página do InnoDB de 4K a 64K. Esse recurso é um pré-requisito para as otimizações específicas do InnoDB para Flash
e SSD (que virão em uma futura compilação experimental do MySQL 5.6). Agora o InnoDB comporta páginas menores, de 4k e 8k,
resultando em melhor desempenho e maior vida útil desse tipo de mídia. Esse recurso amplia o InnoDB para comportar páginas de 4K
a 64K, além do padrão atual de 16K.
Replicação aprimorada. A replicação do MySQL é a maneira mais popular e amplamente usada de alcançar escalabilidade e alta
disponibilidade.
Binlog API expõe uma interface programática C++ ao log binário, implementado como uma biblioteca independente. Os
desenvolvedores podem usar a API para ler e analisar eventos de logs binários de arquivos binlog existentes e de servidores em
execução, e replicar as alterações em outros armazenamentos de dados. Em resumo, com a nova Binlog API, os desenvolvedores
poderão reduzir a complexidade de integração, padronizando suas operações de gerenciamento de dados SQL no MySQL, ao mesmo
tempo em que replicam dados de outros aplicativos MySQL em sua infraestrutura de gerenciamento de dados. Para demonstrar as
possibilidades da Binlog API, foi desenvolvido um exemplo de aplicativo para replicar as alterações de um banco de dados MySQL no
Apache Solr (http://lucene.apache.org/solr/) (um servidor de pesquisas de texto completo).
Group Commit do Binlog (completa o Group Commit do InnoDB implementado no MySQL 5.5) Desenvolvido para melhorar o
desempenho da replicação do MySQL, o Group Commit aplica atualizações ao log binário em paralelo e depois as confirma em grupo
no binlog em disco. Os usuários têm controle completo sobre a frequência das confirmações em disco, pois podem:
• configurar o número de transações que devem ser agrupadas;
• definir o intervalo, com granularidade de milésimos de segundo, antes que o log binário seja salvo.
O atual Group Commit do Binlog é uma parte de um trabalho em andamento. Não temos um benchmark para a implementação
no momento e esperamos que os resultados desse exercício influenciem as decisões de implementação final. Esta é uma excelente
oportunidade para a comunidade avaliar a implementação e dar feedback para a equipe de desenvolvimento do MySQL. Saiba mais:
Durable Slave Reads é um aprimoramento que permite ao usuário controlar quando o slave faz a leitura do arquivo binário master:
assim que as atualizações são aplicadas ou apenas quando são salvas em disco, ou seja:
• a leitura do binlog é feita assim que as atualizações são aplicadas (com o risco de perda de dados em caso de pane em um master);
• a leitura do binlog é feita quando as atualizações são confirmadas em disco, tornando-as duráveis e, portanto, sem o risco de perda
de transações, mas deixando o slave defasado em relação ao master.
Slaves multi-thread aprimorados foram pré-lançados como parte da primeira compilação experimental do MySQL 5.6 em abril de 2011,
proporcionando expressivas melhorias no desempenho, permitindo a aplicação paralela (e não sequencial) de atualizações nos bancos de
dados. Essa versão experimental “atualizada” reflete os resultados dos testes e o feedback dos primeiros a adotar a nova versão.
Outros recursos importantes incluem slaves à prova de pane, que podem se recuperar automaticamente de falhas; replicação otimizada
com base em linha, replicação com retardo e backup remoto do binlog. Juntas, essas capacidades melhoram o desempenho, a
flexibilidade e a facilidade de uso.
8 | MySQL
9. Novas Extensões Comerciais para o MySQL Enterprise Edition
As versões MySQL 5.5 GA e o MySQL 5.6 Development Milestone oferecem inúmeros recursos inéditos e interessantes para os usuários
e a comunidade do MySQL testar, dar feedback e usar.
Além disso, os clientes empresariais têm acesso a várias extensões comerciais já incluídas no MySQL Enterprise Edition:
• MySQL Enterprise Monitor
• MySQL Enterprise Backup
Dando continuidade ao modelo de negócios do MySQL, adicionamos três novas extensões comerciais ao MySQL Enterprise Edition:
• MySQL Enterprise Scalability – pool de threads
• MySQL Enterprise High Availability - Oracle VM Template e Windows Clustering para o MySQL Enterprise Edition
• MySQL Enterprise Security (autenticação externa para PAM e para Windows)
MySQL Enterprise High Availability
O MySQL Enterprise Edition oferece inúmeras soluções de alta disponibilidade do banco de dados, para detecção e recuperação
automáticas de falhas, bem como para minimizar downtimes (paralisações) resultantes de atividades de manutenção programadas.
Oracle VM Template para o MySQL Enterprise Edition Detecção e
Oracle VM Oracle VM
recuperação
Garante rápida implantação e ajuda a eliminar esforços de automáticas
configuração e riscos, oferecendo uma imagem do software de falhas
virtualizado e pré-configurado, aproveitando os recursos do Oracle
Secure Live
VM para oferecer alta disponibilidade. Migration
(SSL)
• Oracle Linux com Unbreakable Enterprise Kernel
• Oracle VM
• Oracle VM Manager
• Oracle Cluster File System 2 (OCFS2)
• MySQL Database (Enterprise Edition)
Oracle VM
• Pré-instalado e pré-configurado Manager
• Integração total e testes de QA (garantia de qualidade) Servidores / Pool do Oracle VM
• Único ponto de suporte**
Oracle Cluster File System 2 (OCFS2)
SAN / iSCSI
** Suporte técnico para o Oracle Linux e o Oracle Virtual Machine requer assinatura da Unbreakable Linux etwork.
Windows Server Failover Clustering para o MySQL Enterprise
Slave Aplicativo Aplicativo Aplicativo
Edition
Com certificação e suporte do MySQL, o Windows Server Failover Clustering (WSFC),
as organizações obtêm segurança na implantação de aplicativos críticos para os
negócios que exigem altos níveis de disponibilidade, por intermédio da adoção do
MySQL Enterprise Edition.
IP virtual
• Windows Server 2008 R2, MySQL 5.5**
• Quorum (3º voto), dados (InnoDB + schema) e binários (opcional) alojados em
armazenamento compartilhado (testando iSCSI & FCAL)
• Failover
• Manutenção planejada
• Falha de serviço do MySQL
• Conectividade, falhas do host
• Perda de serviço = alguns segundos + tempo de recuperação do InnoDB
• O aplicativo percebe perda temporária de conexão e reconecta-se no mesmo
endereço IP
• O slave de replicação recupera-se automaticamente
• Cluster gerenciado através da GUI do snap-in do MS Failover Cluster Management Voto Dados Bin
• Sem a necessidade de um novo software/script
** O suporte técnico para o Windows Server Failover Clustering pode ser obtido com a Microsoft.
MySQL | 9
10. MySQL Enterprise Scalability: pool de threads
Para alcançar escalabilidade e desempenho sustentáveis para as crescentes cargas de dados, consultas e usuários, o MySQL
Enterprise Edition oferece pool de threads. Esse recurso oferece um modelo de processamento de threads altamente
escalável, desenvolvido para reduzir a sobrecarga na gestão das conexões de clientes e threads de execução de instruções.
O resultado é melhoria da escalabilidade e desempenho sustentável para aplicativos online de tráfego intenso que atendem
um número crescente de conexões de clientes.
O pool de threads é uma opção que o próprio usuário pode configurar, oferecendo um modelo alternativo e eficiente
de processamento de threads, desenvolvido para explorar totalmente a robustez dos atuais sistemas com vários núcleos.
Benchmarks internos SysBench OLTP do MySQL mostram que o pool de threads oferece melhoria significativa na
escalabilidade e desempenho sustentável para aplicativos que atendem um grande número de conexões simultâneas,
especificamente em sistemas de 16 núcleos ou mais.
Pool de threads padrão
Pool de conexões
padrão Thread de execução da conexão 1
Conexão 1
Conexões
(instruções)
atribuídas Thread de execução da conexão 2
Conexão 2 aos threads
permanentemente
• As conexões são atribuídas a um thread durante toda a conexão.
• O mesmo thread é usado para todas as instruções de conexão (único thread).
Com pool de threads habilitado
Pool de threads e
grupos de threads
Thread de execução da conexão 1
Conexão 1 Conexão 1
Threads 1-4096
Thread de execução da conexão 2
Conexão 2 Conexão 2
Threads 4097-8193
Conexão N
Threads 8193-N
• O pool de threads contém um número configurável de grupos de threads (o padrão é 16) e cada um gerencia
até 4096 threads reutilizáveis.
• Cada conexão é atribuída a um grupo de threads por meio de round robin (repetição alternada).
A habilitação do pool de threads garante desempenho superior e sustentável conforme as cargas de usuários
aumentam.
10 | MySQL
11. MySQL Enterprise Security
O MySQL 5.5 introduziu uma API de autenticação conectável, com a qual os usuários podem ser autenticados por
meio de diretórios, bibliotecas externas etc. Os desenvolvedores podem usar essa API para criar seus próprios módulos
personalizados que integram o MySQL na infraestrutura de segurança existente. O MySQL Enterprise Edition aproveita
essa mesma API para fornecer módulos de autenticação externa prontos para usar, via PAM (Pluggable Authentication
Modules) ou por serviços nativos do Windows. Cada módulo pode ser descrito conforme segue:
Autenticação externa para PAM - permite configurar o MySQL para usar o PAM com o objetivo de autenticar usuários
no LDAP, Unix/ Linux, Kerberos e em outros sistemas.
Autenticação externa para Windows – permite configurar o MySQL para usar os serviços nativos do Windows a fim
de autenticar as conexões dos clientes. Os usuários que iniciaram uma sessão do Windows poderão conectar-se dos
programas de clientes MySQL ao servidor com base nas informações de token inseridas em seu ambiente, sem precisar
especificar uma senha adicional.
MySQL Enterprise Security – Autenticação do PAM
1. Um usuário chamado “Joe” 2. O conector envia o nome de 3. O nome de usuário e senha são
estabelece conexão usando seu nome usuário e senha ao servidor do enviados à biblioteca do PAM, que
de usuário e senha MySQL responde sim ou não ao cliente
Conector
Autenticação
do PAM
Biblioteca do PAM
(Outros backends)
CREATE USER joe
4. A biblioteca do PAM verifica
IDENTIFIED WITH
Aplicativo as credenciais (usando LDAP ou
‘authentication_pam’
Kerberos) e responde sim ou não à
AS ‘mysql’;
solicitação do cliente.
MySQL Enterprise Security – Autenticação do Windows
1. Um usuário chamado “Joe” acessa 3. MyDomain/joe acessa o aplicativo, 4. Os tokens são verificados, o
o ambiente com o login e senha do que se conecta ao MySQL com o usuário win_joe é autenticado por
Windows. usuário win_joe meio de login e senha do Windows,
com privilégios específicos do
MySQL.
Autenticação
Aplicativo do Windows
2. MyDomanjoe é autenticado
no Windows. CREATE USER joe
IDENTIFIED WITH
‘authentication_windows’
AS ‘mysql’;
Usuários, grupos
etc. do Windows
MySQL | 11
12. Replicação do MySQL
A replicação é a abordagem mais comum para proporcionar alta disponibilidade ao MySQL e consiste em um recurso nativo do banco
de dados, disponível “out-of-the-box” (de modo integrado) sem opcionais ou add-ons complicados. A replicação permite que o banco
de dados copie ou duplique alterações de um local físico ou sistema para outro (normalmente do sistema “master” para o “slave”) em
um cluster fracamente acoplado. Esse recurso é usado para aumentar a disponibilidade e a escalabilidade do banco de dados e agregar
flexibilidade que permite aos usuários executar operações de backup ou consultas analíticas em relação aos sistemas slave, aliviando a
carga de tais funções no master.
Quando implantadas para bancos de dados de alta disponibilidade, as atualizações são replicadas do servidor master para o slave, com
o objetivo de colocar o slave offline (failover), caso o master fique offline em virtude de um erro, pane ou para fins de manutenção.
O MySQL pode replicar dentro de um datacenter ou entre vários datacenters, permitindo a recuperação de desastres nos locais
necessários. A replicação do MySQL não oferece uma ferramenta de failover automatizada, mas é possível implementá-la no nível dos
aplicativos ou do banco de dados por meio de uma série de mecanismos.
Também é possível replicar dados de um servidor de banco de dados do MySQL (o master) para um ou mais servidores MySQL
(slaves). Por padrão, a replicação é assíncrona – os slaves não precisam permanecer conectados para receber atualizações do master. Isso
significa que as atualizações podem ocorrer em conexões de longa distância, temporárias ou intermitentes, como em um serviço dial-up
(conexão discada). Dependendo da configuração, é possível replicar todos os bancos de dados, selecionar os BDs a serem replicados ou
mesmo tabelas em um banco de dados.
A replicação do MySQL pode ser usada com as seguintes finalidades:
• Soluções de scale-out (expansão) - distribuir a carga entre vários slaves para melhorar o desempenho. Nesse ambiente, todas as
gravações e atualizações devem ocorrer no servidor master. No entanto, as leituras podem ocorrer em um ou mais slaves. Esse
modelo pode melhorar o desempenho das gravações (pois o master fica dedicado às atualizações), ao mesmo tempo em que aumenta
sensivelmente a velocidade de leitura em um número cada vez maior de slaves.
• Segurança dos dados - como os dados são replicados para o slave, o qual pode interromper o processo de replicação, é possível
executar serviços de backup no slave sem danificar os dados masters correspondentes.
• Funções analíticas - dados dinâmicos podem ser criados no master, enquanto as análises das informações podem ser feitas no slave
sem afetar o desempenho do master.
• Distribuição de dados de longa distância - se uma filial da empresa quiser trabalhar com uma cópia dos dados principais, poderá
usar a replicação a fim de criar uma cópia local dos dados com essa finalidade, sem precisar de acesso permanente ao master.
No MySQL, a replicação é unidirecional e assíncrona, ou seja, um servidor age como master enquanto um ou mais servidores
funcionam como slaves. Já no MySQL Cluster, a replicação é síncrona.
O MySQL 5.5 oferece suporte a uma interface semissíncrona, além de replicação assíncrona integrada. Com a replicação semissíncrona,
uma confirmação (commit) é executada nos blocos do lado master antes de retornar à sessão que executou a transação até que pelo
menos um slave reconheça o recebimento e registre os eventos referentes à transação.
Configuração de Replicação Básica
Cliente Cliente Cliente Thread de I/O
Master
Dump de Slave
Thread
Log de
Retransmissão
DB Binlog DB
Servidor da Web Thread de SQL
A replicação do MySQL funciona por meio da configuração de um servidor como master, com um ou mais servidores definidos como
slaves. O master registra as alterações feitas no banco de dados. Depois de registradas, essas alterações são enviadas e aplicadas ao(s)
slave(s) imediatamente ou após o intervalo determinado (versão 5.6).
O servidor master grava as atualizações desses arquivos de log binários e mantém um índice desses arquivos para controlar a rotação de
logs. Os arquivos de log binários servem como um registro das atualizações a serem enviadas aos slaves. Quando um slave é conectado
ao master, ele determina a leitura da última posição nos logs sobre a conexão com o master mais recente estabelecida com êxito. O slave
então recebe eventuais atualizações ocorridas desde a última conexão e as aplica antes de continuar consultando o master quanto a
novas atualizações. O slave continua fazendo a leitura de solicitações de serviço durante esses processos.
12 | MySQL
13. Modos de replicação do banco de dados - há vários modos de replicação, definidos como assíncronos, semissíncronos ou síncronos.
Replicação assíncrona - as atualizações são confirmadas para o banco de dados no master e retransmitidas para o slave onde também
são aplicadas. Como não espera até o slave receber a atualização, o master pode continuar processando novas atualizações sem ficar
bloqueado enquanto aguarda o reconhecimento do slave. Qualquer retardo (lag) entre atualizações confirmadas que estão sendo
replicadas é mais perceptível com aplicativos altamente transacionais, nos quais existe um grande volume de atualizações (gravações) ou
quando a replicação é executada em uma rede de longa distância (WAN, na sigla em inglês). No entanto, com os componentes e ajuste
corretos, a replicação propriamente dita pode parecer quase instantânea para o aplicativo.
É importante observar que a replicação assíncrona não garante que todas as instruções serão replicadas em caso de interrupção no
master. Depois do failover, os aplicativos poderão constatar que as atualizações mais recentes não foram replicadas ao slave. Os outros
modos de replicação explicados a seguir resolvem a questão de consistência entre o master e seus slaves.
Em essência, o MySQL oferece suporte à replicação unidirecional, assíncrona, como um recurso padrão do banco de dados. Usando
a replicação assíncrona, os slaves não precisam permanecer conectados para receber atualizações do master. Isso significa que as
atualizações podem ocorrer em conexões de longa distância, temporárias ou até mesmo intermitentes. Dependendo da configuração, é
possível replicar todos os bancos de dados, selecionar os BDs a serem replicados ou mesmo tabelas em um banco de dados.
Replicação semissíncrona - o MySQL 5.5 inclui suporte para replicação semissíncrona, que melhora a integridade dos dados,
especialmente em caso de failover do master, e pode ser usada como uma alternativa à replicação assíncrona padrão. É possível combinar
os diferentes modos de replicação, para que alguns slaves sejam configurados com replicação assíncrona enquanto outros usem a
replicação semissíncrona. Com a replicação semissíncrona, uma confirmação é retornada ao master (depois ao aplicativo) quando um
slave recebe a atualização, informando da existência de dados em pelo menos dois locais (no master e ao menos em um slave). Um
thread que executa uma confirmação de transação no master é bloqueado e aguarda até pelo menos um slave semissíncrono reconhecer
o recebimento de todos os eventos da transação ou até o tempo limite (timeout).
Quando o bloco termina, o master retorna à sessão e pode continuar executando outras instruções. A essa altura, a transação foi
confirmada no lado do master e o recebimento de seus eventos foi reconhecido por pelo menos um slave. Em termos de consistência, a
replicação semissíncrona fica entre a assíncrona e a totalmente síncrona, embora o slave apenas reconheça o recebimento e não confirme
a atualização.
Replicação síncrona - os dados são confirmados em dois ou mais hosts ao mesmo tempo por meio de um protocolo 2PC (two phase
commit). A replicação síncrona garante a consistência entre vários sistemas, facilita e acelera os tempos de resposta de failover em caso
de interrupção no sistema, mas pode agregar pequena sobrecarga ao desempenho como resultado da troca de mensagens adicional entre
os nós. Em essência, o MySQL Cluster oferece suporte à replicação síncrona e também emprega uma arquitetura autocompartilhada
(particionada) e com vários master em paralelo para melhorar consideravelmente o desempenho de aplicativos com uso intensivo de
gravação, que precisam funcionar 99,999% do tempo.
Várias Topologias de Replicação
Retransmissão/Standby
Simples Árvore Circular
Retransmissão/
Master Master Master Master Master Standby
Slave Slave Slave Slave Slave Master Master Slave Slave Slave
Slave Slave Slave
Dois masters
Master Master
MySQL | 13
14. MySQL Cluster Carrier Grade
O MySQL Cluster é uma tecnologia que permite formar clusters de bancos de dados na memória em um sistema
shared-nothing (nada compartilhado). A arquitetura shared-nothing permite que o sistema funcione com
hardware muito barato e um mínimo de requisitos específicos de hardware ou software.
O MySQL Cluster é projetado para não ter nenhum ponto único de falha. Em um sistema shared-nothing,
cada componente deve ter a sua própria memória e disco, e a utilização de mecanismos de armazenamento
compartilhado, como redes, sistemas de arquivos em rede e SANs não são recomendados ou suportados.
O MySQL Cluster integra o servidor MySQL padrão com um engine de armazenamento em cluster na memória
chamado NDB (Network DataBase). Em nossa documentação, o termo NDB refere-se à parte da configuração
específica para o engine de armazenamento, enquanto “MySQL Cluster” refere-se à combinação de um ou mais
servidores MySQL com o engine de armazenamento NDB.
Um MySQL Cluster consiste em um conjunto de computadores, conhecidos como hosts, cada qual executando
um ou mais processos. Esses processos, conhecidos como nós, podem incluir servidores MySQL (para acesso
a dados do NDB), nós de dados (para armazenamento dos dados), um ou mais servidores de gerenciamento
e, possivelmente, outros programas especializados em acesso de dados. A relação desses componentes em um
MySQL Cluster é mostrada aqui:
Componentes do MySQL Cluster
Todos estes programas trabalham em conjunto para formar um MySQL Cluster. Quando os dados são
armazenados pelo engine de armazenamento NDB, as tabelas (e respectivos dados) são armazenados nos nós de
dados. Essas tabelas podem ser acessadas diretamente de todos os outros servidores MySQL (nós SQL) no cluster.
Assim, em um aplicativo de folha de pagamento que armazena dados em um cluster, se um aplicativo atualizar
o salário de um funcionário, todos os outros servidores MySQL que consultam esses dados poderão ver essa
alteração imediatamente.
No entanto, um servidor MySQL que não esteja conectado a um MySQL Cluster não pode usar o engine de
armazenamento do NDB nem acessar quaisquer dados do MySQL Cluster.
Os dados armazenados nos nós de dados para o MySQL Cluster podem ser espelhados, o cluster pode processar
falhas de nós individuais de dados sem outro impacto além de um número pequeno de transações canceladas
devido à perda do estado de transação. Como se espera que os aplicativos transacionais processem a falha de
transação, essa não deve ser uma fonte de problemas.
Nós individuais podem ser interrompidos e reiniciados, e, em seguida, podem reingressar no sistema (cluster).
Reinicializações sem interrupção (nas quais todos os nós são reiniciados um de cada vez) são usadas quando há
alterações na configuração e atualizações de software.
A realização e restauração de backup dos bancos de dados MySQL Cluster podem ser feitas usando a
funcionalidade NDB nativa encontrada no cliente de gerenciamento do MySQL Cluster e o programa ndb_
restore incluído na distribuição MySQL Cluster. Você também pode usar a funcionalidade padrão do MySQL
fornecida para essa finalidade no mysqldump e no servidor MySQL.
Os nós do MySQL Cluster podem usar uma série de mecanismos de transporte diferentes para comunicações
inter-nós, incluindo TCP/IP usando o padrão 100 Mbps ou hardware de Ethernet mais rápido. Também é
possível usar o protocolo de alta velocidade Scalable Coherent Interface (SCI) com o MySQL Cluster, embora não
seja obrigatório usar o MySQL Cluster, pois o SCI exige hardware e software especiais.
O MySQL Cluster Manager simplifica a criação e a administração do banco de dados MySQL Cluster Carrier
Grade Edition, automatizando tarefas comuns de gerenciamento.
14 | MySQL
15. O MySQL Cluster é composto por três tipos de nó que, coletivamente, fornecem alta disponibilidade para o aplicativo:
• Nós de dados gerenciam o armazenamento e acesso aos dados. As tabelas são automaticamente particionadas em todos
os nós de dados que também processam transparentemente o balanceamento de carga, a replicação, o failover e a auto-
recuperação. Não há necessidade de mecanismo de heart beat ou middleware de gerenciamento de recursos – todas essas
funções estão integradas diretamente no MySQL Cluster. Nós de aplicativo fornecem conectividade a partir da lógica do
aplicativo para os nós de dados. Várias APIs são apresentadas para o aplicativo. O MySQL fornece uma interface SQL
padrão, incluindo conectividade com todas as principais linguagens de desenvolvimento para Web e frameworks. Há
também uma ampla variedade de interfaces NoSQL incluindo memcached, REST/JSON, C++ (NDB-API), Java e JPA.
• Nós de gerenciamento são usados para configurar o cluster e fornecer arbitragem no caso de uma partição de rede para
evitar um “split brain” (redes separadas), o que levaria à inconsistência de dados.
• A resiliência a falhas com o recurso de auto-recuperação
• A arquitetura distribuída, shared-nothing do MySQL Cluster foi cuidadosamente concebida para garantir a resiliência
a falhas, com auto-recuperação automatizada.
• Os dados dentro de um nó são replicados simultaneamente para todos os nós dentro do grupo. Se um nó de dados
falhar, há sempre pelo menos um outro nó armazenando a mesma informação.
• No caso de uma falha de nó de dados, o servidor MySQL ou o nó do aplicativo pode usar qualquer outro nó de dados
no grupo para executar transações. O aplicativo simplesmente tentará novamente a transação e os nós de dados
restantes atenderão a solicitação com sucesso.
• O MySQL Cluster detecta eventuais falhas instantaneamente e o controle é automaticamente submetido a failover para
outros nós ativos no cluster, sem interromper o serviço para os clientes.
• No caso de falha, os nós do MySQL Cluster conseguem realizar a auto-recuperação, sendo reiniciados, recuperados e
reconfigurados de modo dinâmico e automático – tudo com total transparência para o aplicativo.
• Nós duplicados do servidor de gerenciamento podem ser implantados de modo que nenhuma função de
gerenciamento ou arbitragem seja perdida se um servidor de gerenciamento falhar.
Quando o cluster é projetado dessa forma, o sistema torna-se confiável e altamente disponível, pois os pontos únicos de
falha foram eliminados. Qualquer nó pode ser perdido sem que isso afete o sistema como um todo.
Topologia do MySQL Cluster
Clientes/
Clientes
APIs
Cliente de gerenciamento
do NDB ndb_mgm
C/C++
Nós SQL do MySQL
(mysqld)
(Protocolo 2PC)
Glassfish
Servidor de gerenciamento
do MySQL Cluster
ndb_mgmd
LDAP
(Lightweight
Directory Access
Protocol)
Nós de dados do MySQL Cluster Alternativa de cliente
personalizado
(NDBAPI)
MySQL | 15
16. MySQL Enterprise Monitor
O MySQL Enterprise Monitor oferece os seguintes benefícios:
• Tenha uma visão consolidada sobre a integridade de todos os seus bancos de dados MySQL.
• Monitore mais de 600 variáveis do MySQLs e do sistema operacional com o Enterprise Dashboard.
• Monitore sessões, conexões, latência de replicação MySQL e muito mais, com mais de 30 gráficos.
• Melhore o desempenho do aplicativo com o MySQL Query Analyzer.
• Ganhe visibilidade imediata de suas topologias de replicação através da detecção automática e agrupamento.
• Visualize em tempo real o desempenho master/slaves usando o MySQL Replication Monitor.
• Personalize o MySQL Enterprise Monitor para suas necessidades específicas com opções de customização.
• Seja notificado sobre problemas antes que eles se tornem falhas custosas, usando alertas orientados por limites.
• Use recursos de login único através da integração LDAP.
• Resolva problemas mais rapidamente usando a opção de coletar e agregar servidores de MySQL, sistemas operacionais e
consultas de diagnósticos referente ao MySQL Support.
• MySQL Cluster Graphs e Advisor fornecem monitoramento em tempo real e automatizado de nós de dados do MySQL
Cluster e sugestões de melhores práticas.
• O MySQL e o Operating System Graphs proporcionam melhor monitoramento visual de recursos importantes do
sistema, como transações de banco de dados e eficiência do cache binlog para a obtenção de tendências de histórico e em
tempo real.
O MySQL Enterprise Monitor é um aplicativo para a Web distribuído e é implantado dentro da segurança de seu firewall.
É composto de um Gerenciador de Serviços centralizado e Agente de Serviço leve instalado em cada servidor MySQL
monitorado.
Enterprise Dashboard Monitor
16 | MySQL
17. MySQL Query Analyzer
O MySQL Query Analyzer ajuda desenvolvedores
e DBAs a melhorar o desempenho dos aplicativos
através do monitoramento de consultas e localização
precisa do código SQL que está causando uma
lentidão. Com os novos MySQL Connector Plug-ins,
o desempenho de aplicativos em Java e Microsoft.NET
pode ser otimizado de forma mais eficiente, através da
comunicação direta com o MySQL Query Analyzer.
As consultas são apresentadas em uma visão
integrada de todos os servidores MySQL, assim
DBAs e desenvolvedores podem filtrar problemas
de consulta específicos e identificar o código que
consome mais recursos. Com o MySQL Query
Analyzer, os DBAs podem aprimorar o código SQL
durante o desenvolvimento ativo e monitorar e ajustar
continuamente as consultas em produção.
MySQL Advisors Enterprise Dashboard - Query Analyzer
O MySQL Enterprise Monitor difere dos tradicionais monitores de banco de dados de terceiros porque fornece um conjunto
completo de MySQL Advisors que são projetados para examinar automaticamente a configuração, a segurança e os níveis de
desempenho de um servidor MySQL; identificar problemas e oportunidades de ajuste, e oferecer ações corretivas específicas.
O MySQL Enterprise Monitor oferece o seguinte conjunto de Advisors de melhores práticas:
• Atualização - monitora e orienta sobre como utilizar a versão mais segura e atualizada do MySQL que você deve
implantar.
• Administração – monitora e orienta sobre problemas relacionados com a administração geral do banco de dados,
capacidade de recuperação e as definições de configuração de desempenho.
• Segurança – monitora vulnerabilidades de segurança no banco de dados MySQL e orienta sobre como proteger o sistema
contra possíveis violações de segurança.
• Replicação – monitora e orienta sobre os problemas relativos à segurança, configuração de replicação, e latência master/
slaves.
• Uso de memória - monitora os indicadores da memória dinâmica relacionados ao servidor (uso de cache, taxas de
ocorrências etc.) e informa sobre mudanças de configuração para melhorar o desempenho.
• Desempenho – monitora indicadores dinâmicos de desempenho relacionados ao servidor e orienta sobre as definições de
configuração e variáveis para melhorar o desempenho.
• Esquema – monitora e informa sobre alterações não planejadas de um esquema de banco de dados
• Cluster – monitora a memória de nós de dados do MySQL Cluster, status do espaço de buffer undo/redo, status do
espaço de log undo/redo de nó ativo/inativo e orienta sobre como otimizá-los.
• Personalização – crie suas próprias regras e orientações de melhores práticas adequadas ao seu uso específico do MySQL.
Monitoramento de Topologias de Replicação/Scale Out (Expansão)
O Enterprise Dashboard facilita a expansão usando o MySQL Replication, fornecendo a detecção automática, agrupamento,
documentação e monitoramento de todas as relações hierárquicas entre master e slaves da replicação do MySQL. Alterações
e adições a topologias de replicação existentes também são detectadas e mantidas automaticamente proporcionando
visibilidade instantânea das atualizações recém-implementadas. Isso ajuda a reduzir a curva de aprendizado para quem não
tem muita experiência em replicação do MySQL ou em ambientes de expansão específicos.
Enterprise Dashboard - Replicação
MySQL | 17
18. MySQL Enterprise Backup
O MySQL Enterprise Backup é a solução ideal para fazer backup de bancos de dados MySQL.
Backup
O MySQL Enterprise Backup executa backups dos
bancos de dados online sem bloquear os backups de
seus bancos de dados MySQL. Os backups completos
podem ser executados em todos os dados InnoDB,
enquanto o MySQL estiver online, sem interromper
consultas ou atualizações. Além disso, há suporte
para backups incrementais, nos quais somente
os dados alterados desde um backup anterior são
copiados. Há suporte também para backups parciais,
quando apenas algumas tabelas ou espaços de tabela
precisam ser incluídos no backup.
Restauração
O MySQL Enterprise Backup restaura seus dados a
partir de um backup completo. A recuperação pontual
(PITR, na sigla em inglês) consistente permite que os
DBAs executem uma restauração de um ponto específico
no tempo. Usando binlog e backups MySQL, os DBAs
também podem executar recuperação com rolagem
para frente (roll-forward recovery) para uma transação
específica. A restauração parcial permite a recuperação
de tabelas ou espaços de tabelas específicos. Além disso,
os DBAs podem restaurar backups em um local separado,
criar clones para configuração ou administração de
replicação rápida.
Compactação
O MySQL Enterprise Backup comporta a criação
de arquivos de backup compactados, geralmente,
reduzindo o tamanho do backup de 70% até mais
de 90% em comparação ao tamanho dos arquivos
de banco de dados reais, reduzindo os custos de
armazenamento, entre outros.
Como o MySQL Enterprise Backup Funciona
O MySQL Enterprise Backup fornece uma interface
de linha de comando. Os backups são gravados no
disco e como a maioria das recuperações ocorre
em uma semana ou um dia, isso funciona como
uma área de armazenamento em disco que pode ser acessada rapidamente. No longo prazo, talvez seja necessário
recorrer a um arquivamento em fita, especialmente para backups completos.
O MySQL Enterprise Backup também fornece conhecimento intrínseco de formatos de arquivos de banco de dados:
• Executa validação em bloco
• Entende a recuperação de arquivos de dados e espaços de tabela
• Realiza backups apenas de dados reais e proporciona compactação de bloco não utilizado
• Oferece recuperação consistente
• Reduz o tamanho do arquivo de backup em mais de 90% usando a compactação de arquivos
18 | MySQL
19. MySQL Enterprise Backup - Recursos e Benefícios
Recursos Benefícios
Backup
Backup completo Um backup completo é realizado em todos os dados InnoDB
Backup incremental Somente os dados que foram alterados desde o backup anterior (completo ou
incremental)
Backup parcial Um backup de tabelas ou espaços de tabela específicos
Backup online de tabelas O backup acontece totalmente online, sem impedir consultas ou atualizações
InnoDB
Suporte de backup online e Os backups podem ser executados com o MySQL online ou offline
offline (hot e cold)
Recuperação
Restauração completa A restauração completa pode ser realizada a partir de um backup completo de todos
os dados InnoDB
Recuperação pontual (PITR) Executa a recuperação com rolagem para frente até um determinado ponto no tempo
consistente
Recuperação com rolagem para Os backups podem ser implantados para uma transação específica visando a uma
frente recuperação refinada
Restauração parcial Restauração de tabelas ou espaços de tabelas específicos
Restauração para um local Restaura para um local separado, cria clones para a configuração ou administração de
separado replicação rápida
Recursos avançados
Backups compactados O backup de arquivos InnoDB pode ser compactado, economizando até 90% do
armazenamento
Sem bloqueios O backup de tabelas InnoDB acontece totalmente online, sem bloquear consultas ou
atualizações
Backup de espaços de tabelas ou Melhora o desempenho, reduz o tempo de backup e diminui as exigências de I/O
conjuntos de tabelas específicos
Detecção de danos Verifica somas de verificação da página ao copiar dados InnoDB e arquivos de log
Sincronização de tarefas Permite a sincronização de tarefas pontuais de outras tarefas com o backup
Fazer backup apenas de dados Não copiar blocos não utilizados. Menos leituras e gravações no backup e
reais recuperação; o arquivo de backup usa menos espaço
Instalação fácil Simples de instalar e implantar em toda a empresa
Alto desempenho O tempo de backup é comparável à cópia de arquivos; a aplicação de logs referentes à
recuperação é ainda mais rápida
Tamanho do banco de dados Escalável, funciona bem para bancos de dados pequenos e muito grandes
ilimitado
Executado fora do espaço de Elimina o risco e aumenta o desempenho de execução como um processo separado,
processo do MySQL fora do espaço de processo do MySQL. O MySQL Enterprise Backup não instala
nenhum banco de dados adicional, DLLs, scripts, procedimentos armazenados ou
tabelas nas instâncias do MySQL
Interface programável A Interface de linha de comando permite integração fácil nos vários sistemas de
programação
Engines de armazenamento
Backup para Diversos Engines InnoDB, MyISAM, Merge, Partition, Archive
de Armazenamento e Formatos
Backup de tabelas MyISAM Enquanto as tabelas MyISAM estão sendo copiadas, os usuários podem ler as tabelas
MyISAM, mas não podem modificá-las
MySQL | 19