Você está na página 1de 290

THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY.

COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

D76574
Edição 2.0
Abril de 2012
D61762BP20
Guia do Aluno - Volume II
de Bancos de Dados
MySQL para Administradores

Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Aviso de isenção

Este documento contém informações de propriedade da Oracle Corporation e está protegido pela legislação de direitos autorais e
outras leis de propriedade intelectual, podendo ser copiado e impresso somente para uso individual em um curso de treinamento
Oracle. O documento pode não ser modificado nem alterado de forma alguma. Exceto em situações que constituam “uso justo” de
acordo com a legislação de direitos autorais, não será permitido utilizar, compartilhar, descarregar, carregar, copiar, imprimir,
executar, reproduzir, publicar, licenciar, divulgar, transmitir nem distribuir este documento - total ou parcialmente - sem a expressa
autorização da Oracle.

As informações contidas neste documento estão sujeitas a alterações sem aviso prévio. Se você encontrar algum problema no
documento, envie uma descrição de tal problema por escrito para: Oracle University, 500 Oracle Parkway, Redwood Shores,
California 94065 USA. A Oracle Corporation e a Oracle do Brasil Sistemas Ltda. (ambas conjuntamente denominadas Oracle) não

Oracle University and Error : You are not a Valid Partner use only
garantem que este documento esteja isento de erros.

Aviso sobre direitos restritos

Se essa documentação for entregue ao governo dos Estados Unidos ou a qualquer outra parte que utilize o documento em nome
daquele governo, a seguinte legenda será aplicável:

U.S. GOVERNMENT RIGHTS


The U.S. Government’s rights to use, modify, reproduce, release, perform, display, or disclose these training materials are restricted
by the terms of the applicable Oracle license agreement and/or the applicable U.S. Government contract.

Aviso de Marca Comercial

Oracle e Java são marcas comerciais registradas da Oracle e/ou de suas empresas afiliadas. Outros nomes podem ser marcas
comerciais de seus respectivos proprietários.

Autores

Patricia Garcia, Jeffrey Gorton

Colaboradores e Revisores Técnicos

Kimseong Loh, Mattias Jonsson, Rob Young, John Russell, Bill Millar, Calvin Sun, Oleksii
Porytskyi, Ritheesh Vedire, Stefan Hinz, Todd Farmer, Ron Soltani

Este manual foi publicado com o uso do: Oracle Tutor


THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Sumário

Introdução ao MySQL .......................................................................................................................................1-1


Introdução ao MySQL......................................................................................................................................1-2
Objetivos do Curso ...........................................................................................................................................1-3
Mapa de Lições do Curso.................................................................................................................................1-5
Apresentações...................................................................................................................................................1-8
Ambiente em Sala de Aula...............................................................................................................................1-9
Visão Geral do MySQL....................................................................................................................................1-10

Oracle University and Error : You are not a Valid Partner use only
Aquisições da Empresa do MySQL .................................................................................................................1-11
O MySQL está Movimentando o Mundo! .......................................................................................................1-12
Edições do Servidor de Banco de Dados MySQL...........................................................................................1-13
Ferramentas do MySQL ...................................................................................................................................1-14
Conectores e APIs MySQL ..............................................................................................................................1-15
Serviços MySQL ..............................................................................................................................................1-16
Suporte à Comunidade .....................................................................................................................................1-17
Suporte Permanente Oracle para MySQL........................................................................................................1-18
Sistemas Operacionais Suportados por MySQL..............................................................................................1-19
Web sites do MySQL .......................................................................................................................................1-20
Dimensão do Currículo do MySQL .................................................................................................................1-21
Certificação MySQL ........................................................................................................................................1-22
Documentação On-line do MySQL .................................................................................................................1-23
Arquitetura..........................................................................................................................................................2-1
Arquitetura........................................................................................................................................................2-2
Objetivos...........................................................................................................................................................2-3
Arquitetura do MySQL ....................................................................................................................................2-4
Programas Clientes...........................................................................................................................................2-5
Programas Administrativos e Utilitários..........................................................................................................2-6
Servidor MySQL ..............................................................................................................................................2-7
Processo do Servidor ........................................................................................................................................2-8
Camada de Conexão .........................................................................................................................................2-9
Protocolos de Comunicação .............................................................................................................................2-10
Camada SQL.....................................................................................................................................................2-11
Processamento de Instrução SQL.....................................................................................................................2-12
Camada de Armazenamento.............................................................................................................................2-13
Mecanismo de Armazenamento: Visão Geral .................................................................................................2-14
Recursos que Dependem do Mecanismo de Armazenamento .......................................................................2-15
Como o MySQL Usa o Espaço em Disco........................................................................................................2-16
Como o MySQL Usa a Memória .....................................................................................................................2-18
Estrutura das Memórias....................................................................................................................................2-19
Interface de Plugin do MySQL ........................................................................................................................2-21
Resumo .............................................................................................................................................................2-22
Visão Geral do Exercício 2-1: Questionário...................................................................................................2-23
Administração de Sistemas................................................................................................................................3-1
Administração de Sistemas ..............................................................................................................................3-2
Objetivos...........................................................................................................................................................3-3
Distribuições do Servidor MySQL ..................................................................................................................3-4
Distribuições Binárias do MySQL ...................................................................................................................3-5
Distribuições Fonte do MySQL .......................................................................................................................3-6
Arquivos de Instalação RPM do MySQL para Linux .....................................................................................3-7
Processo de Instalação de RPM do MySQL no Linux ....................................................................................3-8
Diretórios de Instalação do Servidor MySQL do Linux..................................................................................3-9
Iniciando o servidor MySQL no Linux............................................................................................................3-10
Parando o Servidor MySQL no Linux .............................................................................................................3-11
Melhorando a Segurança da Instalação............................................................................................................3-12
Diretório de Instalação do Servidor MySQL do Windows .............................................................................3-13
Executando o MySQL no Windows ................................................................................................................3-14

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

MySQL para Administradores de Bancos de Dados Sumário

i
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Diretório de Dados ...........................................................................................................................................3-15


Fazendo Upgrade da Release do Servidor MySQL.........................................................................................3-16
Verificando Tabelas com Upgrade...................................................................................................................3-17
Empregando Vários Servidores........................................................................................................................3-18
Opções de Vários Servidores ...........................................................................................................................3-19
Resumo .............................................................................................................................................................3-20
Visão Geral do Exercício 3-1: Instalar o Servidor MySQL ...........................................................................3-21
Visão Geral do Exercício 3-2: Diretório de Dados do MySQL .....................................................................3-22
Visão Geral do Exercício 3-3: Iniciar e Parar o Servidor MySQL ................................................................3-23
Configuração do Servidor..................................................................................................................................4-1
Configuração do Servidor ................................................................................................................................4-2

Oracle University and Error : You are not a Valid Partner use only
Objetivos...........................................................................................................................................................4-3
Opções de Configuração do MySQL ...............................................................................................................4-4
Motivos para Usar os Arquivos de Opções......................................................................................................4-5
Grupos de Arquivos de Opções........................................................................................................................4-6
Gravando um Arquivo de Opções....................................................................................................................4-7
Locais do Arquivo de Opções ..........................................................................................................................4-8
Opções de Inicialização em um Arquivo de Opções .......................................................................................4-9
Exemplo de Arquivos de Opções.....................................................................................................................4-10
Exibindo Opções dos Arquivos de Opções......................................................................................................4-11
Variáveis de Sistema do Servidor ....................................................................................................................4-12
Variáveis do Sistema Dinâmicas......................................................................................................................4-13
Exibindo Variáveis do Sistema Dinâmicas......................................................................................................4-14
Variáveis de Sistema Estruturadas ...................................................................................................................4-15
Variáveis de Status do Servidor .......................................................................................................................4-16
Modos SQL.......................................................................................................................................................4-17
Definindo o Modo SQL....................................................................................................................................4-18
Modos SQL Comuns ........................................................................................................................................4-19
Arquivos de Log ...............................................................................................................................................4-20
Matriz de Uso do Arquivo de Log ...................................................................................................................4-21
Log Binário.......................................................................................................................................................4-22
Formatos de Log Binário..................................................................................................................................4-24
Listar Arquivos de Log Binários......................................................................................................................4-25
Visualizar o Conteúdo do Log Binário ............................................................................................................4-26
Deletando Logs Binários ..................................................................................................................................4-27
Resumo .............................................................................................................................................................4-28
Visão Geral do Exercício 4-1: Editar e Criar um Arquivo de Configuração.................................................4-29
Visão Geral do Exercício 4-2: Questionário...................................................................................................4-30
Visão Geral do Exercício 4-3: Exercício Adicional: Configuração do Servidor...........................................4-31
Clientes e Ferramentas.......................................................................................................................................5-1
Clientes e Ferramentas .....................................................................................................................................5-2
Objetivos...........................................................................................................................................................5-3
Programas Clientes da Linha de Comando......................................................................................................5-4
Chamando Clientes de Linha de Comando......................................................................................................5-5
Opções do Parâmetro de Conexão ...................................................................................................................5-6
Chamando o Cliente mysql ..............................................................................................................................5-7
Cliente mysql: Atualizações Seguras...............................................................................................................5-8
Cliente mysql: Formatos de Saída....................................................................................................................5-9
Cliente mysql: Comandos do Cliente MySQL ................................................................................................5-10
Cliente mysql: Instruções SQL ........................................................................................................................5-11
Cliente mysql: Ajuda nas Instruções SQL .......................................................................................................5-12
Cliente mysql: Terminadores de Instrução SQL..............................................................................................5-13
Cliente mysql: Terminadores de Instrução Especiais......................................................................................5-14
Cliente mysql: Redefinindo o Prompt..............................................................................................................5-15
Cliente mysql: Usando Arquivos de Script......................................................................................................5-16
Cliente mysqladmin..........................................................................................................................................5-17
Chamando o Cliente mysqladmin ....................................................................................................................5-18
Questionário......................................................................................................................................................5-20
Ferramentas do MySQL ...................................................................................................................................5-21

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

MySQL para Administradores de Bancos de Dados Sumário

ii
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

MySQL Enterprise Monitor .............................................................................................................................5-22


MySQL Enterprise Monitor: Painel.................................................................................................................5-23
MySQL Enterprise Monitor: Acesso ...............................................................................................................5-24
MySQL Workbench .........................................................................................................................................5-25
MySQL Workbench: Janela da GUI ................................................................................................................5-26
MySQL Workbench: Acesso ...........................................................................................................................5-27
MySQL Proxy...................................................................................................................................................5-28
Conectores do MySQL.....................................................................................................................................5-29
APIs de Terceiros .............................................................................................................................................5-30
Resumo .............................................................................................................................................................5-31
Visão Geral do Exercício 5-1: Chamar o Cliente mysql ................................................................................5-32

Oracle University and Error : You are not a Valid Partner use only
Visão Geral do Exercício 5-2: Chamar o Cliente mysqladmin ......................................................................5-33
Visão Geral do Exercício 5-3: Exibir as Demonstrações do MySQL Enterprise Monitor.............................5-34
Visão Geral do Exercício 5-4: Exibir as Demonstrações do MySQL Workbench........................................5-35
Tipos de Dados ....................................................................................................................................................6-1
Tipos de Dados .................................................................................................................................................6-2
Objetivos...........................................................................................................................................................6-3
Tipos de Dados: Visão Geral ...........................................................................................................................6-4
Criando Tabelas com Tipos de Dados .............................................................................................................6-5
Tipos de Dados Numéricos ..............................................................................................................................6-6
Tipos de Dados de String de Caracteres ..........................................................................................................6-8
Suporte a Conjunto de Caracteres e Organização............................................................................................6-10
Tipos de Dados de String Binária ....................................................................................................................6-12
Tipos de Dados Temporais...............................................................................................................................6-14
Configurando Tipos de Dados como NULL....................................................................................................6-15
Criando Tabelas com Atributos de Coluna......................................................................................................6-16
Atributos da Coluna..........................................................................................................................................6-17
Escolhendo Tipos de Dados .............................................................................................................................6-19
Resumo .............................................................................................................................................................6-20
Visão Geral do Exercício 6-1: Questionário...................................................................................................6-21
Visão Geral do Exercício 6-2: Definir um Tipo de Dados.............................................................................6-22
Obtendo Metadados ...........................................................................................................................................7-1
Obtendo Metadados..........................................................................................................................................7-2
Objetivos...........................................................................................................................................................7-3
Métodos de Acesso a Metadados .....................................................................................................................7-4
Banco de Dados INFORMATION_SCHEMA................................................................................................7-5
Tabelas do INFORMATION_SCHEMA ........................................................................................................7-6
Colunas da Tabela do INFORMATION_SCHEMA.......................................................................................7-8
Usando SELECT com INFORMATION_SCHEMA......................................................................................7-9
Exemplos de INFORMATION_SCHEMA .....................................................................................................7-10
Criando Comandos Shell com Tabelas do INFORMATION_SCHEMA.......................................................7-11
Criando Instruções SQL com Tabelas do INFORMATION_SCHEMA........................................................7-12
Instruções SHOW Suportadas por MySQL.................................................................................................7-13
Exemplos da Instrução SHOW ........................................................................................................................7-15
Exemplos de Instrução SHOW Adicionais......................................................................................................7-16
Instrução DESCRIBE.......................................................................................................................................7-17
Cliente mysqlshow ...........................................................................................................................................7-18
Exemplos de mysqlshow ..................................................................................................................................7-19
Resumo .............................................................................................................................................................7-20
Visão Geral do Exercício 7-1: Obter metadados usando INFORMATION_SCHEMA ..............................7-21
Visão Geral do Exercício 7-2: Obter Metadados Usando SHOW e DESCRIBE.........................................7-22
Visão Geral do Exercício 7-3: Obter Metadados Usando mysqlshow..........................................................7-23
Transações e Bloqueio........................................................................................................................................8-1
Transações e Bloqueio......................................................................................................................................8-2
Objetivos...........................................................................................................................................................8-3
Transações ........................................................................................................................................................8-4
Diagrama da Transação ....................................................................................................................................8-5
ACID.................................................................................................................................................................8-6
Instruções de Controle SQL da Transação.......................................................................................................8-7

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

MySQL para Administradores de Bancos de Dados Sumário

iii
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Fluxo de Instruções de Controle de SQL: Exemplo ........................................................................................8-8


Modo AUTOCOMMIT....................................................................................................................................8-9
Confirmação Implícita......................................................................................................................................8-10
Mecanismos de Armazenamento Transacional ...............................................................................................8-11
Problemas de Isolamento da Transação...........................................................................................................8-12
Níveis de Isolamento ........................................................................................................................................8-13
Problemas do Nível de Isolamento ..................................................................................................................8-14
Definindo o Nível de Isolamento .....................................................................................................................8-15
Nível de Isolamento Global..............................................................................................................................8-16
Exemplo de Transação: Isolamento .................................................................................................................8-17
Conceitos de Bloqueio......................................................................................................................................8-19

Oracle University and Error : You are not a Valid Partner use only
Bloqueio Explícito de Linhas...........................................................................................................................8-20
Deadlocks .........................................................................................................................................................8-21
Exemplo de Transação: Deadlock....................................................................................................................8-22
Bloqueios Implícitos.........................................................................................................................................8-23
Resumo .............................................................................................................................................................8-24
Visão Geral do Exercício 8-1: Questionário...................................................................................................8-25
Visão Geral do Exercício 8-2: Usar Instruções de Controle de Transação...................................................8-26
Visão Geral do Exercício 8-3: Exercício Adicional com Transações e Bloqueio ........................................8-27
Mecanismo de Armazenamento InnoDB .........................................................................................................9-1
Mecanismo de Armazenamento InnoDB.........................................................................................................9-2
Objetivos...........................................................................................................................................................9-3
Mecanismo de Armazenamento InnoDB.........................................................................................................9-4
InnoDB como Mecanismo de Armazenamento Default..................................................................................9-5
Recursos do InnoDB.........................................................................................................................................9-6
Exiba a Definição do Mecanismo de Armazenamento ...................................................................................9-7
Defina o Mecanismo de Armazenamento para InnoDB.................................................................................9-8
Converta Tabelas Existentes em Tabelas do InnoDB......................................................................................9-9
Tablespace de Sistema do InnoDB ..................................................................................................................9-10
Vários Tablespaces...........................................................................................................................................9-11
Estrutura de Diretório de Vários Tablespaces .................................................................................................9-12
Configuração de Tablespace ............................................................................................................................9-13
Reduza o Tamanho do Tablespace...................................................................................................................9-14
Arquivos e Buffers de Log: Diagrama.............................................................................................................9-15
Vários Pools de Buffers....................................................................................................................................9-17
Integridade Referencial ....................................................................................................................................9-18
Várias Versões ..................................................................................................................................................9-19
Bloqueio............................................................................................................................................................9-20
Bloqueio de Chave Seguinte ............................................................................................................................9-21
Leituras de Não Bloqueio Consistentes ...........................................................................................................9-22
Reduza Deadlocks ............................................................................................................................................9-23
Bloqueio de Chave Estrangeira ........................................................................................................................9-24
Resumo .............................................................................................................................................................9-25
Visão Geral do Exercício 9-1: Questionário...................................................................................................9-26
Visão Geral do Exercício 9-2: Definir e Confirmar Configurações do InnoDB ..........................................9-27
Outras Informações do Mecanismo..................................................................................................................10-1
Outras Informações do Mecanismo de Armazenamento................................................................................10-2
Objetivos...........................................................................................................................................................10-3
Mecanismos de Armazenamento e MySQL ....................................................................................................10-4
Mecanismos de Armazenamento Disponíveis.................................................................................................10-5
Mecanismo de Armazenamento MyISAM ......................................................................................................10-6
MyISAM: Gráfico de Recursos .......................................................................................................................10-7
MyISAM: Formatos de Armazenamento de Linha .........................................................................................10-8
MyISAM: Compactação da Tabela..................................................................................................................10-9
MyISAM: Bloqueio..........................................................................................................................................10-10
MyISAM: Prioridade de Bloqueio ...................................................................................................................10-11
InnoDB Versus MyISAM: Gráfico de Recursos .............................................................................................10-12
Mecanismo de Armazenamento MEMORY....................................................................................................10-13
MEMORY: Gráfico de Recursos .....................................................................................................................10-14

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

MySQL para Administradores de Bancos de Dados Sumário

iv
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

MEMORY: Opções de Indexação ...................................................................................................................10-15


MEMORY: Melhores Práticas .........................................................................................................................10-16
Mecanismo de Armazenamento ARCHIVE....................................................................................................10-17
ARCHIVE: Formato de Armazenamento........................................................................................................10-18
ARCHIVE: Recuperação e Arquiamento ........................................................................................................10-19
Mecanismo de Armazenamento BLACKHOLE .............................................................................................10-20
BLACKHOLE: Processo Master e Slave ........................................................................................................10-21
BLACKHOLE: Repetidor e Filtro ...................................................................................................................10-22
Mecanismo de Armazenamento NDBCLUSTER ...........................................................................................10-23
NDBCLUSTER: Diagrama de Processo .........................................................................................................10-24
NDBCLUSTER: Vantagens Principais ...........................................................................................................10-25

Oracle University and Error : You are not a Valid Partner use only
Escolhendo Mecanismos de Armazenamento Apropriados ............................................................................10-26
Escolhendo Entre InnoDB, MyISAM e MEMORY.......................................................................................10-27
Usando Diversos Mecanismos de Armazenamento ........................................................................................10-28
Resumo .............................................................................................................................................................10-29
Visão Geral do Exercício 10-1: Questionário.................................................................................................10-30
Visão Geral do Exercício 10-2: Definir e Usar Mecanismos de Armazenamento .......................................10-31
Particionamento..................................................................................................................................................11-1
Particionamento ................................................................................................................................................11-2
Objetivos...........................................................................................................................................................11-3
Particionamento ................................................................................................................................................11-4
Analogia do Particionamento ...........................................................................................................................11-5
Particionamento Específico do MySQL ..........................................................................................................11-6
Tipos de Particionamento.................................................................................................................................11-7
Suporte a Particionamento ...............................................................................................................................11-8
Melhore o Desempenho com o Particionamento.............................................................................................11-9
Desafios de Desempenho com o Particionamento...........................................................................................11-10
Sintaxe de Partição Básica ...............................................................................................................................11-11
Particionamento RANGE .................................................................................................................................11-12
Particionamento LIST ......................................................................................................................................11-13
Particionamento HASH....................................................................................................................................11-14
Particionamento KEY.......................................................................................................................................11-15
Subparticionamento..........................................................................................................................................11-16
Obtendo Informações da Partição ....................................................................................................................11-17
Obtendo Informações de Partição: SHOW CREATE TABLE .......................................................................11-18
Obtendo Informações de Partição: SHOW TABLE STATUS .......................................................................11-19
Obtendo Informações de Partição: INFORMATION_SCHEMA...................................................................11-20
Obtendo Informações de Partição: EXPLAIN PARTITIONS........................................................................11-21
Alterando uma Partição ....................................................................................................................................11-22
Redefinindo o Tipo de Particionamento ..........................................................................................................11-23
Eliminando Partições........................................................................................................................................11-24
Problemas de Uso de DROP PARTITION......................................................................................................11-25
Removendo o Particionamento ........................................................................................................................11-26
Efeitos de Desempenho de Alteração de uma Partição ...................................................................................11-27
Suporte de Mecanismo de Armazenamento para Particionamento................................................................11-28
Particionamento com o InnoDB.......................................................................................................................11-29
Particionamento com o MyISAM ....................................................................................................................11-30
Particionamento e Bloqueio .............................................................................................................................11-31
Limitações de Particionamento ........................................................................................................................11-32
Limitações de Expressão da Partição...............................................................................................................11-33
Resumo .............................................................................................................................................................11-34
Visão Geral do Exercício 11-1: Questionário................................................................................................11-35
Visão Geral do Exercício 11-2: Criar e Modificar uma Tabela Particionada...............................................11-36
Visão Geral do Exercício 11-3: Remover Partições de uma Tabela .............................................................11-37
Gerenciamento de Usuário ................................................................................................................................12-1
Gerenciamento de Usuário ...............................................................................................................................12-2
Objetivos...........................................................................................................................................................12-3
Importância de Gerenciamento do Usuário .....................................................................................................12-4
Verificação de Conta do Usuário .....................................................................................................................12-5

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

MySQL para Administradores de Bancos de Dados Sumário

v
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Exibir Definições de Conta do Usuário ...........................................................................................................12-6


Autenticação .....................................................................................................................................................12-7
Criando uma Conta de Usuário ........................................................................................................................12-8
Definindo a Senha da Conta.............................................................................................................................12-9
Confirmando Senhas ........................................................................................................................................12-10
Manipulando Contas do Usuário......................................................................................................................12-11
Autorização.......................................................................................................................................................12-12
Determinando Privilégios Apropriados de Usuário.........................................................................................12-13
Concedendo Privilégios Administrativos ........................................................................................................12-14
SHOW PROCESSLIST ...................................................................................................................................12-15
Instrução GRANT ............................................................................................................................................12-16

Oracle University and Error : You are not a Valid Partner use only
Exibir Privilégios GRANT...............................................................................................................................12-17
Restrições de Privilégio do Usuário.................................................................................................................12-18
Tabelas de Concessão.......................................................................................................................................12-19
Uso de Tabelas de Concessão ..........................................................................................................................12-20
Modificando Tabelas de Concessão.................................................................................................................12-21
Revogando Privilégios de Conta......................................................................................................................12-23
Desativando o Controle de Acesso do Cliente.................................................................................................12-24
Definindo Limites de Recurso da Conta..........................................................................................................12-25
Resumo .............................................................................................................................................................12-26
Visão Geral do Exercício 12-1: Questionário................................................................................................12-27
Visão Geral do Exercício 12-2: Criar, Verificar e Eliminar um Usuário......................................................12-28
Visão Geral do Exercício 12-3: Configurar um Usuário para world_innodb ...............................................12-29
Visão Geral do Exercício 12-4: Exercício Adicional ....................................................................................12-30
Segurança ............................................................................................................................................................13-1
Segurança..........................................................................................................................................................13-2
Objetivos...........................................................................................................................................................13-3
Riscos à Segurança ...........................................................................................................................................13-4
Riscos à Segurança na Instalação do MySQL .................................................................................................13-5
Segurança na Rede ...........................................................................................................................................13-6
Segurança da Senha..........................................................................................................................................13-7
Segurança do Sistema Operacional..................................................................................................................13-8
Segurança do Sistema de Arquivos..................................................................................................................13-9
Proteja Seus Dados ...........................................................................................................................................13-10
Usando Conexões Seguras ...............................................................................................................................13-11
Protocolo SSL...................................................................................................................................................13-12
Usando SSL com o Servidor MySQL..............................................................................................................13-13
Iniciando o Servidor MySQL com SSL...........................................................................................................13-14
Requerendo Conexões Criptografadas por SSL ..............................................................................................13-15
Verificando Status SSL ....................................................................................................................................13-16
Vantagens e Desvantagens do Uso do SSL .....................................................................................................13-17
Conexão Remota do Servidor Seguro com o MySQL ....................................................................................13-18
Perguntas Frequentes Sobre a Segurança do MySQL .....................................................................................13-19
Resumo .............................................................................................................................................................13-20
Visão Geral do Exercício 13-1: Questionário................................................................................................13-21
Visão Geral do Exercício 13-2: Determinar o Status da Conectividade do SSL..........................................13-22
Visão Geral do Exercício 13-3: Ativar o MySQL para Conexões SSL .........................................................13-23
Manutenção da Tabela.......................................................................................................................................14-1
Manutenção da Tabela......................................................................................................................................14-2
Objetivos...........................................................................................................................................................14-3
Implementação de Manutenção da Tabela.......................................................................................................14-4
SQL para Operações de Manutenção da Tabela..............................................................................................14-5
Instrução ANALYZE TABLE .........................................................................................................................14-6
Instrução CHECK TABLE...............................................................................................................................14-7
Instrução CHECKSUM TABLE......................................................................................................................14-9
Instrução OPTIMIZE TABLE .........................................................................................................................14-10
Instrução REPAIR TABLE..............................................................................................................................14-12
Programa Cliente mysqlcheck..........................................................................................................................14-14
Utilitário myisamchk ........................................................................................................................................14-16

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

MySQL para Administradores de Bancos de Dados Sumário

vi
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Opções para mysqlcheck e myisamchk ...........................................................................................................14-17


Manutenção da Tabela do InnoDB ..................................................................................................................14-19
Manutenção da Tabela do MyISAM................................................................................................................14-20
Manutenção da Tabela do MEMORY .............................................................................................................14-21
Manutenção da Tabela do ARCHIVE .............................................................................................................14-22
Resumo .............................................................................................................................................................14-23
Visão Geral do Exercício 14-1: Questionário................................................................................................14-24
Visão Geral do Exercício 14-2: Manutenção de Tabela Usando Instruções SQL........................................14-25
Visão Geral do Exercício 14-3: Manutenção de Tabela Usando Utilitários do MySQL .............................14-26
Exportando e Importando Dados .....................................................................................................................15-1
Exportando e Importando Dados .....................................................................................................................15-2

Oracle University and Error : You are not a Valid Partner use only
Objetivos...........................................................................................................................................................15-3
Exportando e Importando Dados .....................................................................................................................15-4
Exportar Dados Usando SELECT com INTO OUTFILE ..............................................................................15-5
Usando Especificadores de Formato de Arquivo de Dados ...........................................................................15-6
Sequências de Caracteres de Escape................................................................................................................15-7
Importe Dados Usando LOAD DATA INFILE ..............................................................................................15-8
Ignorando ou Transformando Dados de Entrada.............................................................................................15-9
Registros Duplicados........................................................................................................................................15-10
Resumo .............................................................................................................................................................15-12
Visão Geral do Exercício 15-1: Exportar Dados do MySQL........................................................................15-13
Visão Geral do Exercício 15-2: Importar Dados ............................................................................................15-14
Programando Dentro do MySQL .....................................................................................................................16-1
Programando Dentro do MySQL .....................................................................................................................16-2
Objetivos...........................................................................................................................................................16-3
Rotinas Armazenadas .......................................................................................................................................16-4
Usos de Rotinas Armazenadas .........................................................................................................................16-5
Problemas de Rotina Armazenada ...................................................................................................................16-6
Executando Rotinas Armazenadas...................................................................................................................16-7
Procedimento Armazenado: Exemplo .............................................................................................................16-8
Função Armazenada: Exemplo ........................................................................................................................16-9
Examine as Rotinas Armazenadas ...................................................................................................................16-11
Rotinas Armazenadas e Segurança de Execução.............................................................................................16-13
Questionário......................................................................................................................................................16-14
Triggers.............................................................................................................................................................16-15
Crie Triggers.....................................................................................................................................................16-16
Eventos do Trigger ...........................................................................................................................................16-17
Tratamento de Erros do Trigger.......................................................................................................................16-18
Examinando Triggers .......................................................................................................................................16-19
Eliminando Triggers.........................................................................................................................................16-20
Restrições em Triggers.....................................................................................................................................16-21
Acionar Privilégios...........................................................................................................................................16-22
Questionário......................................................................................................................................................16-23
Eventos..............................................................................................................................................................16-24
Programação .....................................................................................................................................................16-26
Programador de Eventos e Privilégios .............................................................................................................16-28
Evento Executado com Privilégios do Definidor ............................................................................................16-29
Examinando Eventos ........................................................................................................................................16-30
Eliminando Eventos..........................................................................................................................................16-31
Questionário......................................................................................................................................................16-32
SIGNAL e RESIGNAL....................................................................................................................................16-33
Resumo .............................................................................................................................................................16-34
Visão Geral do Exercício 16-1: Criar Rotinas Armazenadas.........................................................................16-35
Visão Geral do Exercício 16-2: Verificar Rotinas Armazenadas...................................................................16-36
Visão Geral do Exercício 16-3: Criando Triggers..........................................................................................16-37
Visão Geral do Exercício 16-4: Criar e Testar um Evento.............................................................................16-38
Views ....................................................................................................................................................................17-1
Views ................................................................................................................................................................17-2
Objetivos...........................................................................................................................................................17-3

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

MySQL para Administradores de Bancos de Dados Sumário

vii
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Views ................................................................................................................................................................17-4
Crie Views ........................................................................................................................................................17-6
Questionário......................................................................................................................................................17-7
Views Atualizáveis...........................................................................................................................................17-8
Views Inseríveis ...............................................................................................................................................17-9
Questionário......................................................................................................................................................17-10
SQL SECURITY ..............................................................................................................................................17-11
DEFINER .........................................................................................................................................................17-13
WITH CHECK OPTION .................................................................................................................................17-14
Examine as Views ............................................................................................................................................17-15
Altere as Definições da View...........................................................................................................................17-16

Oracle University and Error : You are not a Valid Partner use only
Elimine as Views ..............................................................................................................................................17-17
Questionário......................................................................................................................................................17-18
Resumo .............................................................................................................................................................17-19
Visão Geral do Exercício 17-1: Criar Views ..................................................................................................17-20
Visão Geral do Exercício 17-2: Views Atualizáveis ......................................................................................17-21
Visão Geral do Exercício 17-3: Exibir e Modificar Views ............................................................................17-22
Backup e Recuperação de MySQL...................................................................................................................18-1
Backup e Recuperação de MySQL ..................................................................................................................18-2
Objetivos...........................................................................................................................................................18-3
Noções Básicas de Backup...............................................................................................................................18-4
Backups com MySQL ......................................................................................................................................18-7
Questionário......................................................................................................................................................18-8
Backups Lógicos (Textuais).............................................................................................................................18-9
Backups Físicos (Brutos ou Binários)..............................................................................................................18-10
Backup Baseado em Snapshot..........................................................................................................................18-11
Backup Baseado em Replicação ......................................................................................................................18-12
Questionário......................................................................................................................................................18-13
Log Binário e Backups Incrementais ...............................................................................................................18-14
Ferramentas de Backup: Visão Geral...............................................................................................................18-15
MySQL Enterprise Backup ..............................................................................................................................18-17
mysqlbackup.....................................................................................................................................................18-19
Restaurando um Backup com o mysqlbackup.................................................................................................18-20
Backups de um Único Arquivo do mysqlbackup ............................................................................................18-21
Restaurando Backups de um Único Arquivo do mysqlbackup......................................................................18-22
Questionário......................................................................................................................................................18-23
Backups Brutos do InnoDB..............................................................................................................................18-24
Backups Brutos do MyISAM...........................................................................................................................18-25
mysqlhotcopy....................................................................................................................................................18-26
Portabilidade Binária Bruta..............................................................................................................................18-27
mysqldump .......................................................................................................................................................18-28
Consistência com o mysqldump.......................................................................................................................18-29
Opções de formato de saída do mysqldump ....................................................................................................18-30
Restaurando Backups do mysqldump ..............................................................................................................18-31
Questionário......................................................................................................................................................18-33
Fazendo Backup de Arquivos de Log e Status ................................................................................................18-34
Replicação como um Auxílio para Backup .....................................................................................................18-35
Comparando Métodos de Backup ....................................................................................................................18-36
Estratégia de Backup ........................................................................................................................................18-37
Processando o Conteúdo do Log Binário.........................................................................................................18-38
Questionário......................................................................................................................................................18-40
Resumo .............................................................................................................................................................18-41
Visão Geral do Exercício 18-1: Questionário................................................................................................18-42
Visão Geral do Exercício 18-2: MySQL Enterprise Backup ........................................................................18-43
Visão Geral do Exercício 18-3: mysqldump...................................................................................................18-44
Visão Geral do Exercício 18-4: Uma Recuperação Completa .......................................................................18-45
Introdução à Replicação ....................................................................................................................................19-1
Introdução à Replicação ...................................................................................................................................19-2
Objetivos...........................................................................................................................................................19-3

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

MySQL para Administradores de Bancos de Dados Sumário

viii
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Replicação no MySQL .....................................................................................................................................19-4


Tipos de Replicação .........................................................................................................................................19-6
Replicação no MySQL .....................................................................................................................................19-8
Threads e Arquivos de Replicação...................................................................................................................19-9
Threads de Replicação......................................................................................................................................19-10
Arquivos de Replicação....................................................................................................................................19-11
Configurando a Replicação do MySQL...........................................................................................................19-12
CHANGE MASTER TO..................................................................................................................................19-13
Monitore uma Replicação no MySQL .............................................................................................................19-14
Estados de Thread I/O do Slave de Replicação ...............................................................................................19-15
Estados de Thread SQL do Slave de Replicação.............................................................................................19-17

Oracle University and Error : You are not a Valid Partner use only
Diagnosticando e Solucionando Problemas de Replicação no MySQL .........................................................19-18
Diagnosticando e Solucionando Problemas de Replicação no MySQL ........................................................19-19
Resumo .............................................................................................................................................................19-20
Visão Geral do Exercício 19-1: Questionário................................................................................................19-21
Visão Geral do Exercício 19-2: Log Binário .................................................................................................19-22
Visão Geral do Exercício 19-3: Replicação de Configuração........................................................................19-23
Visão Geral do Exercício 19-4: Fazendo Backup de um Slave .....................................................................19-24
Introdução ao Ajuste do Desempenho .............................................................................................................20-1
Introdução ao Ajuste do Desempenho .............................................................................................................20-2
Objetivos...........................................................................................................................................................20-3
Otimizações Gerais de Tabela..........................................................................................................................20-4
EXPLAIN .........................................................................................................................................................20-6
PROCEDURE ANALYSE ..............................................................................................................................20-7
Variáveis de Status Superior ............................................................................................................................20-8
Principais Variáveis de Sistema do Servidor ...................................................................................................20-10
Resumo .............................................................................................................................................................20-12
Visão Geral do Exercício 20-1: Questionário................................................................................................20-13
Visão Geral do Exercício 20-2: EXPLAIN ...................................................................................................20-14
Visão Geral do Exercício 20-3: PROCEDURE ANALYSE..........................................................................20-15
Conclusão.............................................................................................................................................................21-1
Conclusão .........................................................................................................................................................21-2
Objetivos do Curso ...........................................................................................................................................21-3
Trajetória de Currículo do MySQL..................................................................................................................21-5
Recursos do MySQL ........................................................................................................................................21-6
Precisamos de sua Avaliação!..........................................................................................................................21-7
Obrigado ...........................................................................................................................................................21-8
Sessão de Perguntas e Respostas......................................................................................................................21-9
Apêndice: Otimização de Consulta Usando as Colunas de Saída EXPLAIN .............................................22-1
A Instrução EXPLAIN .....................................................................................................................................22-3
Colunas de Saída EXPLAIN para Joins...........................................................................................................22-5
Colunas da Saída EXPLAIN para Processamento de Tabela..........................................................................22-7
Colunas de Saída EXPLAIN para Joins...........................................................................................................22-8
Apêndice: Exercícios de Scripts de Soluções ...................................................................................................23-1
Lição 1: Introdução...........................................................................................................................................23-3
Lição 2: Arquitetura do MySQL ......................................................................................................................23-3
Lição 3: Administração de Sistemas................................................................................................................23-4
Lição 4: Configuração do Servidor..................................................................................................................23-6
Lição 5: Clientes e Ferramentas.......................................................................................................................23-9
Lição 6: Tipos de Dados...................................................................................................................................23-11
Lição 7: Obter Metadados ................................................................................................................................23-12
Lição 8: Transações e Bloqueio .......................................................................................................................23-14
Lição 9: Mecanismo de Armazenamento InnoDB ..........................................................................................23-17
Lição 10: Outras Informações do Mecanismo de Armazenamento ................................................................23-19
Lição 11: Outras Informações do Mecanismo de Armazenamento ................................................................23-21
Lição 12: Gerenciamento de Usuário...............................................................................................................23-23
Lição 13: Segurança .........................................................................................................................................23-26
Lição 14: Manutenção da Tabela .....................................................................................................................23-28

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

MySQL para Administradores de Bancos de Dados Sumário

ix
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Lição 15: Exportar e Importar..........................................................................................................................23-29


Lição 16: Programando Dentro do MySQL ....................................................................................................23-30
Lição 17: Views................................................................................................................................................23-33
Lição 18: Backup e Recuperação.....................................................................................................................23-35
Lição 19: Introdução à Replicação...................................................................................................................23-41
Lição 20: Introdução ao Ajuste do Desempenho.............................................................................................23-46

Oracle University and Error : You are not a Valid Partner use only

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

MySQL para Administradores de Bancos de Dados Sumário

x
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Prefácio
Perfil
Antes de começar este curso, são necessários:
• Alguma experiência com bancos de dados e SQL e o desejo de administrar o MySQL
• O desejo de obter certificação de DBA do MySQL

Pré-requisitos

Oracle University and Error : You are not a Valid Partner use only
Você deve ter um dos seguintes pré-requisitos:
• Conclusão do curso MySQL for Beginners (D61918GC10)
• Alguma experiência com bancos de dados relacionais e SQL

Como Este Curso É Organizado


MySQL for Database Administrators é um curso com instrutor que contém explicação,
demonstrações, questionários e exercícios práticos. As sessões de exercícios reforçam os
conceitos e os conhecimentos apresentados.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

MySQL para Administradores de Bancos de Dados Sumário

xi
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Publicações Relacionadas
Publicações Adicionais

• Informativos de release do sistema

• Guias de instalação e do usuário

Oracle University and Error : You are not a Valid Partner use only
• Arquivos Read-me

• Artigos do IOUG (International Oracle User’s Group)

• Oracle Magazine

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

MySQL para Administradores de Bancos de Dados Sumário

xii
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Convenções Tipográficas

Convenções Tipográficas no Texto

As seguintes convenções tipográficas são usadas em todo o guia de treinamento:


• A entrada e a saída do computador são impressas neste formato: Entrada ou saída
do computador. Isso também é usado nos nomes de programas executáveis e locais
de arquivos.

Oracle University and Error : You are not a Valid Partner use only
• As palavras-chave da linguagem SQL aparecem neste formato: PALAVRA-CHAVE SQL.
As palavras-chave SQLnão fazem distinção entre maiúsculas e minúsculas e podem ser
escritas em qualquer letra, mas o guia de treinamento usa letra maiúscula.
Quando os comandos são mostrados indicando que devem ser executados a partir de um
programa específico, o prompt mostrado anterior ao comando indica qual comando deve ser
usado. Por exemplo, sys> indica um comando que você executa a partir do shell, e mysql>
indica uma instrução que você executa no programa cliente mysql:
shell> mysql -u root -h 127.0.0.1
mysql> SELECT * FROM world.City;
O “sys” é o interpretador do comando. No Linux, geralmente é um programa como sh, csh,
ou bash. No Windows, o programa equivalente é command.com ou cmd.exe, geralmente
executado em uma janela do console. Ao digitar um comando ou instrução mostrado em um
exemplo, não digite o prompt mostrado no exemplo. Nomes de bancos de dados, tabela e
coluna devem ser sempre substituídos nas instruções. Para indicar que tal substituição é
necessária, este manual usa db_name, tbl_name e col_name. Por exemplo, você pode ver
uma instrução como essa:
mysql> SELECT col_name FROM db_name.tbl_name;
Isso significa que se informar uma instrução semelhante, você fornecerá os nomes de seu
banco de dados, tabela e coluna para os espaços reservados db_name,tbl_name e
col_name., talvez como este:
mysql> SELECT author_name FROM biblio_db.author_list;
Nas descrições da sintaxe, os colchetes ([ e ]) indicam palavras ou cláusulas opcionais. Por
exemplo, na seguinte instrução, IF EXISTS é opcional:
DROP TABLE [IF EXISTS] tbl_name;
Quando um elemento de sintaxe consiste em várias alternativas, elas são separadas por
barras verticais ( |).
Quando um membro de um conjunto de opções pode ser escolhido, as alternativas são listadas
nos colchetes ([ e ]):
TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)
Quando um membro de um conjunto de opções precisa ser escolhido, as alternativas são
listadas nas chaves ({ e }):

{DESCRIBE | DESC} tbl_name [col_name | wild]

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

MySQL para Administradores de Bancos de Dados Sumário

xiii
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Convenções Tipográficas (continuação)

Convenções Tipográficas no Texto (continuação)

As reticências (...) indicam a omissão de uma seção de uma instrução, geralmente para
fornecer uma versão mais curta de uma sintaxe mais complexa. Por exemplo, INSERT ...
SELECT é a abreviação do formato da instrução INSERT que é seguida por uma instrução
SELECT.

Oracle University and Error : You are not a Valid Partner use only
As reticências também podem indicar que o elemento da sintaxe precedente de uma instrução
pode ser repetido.
No exemplo a seguir, vários valores de reset_option podem ser fornecidos, com cada um
deles após o primeiro precedido por vírgulas:

RESET reset_option[, reset_option] ...

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

MySQL para Administradores de Bancos de Dados Sumário

xiv
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Segurança
Capítulo 13 - Página 1
Capítulo 13
Segurança

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Segurança
Segurança

Capítulo 13 - Página 2
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Segurança
Objetivos

Capítulo 13 - Página 3
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Riscos à Segurança

Oracle University and Error : You are not a Valid Partner use only
Você deve manter os dados armazenados nos bancos de dados MySQL seguros para evitar
a exposição de dados que os usuários do MySQL desejam manter privados.
O MySQL usa a segurança baseada em listas de controle de acesso (ACLs).
Para obter mais informações sobre problemas de segurança do MySQL, consulte o MySQL
Reference Manual: http://dev.mysql.com/doc/refman/5.5/en/security.html.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Segurança
Capítulo 13 - Página 4
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Riscos à Segurança na Instalação do MySQL

Oracle University and Error : You are not a Valid Partner use only
• Segurança na rede: Informações sobre as contas do cliente são armazenadas no
banco de dados mysql. Configure cada conta com privilégios que permitem acesso
apenas aos dados que a conta precisa verificar ou modificar. Designe senhas de contas
para dificultar a conexão com o servidor com o uso de conta de outra pessoa. Por
exemplo, uma conta raiz do MySQL tem privilégios completos para executar qualquer
operação do banco de dados; por isso, é importante designar uma senha que não seja
facilmente adivinhada.
• Segurança do sistema operacional: Normalmente você administra o MySQL usando
uma conta de log-in dedicada para essa finalidade. Entretanto, esse host de conta
também pode ter outras contas de log-in. Reduzir o número de contas não relacionadas
ao MySQL minimiza o risco.
• Segurança do sistema de arquivos: Os diretórios e os arquivos fazem parte do
sistema de arquivos, portanto, é necessário protege-los contra acesso direto de outros
usuários que possuem contas de log-in no host do servidor. Uma instalação do MySQL
também inclui programas e scripts usados para gerenciar e acessar bancos de dados.
Os usuários precisam ser capazes de executar alguns deles (como os programas
clientes) mas não devem ter permissão para modificar ou substituí-los.
A segurança da rede pode ser considerada o nível de defesa mais elevado. Ela inclui a
segurança do sistema operacional. Dentro dela está a segurança do sistema de arquivos e,
ainda mais profundamente, está a segurança do usuário. Mesmo que cada nível de
segurança tenha suas falhas (ou brechas), os níveis formam uma fortaleza praticamente
impenetrável quando são combinados.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Segurança
Capítulo 13 - Página 5
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Segurança na Rede

Oracle University and Error : You are not a Valid Partner use only
O servidor MySQL opera no ambiente cliente/servidor e fornece um serviço orientado à rede
inerentemente. É importante ter certeza de que somente clientes autorizados possam se
conectar ao servidor para acessar seus bancos de dados. Também é importante verificar que
as contas do MySQL sejam protegidas com senhas e não tenham privilégios desnecessários.
Além disso, considere a limitação de interfaces de rede usadas pelo servidor.
Há muitos bons firewalls de código-fonte aberto gratuitos. O MySQL não é voltado para a
Internet. Deverá ser tomado cuidado especial se o MySQL não estiver incluído no DMZ. Na
verdade, se o MySQL estiver sendo executado na mesma máquina como uma aplicação
voltada para a Internet, provavelmente você deverá usar somente soquetes de arquivo.
Os dados não criptografados podem ser acessados por qualquer usuário que tiver tempo e
capacidade de interceptá-los e usá-los em benefício próprio. Portanto, é preciso usar um
protocolo criptografado, como SSL ou SSH.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Segurança
Capítulo 13 - Página 6
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Segurança da Senha

Oracle University and Error : You are not a Valid Partner use only
Se você usar senhas de texto simples, e seu computador for comprometido, o intruso poderá
obter a lista completa de senhas e usá-las. Em vez disso, use MD5(), SHA1(), SHA2() ou
alguma outra função de hash unidirecional e armazene o valor do hash. Esse método
prudente é usado para armazenar outras senhas no servidor.
Existem programas especiais para descobrir senhas. Um método para deter esses programas
é usar uma senha que seja composta dos primeiros caracteres de cada palavra em uma frase
(por exemplo, “Mary had a little lamb” resulta em uma senha “Mhall”). A senha é fácil de se
lembrar e digitar, mas difícil de adivinhar por alguém que não conheça a frase.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Segurança
Capítulo 13 - Página 7
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Segurança do Sistema Operacional

Oracle University and Error : You are not a Valid Partner use only
Reduza o número de tarefas do host do servidor que não estejam diretamente relacionadas
ao MySQL em execução. Quando você configura um host para poucas tarefas, ele pode ser
protegido com mais facilidade do que um host que executa uma configuração complexa que
suporta muitos serviços.
Será melhor se você designar a máquina do servidor MySQL principalmente ou
exclusivamente para o MySQL, e não para outras finalidades, como hospedagem da Web ou
processamento de mensagens ou como uma máquina que hospede contas de log-in para uso
interativo de propósito geral.
Se outros usuários puderem efetuar log-in, haverá um risco de exposição das informações do
banco de dados que devem ser mantidas privadas para a instalação do MySQL e sua conta
administrativa. Por exemplo, privilégios inadequados do sistema de arquivos podem expor
arquivos de dados. Os usuários podem executar o comando ps para exibir informações sobre
processos e seu ambiente de execução.
Quando você usa uma máquina somente para MySQL, não há necessidade de ter contas de
log-in, exceto contas administrativas do sistema e quaisquer outras contas que possam ser
necessárias na administração do MySQL (como a conta do usuário mysql). Além disso, se
você executar poucos serviços de rede no host do servidor, haverá poucas portas de rede
que precisam ser mantidas abertas. Fechar portas reduz o número de vias de ataque às
quais o host está exposto.
Também há um benefício no desempenho com a redução do número de serviços não MySQL
― mais recursos do seu sistema podem ser dedicados ao MySQL.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Segurança
Capítulo 13 - Página 8
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Segurança do Sistema de Arquivos

Oracle University and Error : You are not a Valid Partner use only
Não conceda a ninguém (exceto contas raiz do MySQL) acesso à tabela user no banco de
dados mysql. Coloque o MySQL atrás do firewall ou em uma rede de perímetro (DMZ).
Você pode definir senhas para a conta raiz do MySQL somente enquanto o servidor estiver
em execução. Consequentemente, antes de iniciar o servidor e definir senhas, execute todas
as ações necessárias para proteger as partes do sistema de arquivos relacionadas ao
MySQL. Se as senhas forem definidas primeiro antes de proteger os arquivos, é possível que
alguém com acesso direto ao sistema de arquivos no host do servidor substitua os arquivos.
Isso compromete a instalação do MySQL e desfaz o efeito da definição das senhas.
Para sistemas de vários usuários, como Linux, defina a propriedade de todos os
componentes de uma instalação do MySQL para uma conta de log-in dedicada com
privilégios administrativos adequados. Isso protege a instalação contra o acesso de usuários
não responsáveis pela administração do banco de dados. Um benefício adicional da
configuração dessa conta é que ela pode ser usada para executar o servidor MySQL, em vez
de executar o servidor a partir da conta raiz do Linux. Um servidor que tem os privilégios da
conta de log-in raiz tem mais acesso ao sistema de arquivos do que o necessário e constitui
um risco à segurança.
Observação: Esta seção supõe a existência de uma conta administrativa que tem mysql
como nome de usuário e nome de grupo. Entretanto, os detalhes de criação de contas de log-
in variam de acordo com a versão do Linux e estão fora do escopo deste treinamento.
Consulte a documentação de seu sistema operacional.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Segurança
Capítulo 13 - Página 9
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Proteja Seus Dados

Oracle University and Error : You are not a Valid Partner use only
Se a sua aplicação gerar uma consulta, como SELECT * FROM table WHERE ID=234
quando um usuário informa o valor 234, ele poderá informar o valor 234 OR 1=1 para fazer
com que a aplicação gere a consulta SELECT * FROM table WHERE ID=234 OR 1=1.
Como resultado, o servidor recupera cada linha na tabela. Isso expõe cada linha e
sobrecarrega o servidor. Para proteger contra esse tipo de ataque, coloque as constantes
numéricas entre aspas: SELECT * FROM table WHERE ID='234'. Se o usuário
especificar informações adicionais, tudo fará parte da string. Em um contexto numérico, o
MySQL converte automaticamente essa string em um número e elimina dele todos os
caracteres não numéricos posteriores.
Você pode pensar que se um banco de dados contém apenas dados publicamente
disponíveis, ele não precisa ser protegido. Isso não é correto. Mesmo que seja permitido que
qualquer linha do banco de dados seja exibida, você ainda deve proteger contra ataques de
negação de serviço (por exemplo, aqueles que são baseados na técnica do parágrafo anterior
que faz com que o servidor desperdice recursos). Caso contrário, seu servidor não
responderá a usuários legítimos. Estas são algumas técnicas para evitar esse problema:
• Digite aspas simples e duplas (“'” e “"”) em todos os seus formulários da Web.
• Modifique os URLs adicionando %22 (“"”), %23 (“#”), e %27 (“'”) a eles.
• Digite caracteres, espaços e símbolos especiais em vez de números nos campos
numéricos. Sua aplicação deve removê-los antes de passá-los ao MySQL; caso
contrário, um erro será gerado.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Segurança
Capítulo 13 - Página 10
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Usando Conexões Seguras

Oracle University and Error : You are not a Valid Partner use only
Se você usar conexões não criptografadas entre o cliente e o servidor, um usuário com
acesso à rede poderá observar todo o tráfego e consultar (e modificar) os dados que estão
sendo enviados ou recebidos. A prática atual do setor requer muitos elementos de segurança
adicionais de algoritmos de criptografia. Isso resiste a muitos tipos de ataques conhecidos,
como alteração da ordem de mensagens criptografadas ou resposta aos dados duas vezes.
A criptografia dos dados é uma operação que faz uso intenso da CPU, o que requer que o
computador execute trabalho adicional e que pode atrasar outras tarefas do MySQL. Para
aplicações que requerem a segurança fornecida pelas conexões criptografadas, a
computação extra é garantida.
Para obter mais informações sobre conexões seguras com o MySQL, consulte o MySQL
Reference Manual: http://dev.mysql.com/doc/refman/5.5/en/secure-connections.html.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Segurança
Capítulo 13 - Página 11
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Protocolo SSL

Oracle University and Error : You are not a Valid Partner use only
O MySQL permite a criptografia por conexão. Dependendo dos requisitos de aplicações
individuais, é possível escolher uma conexão não criptografada normal ou uma conexão SSL
criptografada segura.
As conexões seguras são baseadas na API OpenSSL e estão disponíveis por meio da API C
do MySQL. A replicação usa a API C; portanto, as conexões seguras podem ser usadas entre
os servidores master e slave.
O X509 possibilita identificar alguém na Internet. Ele é mais comumente usado em aplicações
de e-commerce. Em termos básicos, haveria uma empresa chamada "Certificate Authority"
(ou CA) que designa certificados eletrônicos a todos que precisarem deles. Os certificados
dependem de algoritmos de criptografia assimétrica que possuem duas chaves de criptografia
(uma chave pública e uma chave secreta).
Um proprietário de certificado pode mostrar o certificado para outra parte como prova de
identidade. Um certificado consiste na chave pública do proprietário. Qualquer dado
criptografado com essa chave pública pode ser decriptografado apenas com o uso da chave
secreta correspondente, que é mantida pelo proprietário do certificado.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Segurança
Capítulo 13 - Página 12
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Usando SSL com o Servidor MySQL

Oracle University and Error : You are not a Valid Partner use only
Para facilitar o uso de conexões seguras, o MySQL é fornecido no pacote com o yaSSL. O
MySQL e o yaSSL empregam o mesmo modelo de licença, enquanto o OpenSSL usa uma
licença de estilo Apache.)
Para obter o OpenSSL, vá para http://www.openssl.org. A criação do MySQL usando o
OpenSSL requer uma biblioteca compartilhada do OpenSSL; caso contrário ocorrerão erros
do vinculador.
Para configurar uma distribuição fonte do MySQL a fim de usar o SSL, chame CMake :
shell> cmake . -DWITH_SSL=bundled
• Isso configura a distribuição para usar a biblioteca do pacote yaSSL.
• Para usar a biblioteca SSL do sistema, especifique a opção como -
DWITH_SSL=system.
Se a sua tabela user não tiver colunas relacionadas ao SSL (começando com ssl_* e
x509_*),
deverá ser feito o upgrade com o uso do programa mysql_upgrade.
Ao verificar se um binário de servidor está compilado com o suporte de SSL, ocorrerá um erro
se o servidor não suportar o SSL:
shell> mysqld --ssl --help
060525 14:18:52 [ERROR] mysqld: unknown option '--ssl'

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Segurança
Capítulo 13 - Página 13
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Iniciando o Servidor MySQL com SSL

Oracle University and Error : You are not a Valid Partner use only
--ssl-cert pode ser enviado para o cliente e autenticado com o certificado da CA que está
usando.
Para obter informações sobre a configuração de certificados SSL para MySQL, consulte o
MySQL Reference Manual: http://dev.mysql.com/doc/refman/5.5/en/secure-create-certs.html.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Segurança
Capítulo 13 - Página 14
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Requerendo Conexões Criptografadas por SSL

Oracle University and Error : You are not a Valid Partner use only
Para estabelecer uma conexão segura com um servidor MySQL com suporte de SSL, as
opções do cliente que você deve especificar dependem dos requisitos de SSL da conta do
usuário que o cliente usa. O MySQL pode verificar atributos do certificado X509 além da
autenticação comum que é baseada no nome do usuário e na senha. Para especificar opções
relacionadas ao SSL para uma conta do MySQL, use a cláusula REQUIRE da instrução
GRANT.
Há diversas possibilidades diferentes para limitar tipos de conexão para uma determinada
conta. Para o propósito deste curso, somente três opções são descritas:
• REQUIRE NONE: Indica que a conta não tem requisitos de SSL ou X509. Esse será o
default se nenhuma opção REQUIRE relacionada ao SSL for especificada. As conexões
não criptografadas serão permitidas se o nome do usuário e a senha forem válidos.
Entretanto, as conexões criptografadas também poderão ser usadas na opção do
cliente se ele tiver o certificado e os arquivos de chave adequados. Ou seja, o cliente
não precisa especificar nenhuma opção de comando SSL, caso em que a conexão não
é criptografada.
• REQUIRE SSL: Informa ao servidor para permitir somente conexões criptografadas por
SSL para a conta
• REQUIRE X509: O cliente deve ter um certificado válido, mas o certificado exato, o
emitente e o assunto não importam. O único requisito é que deve ser possível verificar
sua assinatura com um dos certificados de CA.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Segurança
Capítulo 13 - Página 15
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Verificando Status SSL

Oracle University and Error : You are not a Valid Partner use only
Se você não tiver uma variável have_ssl para a instrução SHOW VARIABLES LIKE
'have_ssl', verifique have_openssl.
Para qualquer variável, se o valor for YES, o servidor suportará conexões SSL. Se o valor for
DISABLED, o servidor suportará conexões SSL, mas não iniciará com as opções --ssl-*
apropriadas.
Para o cliente mysql, você pode usar o comando STATUS ou \s e verificar a linha SSL:
mysql> \s
...
SSL: Cipher in use is DHE-RSA-AES256-SHA
...
Para verificar se um binário de servidor está compilado com suporte do SSL, chame-o com a
opção --ssl. Ocorrerá um erro se o servidor não suportar SSL:
shell> mysqld --ssl --help
060525 14:18:52 [ERROR] mysqld: unknown option '--ssl'

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Segurança
Capítulo 13 - Página 16
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Segurança
Capítulo 13 - Página 17
Vantagens e Desvantagens do Uso do SSL

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Conexão Remota do Servidor Seguro com o MySQL

Oracle University and Error : You are not a Valid Partner use only
Para obter informações sobre a conexão com o MySQL de maneira remota do Windows com
o SSH, consulte o MySQL Reference Manual:
http://dev.mysql.com/doc/refman/5.5/en/windows-and-ssh.html.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Segurança
Capítulo 13 - Página 18
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Segurança
Capítulo 13 - Página 19
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Perguntas Frequentes Sobre a Segurança do MySQL

Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Segurança
Resumo

Capítulo 13 - Página 20
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Segurança
Capítulo 13 - Página 21
Visão Geral do Exercício 13-1: Questionário

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Segurança
Conectividade do SSL

Capítulo 13 - Página 22
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Visão Geral do Exercício 13-2: Determinar o Status da

Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

SSL

Segurança
Capítulo 13 - Página 23
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Visão Geral do Exercício 13-3: Ativar o MySQL para Conexões

Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Segurança
Capítulo 13 - Página 24
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Manutenção da Tabela
Capítulo 14 - Página 1
Capítulo 14

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Manutenção da Tabela

Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Manutenção da Tabela
Manutenção da Tabela

Capítulo 14 - Página 2
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Objetivos

Manutenção da Tabela
Capítulo 14 - Página 3
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Manutenção da Tabela
Capítulo 14 - Página 4
Implementação de Manutenção da Tabela

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

SQL para Operações de Manutenção da Tabela

Oracle University and Error : You are not a Valid Partner use only
Depois de executar a operação solicitada, o servidor retorna as informações sobre o
resultado da operação do cliente. As informações usam o formulário de um conjunto de
resultados com quatro colunas:
• Table: Indica a tabela para a qual a operação foi executada
• Op: Nomes da operação (check, repair, analyze ou optimize)
• Msg_type: Fornece um indicador de sucesso ou falha
• Msg_text: Fornece informações extras
Para obter mais informações sobre a manutenção da tabela do MySQL, consulte o MySQL
Reference Manual: http://dev.mysql.com/doc/refman/5.5/en/table-maintenance-sql.html.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Manutenção da Tabela
Capítulo 14 - Página 5
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Instrução ANALYZE TABLE

Oracle University and Error : You are not a Valid Partner use only
Características de ANALYZE TABLE:
• Durante a análise, a tabela é bloqueada com um bloqueio de leitura para MyISAM e
InnoDB. Essa instrução funciona com as tabelas do MyISAM e InnoDB.
• Para tabelas do MyISAM, essa instrução é equivalente ao uso de myisamchk --
analyze.
• Requer privilégios SELECT e INSERT para a tabela
• Suporta tabelas particionadas. Você também pode usar ALTER TABLE...ANALYZE
PARTITION para verificar uma ou mais partições.
O MySQL usa a distribuição de chave armazenada para decidir a ordem na qual as tabelas
devem ser unidas quando você executa uma junção em algo além de uma constante. Além
disso, é possível usar distribuições de chave para determinar quais índices usar para uma
tabela específica em uma consulta.
Se uma tabela não tiver sido alterada desde a última instrução ANALYZE TABLE, a tabela
não será analisada novamente.
Por default, as instruções ANALYZE TABLE são criadas para o log binário e são replicadas
para slaves de replicação. O log pode ser suprimido com a palavra-chave
NO_WRITE_TO_BINLOG opcional ou seu apelido LOCAL.
Observação: Os utilitários de manutenção da tabela (incluindo myisamchk) serão discutidos
em detalhes posteriormente nesta lição.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Manutenção da Tabela
Capítulo 14 - Página 6
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Instrução CHECK TABLE

Oracle University and Error : You are not a Valid Partner use only
Características de CHECK TABLE:
• Para tabelas do MyISAM, as principais características são atualizadas também.
• Também pode verificar exibições em busca de problemas, como tabelas que são
referidas na definição de exibição que não existe mais
• Suporta tabelas particionadas. Você também pode usar ALTER TABLE...CHECK
PARTITION para verificar uma ou mais partições.
• Para tabelas do MyISAM, essa instrução é equivalente ao uso de myisamchk --
medium-check.
Com FOR UPGRADE, o servidor verifica cada tabela para determinar se houve alguma
alteração incompatível feita nos tipos ou índices de dados da tabela desde que foi criada.
Caso contrário, a verificação é executada com êxito. Se não houver uma incompatibilidade
possível, o servidor executará uma verificação completa na tabela. Se a verificação completa
for executada com êxito, o servidor marcará o arquivo .frm da tabela com o número da
versão atual do MySQL. Marcar o arquivo .frm garante que as futuras verificações da tabela
com mesma versão do servidor sejam rápidas. Podem ocorre incompatibilidades porque foi
alterado o formato de armazenamento de um tipo de dados ou a ordem de classificação. A
opção FOR UPGRADE pode ser usada pelos mecanismos de armazenamento InnoDB,
MyISAM e ARCHIVE.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Manutenção da Tabela
Capítulo 14 - Página 7
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Instrução CHECK TABLE

Oracle University and Error : You are not a Valid Partner use only
Se a saída de CHECK TABLE indicar que uma tabela contém problemas, a tabela deverá ser
reparada. Por exemplo, a instrução CHECK TABLE poderia ser usada para detectar
problemas de hardware (por exemplo, RAM ou disco ruim) antes de reparar uma tabela. A
coluna de saída Msg_text normalmente deveria ser OK. Se você não obtiver OK ou Table
is already up to date, execute um reparo da tabela.
É possível combinar opções de verificação, como no seguinte exemplo que faz uma
verificação rápida na tabela para determinar se foi fechada corretamente:
CHECK TABLE test_table FAST QUICK;
Em alguns casos, CHECK TABLE altera a tabela. Isso ocorrerá se a tabela for marcada como
"corrupted" ou "not closed properly", mas não for encontrado nenhum problema na tabela.
Nesse caso, CHECK TABLE marca a tabela como OK.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Manutenção da Tabela
Capítulo 14 - Página 8
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Instrução CHECKSUM TABLE

Oracle University and Error : You are not a Valid Partner use only
Características de CHECKSUM TABLE:
• Requer o privilégio SELECT para a tabela
• Para uma tabela não existente, CHECKSUM TABLE retorna NULL e gera um aviso.
• Opção QUICK:
• A tabela ativa checksum será relatada se estiver disponível; caso contrário, será
relatado NULL. Isso é muito rápido.
• Ative a tabela checksum ativa especificando a opção de tabela CHECKSUM=1
quando você criar uma tabela.
• Opção EXTENDED:
• A tabela inteira é lida linha por linha, e checksum é calculado.
• Se nem QUICK nem EXTENDED for especificado, o MySQL retornará uma tabela
checksum ativa se o mecanismo de armazenamento da tabela oferecer suporte para
isso. Caso contrário, o MySQL varrerá a tabela.
O valor de checksum depende do formato de linha da tabela. Se o formato da linha for
alterado, checksum também será alterado. Por exemplo, o formato de armazenamento para
VARCHAR foi alterado entre o MySQL 4.1 e o 5.0; portanto, se for feito upgrade de uma tabela
4.1 para o MySQL 5.0, o valor de checksum poderá ser alterado.
Observação: Se checksums para duas tabelas forem diferentes, é provável que as tabelas
sejam diferentes de alguma maneira. Entretanto, como a função de hash usada por
CHECKSUM TABLE não tem garantia de estar livre de é conflitos, é possível que duas tabelas
não idênticas possam produzir o mesmo checksum.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Manutenção da Tabela
Capítulo 14 - Página 9
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Instrução OPTIMIZE TABLE

Oracle University and Error : You are not a Valid Partner use only
Características OPTIMIZE TABLE:
• A desfragmentação envolve o aproveitamento do espaço não utilizado resultante de
exclusões e atualizações e a reunião de registros que são separados e armazenados de
forma não contígua.
• Requer privilégios SELECT e INSERT para a tabela
• Suporta tabelas particionadas. Você também pode usar ALTER TABLE...OPTIMIZE
PARTITION para verificar uma ou mais partições.
Por exemplo, é possível usar a instrução OPTIMIZE TABLE para desfragmentar uma tabela
do MyISAM (pelos mesmos motivos que você deve ocasionalmente desfragmentar um disco
rígido). Além disso, use essa instruções depois de uma grande parte de uma tabela ter sido
deletada ou se muitas alterações tiverem sido feitas a uma tabela com linhas de comprimento
variável (tabelas que possuem colunas VARCHAR, VARBINARY, BLOB ou TEXT). As linhas
deletadas são mantidas em uma lista vinculada, e as operações INSERT subsequentes
reutilizam posições de linha antiga.
Com as tabelas do InnoDB, OPTIMIZE TABLE cria novamente a tabela. As operações de
análise e otimização da tabela são extremamente benéficas quando você as executa em uma
tabela que foi totalmente preenchida e que não é alterada depois. Os benefícios da análise e
da otimização diminuirão se a tabela continuar a ser atualizada; portanto, essas operações
devem ser repetidas periodicamente.
Para as tabelas do InnoDB, OPTIMIZE TABLE é mapeada para ALTER TABLE, que cria
novamente a tabela para atualizar as estatísticas de índice e liberar espaço não utilizado no
índice clusterizado.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Manutenção da Tabela
Capítulo 14 - Página 10
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Instrução OPTIMIZE TABLE

Oracle University and Error : You are not a Valid Partner use only
Com tabelas ARCHIVE, você pode usar OPTIMIZE TABLE para analisar a tabela e incluí-la
em um formato menor e obter melhor compactação. O número de linhas nas tabelas
ARCHIVE relatadas por SHOW TABLE STATUS é sempre preciso. Um arquivo .ARN pode
aparecer durante as operações de otimização.
Observação: O exemplo ilustrado no slide usa duas tabelas do MyISAM do banco de dados
world, e não do banco de dados world_innodb.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Manutenção da Tabela
Capítulo 14 - Página 11
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Instrução REPAIR TABLE

Oracle University and Error : You are not a Valid Partner use only
Características de REPAIR TABLE:
• Opção QUICK: Tenta reparar apenas o arquivo de índice e não o arquivo de dados.
Esse tipo de reparo é semelhante ao feito por myisamchk --recover --quick.
• Opção EXTENDED: O MySQL cria o índice linha por linha, em vez de criar um índice de
uma só vez com classificação.þ Esse tipo de reparo é semelhante ao feito por
myisamchk --safe-recover.
• A opção USE_FRM não pode ser usada por uma tabela particionada.
• Requer privilégios SELECT e INSERT para a tabela
• Suporta tabelas particionadas. Você também pode usar ALTER TABLE...REPAIR
PARTITION para verificar uma ou mais partições.
Você nunca precisará executar REPAIR TABLE. Entretanto, se for necessária essa instrução,
é muito provável que retorne todos os dados de uma tabela do MyISAM. Se as suas tabelas
forem danificadas com frequência, você deverá tentar encontrar o motivo disso, para eliminar
a necessidade do uso de REPAIR TABLE.
É melhor fazer um backup de uma tabela antes de executar uma operação de reparo; sob
algumas circunstâncias, a operação poderá causar a perda de dados. Causas possíveis
incluem (entre outras) erros no sistema de arquivos.
Se o servidor falhar durante uma operação REPAIR TABLE, é importante, após a
reinicialização , que você execute imediatamente outra operação REPAIR TABLE antes de
executar qualquer outra operação.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Manutenção da Tabela
Capítulo 14 - Página 12
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Manutenção da Tabela
Instrução REPAIR TABLE

Capítulo 14 - Página 13
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Programa Cliente mysqlcheck

Oracle University and Error : You are not a Valid Partner use only
Em alguns casos, o mysqlcheck é mais conveniente do que a emissão de instruções SQL
diretamente. Por exemplo, se um banco de dados for nomeado, o mysqlcheck determinará
quais tabelas o banco de dados contém e emitirá instruções para processar todas. As tabelas
não precisam ser nomeadas de forma explícita. Além disso, como o mysqlcheck é um
programa de linha de comando, ele pode ser facilmente usado em tarefas que executam a
manutenção programada periódica.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Manutenção da Tabela
Capítulo 14 - Página 14
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Programa Cliente mysqlcheck

Oracle University and Error : You are not a Valid Partner use only
Por default, o mysqlcheck interpreta se o primeiro argumento não opção como um nome de
banco de dados e verifica todas as tabelas nesse banco de dados. Se houver argumentos
após o nome do banco de dados, ele os tratará como nomes de tabelas e verificará apenas
essas tabelas.
Os exemplos do mysqlcheck ilustrados no slide demonstram o seguinte:
• O primeiro dos comandos (com opções) verifica apenas as tabelas City e Country no
banco de dados world_innodb.
• No exemplo com a opção --databases (ou -B), o mysqlcheck interpreta seus
argumentos como nomes de banco de dados e verifica as tabelas nos bancos de dados
world_innodb e test.
• Com a opção --all-databases (ou -A), o mysqlcheck verifica todas as tabelas em
todos os bancos de dados.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Manutenção da Tabela
Capítulo 14 - Página 15
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Utilitário myisamchk

Oracle University and Error : You are not a Valid Partner use only
Conceitualmente, o myisamchk tem a mesma finalidade do mysqlcheck. Entretanto, o
myisamchk não se comunica com o servidor do MySQL. Em vez disso, ele acessa os
arquivos de tabela diretamente.
Execute a manutenção da tabela enquanto evita acesso de tabela concorrente com o
myisamchk:
1. Assegure que o servidor não acesse as tabelas enquanto elas estão sendo trabalhadas.
Uma maneira de garantir isso é bloquear as tabelas ou parar o servidor.
2. Em um prompt de comandos, altere o local no diretório do banco de dados em que as
tabelas estão localizadas. Esse é o subdiretório do diretório de dados do servidor que
possui o mesmo nome do banco de dados que contém as tabelas a serem verificadas.
(O motivo para alterar o local é facilitar a consulta aos arquivos de tabela. Essa etapa
pode ser ignorada, mas o myisamchk precisa incluir o diretório no qual as tabelas estão
localizadas.)
3. Chame o myisamchk com opções indicando a operação a ser executada, seguido por
arquimentos que nomeiam as tabelas nas quais o myisamchk deve operar. Cada um
desses argumentos pode ser um nome de tabela ou o nome do arquivo do índice de
tabela. Um nome de arquivo de índice é igual ao nome da tabela, mais um sufixo .MYI.
Portanto, uma tabela pode ser referida como table_name ou como table_name.MYI.
4. Reinicie o servidor.
Observação: Tente --recover primeiro, porque --safe-recover é muito mais lento.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Manutenção da Tabela
Capítulo 14 - Página 16
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Opções para mysqlcheck e myisamchk

Oracle University and Error : You are not a Valid Partner use only
O mysqlcheck e o myisamchk usam muitas opções para controlar o tipo de operação de
manutenção de tabela executado. A tabela no slide resume algumas das opções usadas mais
comumente, a maioria das quais é compreendida por ambos os programas. Onde isso não é
o caso, é observado na descrição de opção relevante.
• --analyze: Analise a distribuição dos principais valores na tabela. Isso pode melhorar
o desempenho de consultas, agilizando as consultas baseadas em índice.
• --auto-repair: Repare tabelas automaticamente se uma operação de verificação
descobrir problemas.
• --check ou -c: Verifique problemas nas tabelas. Essa será a ação default se
nenhuma operação for especificada.
• --check-only-changed ou -C: Ignore a verificação da tabela, exceto para tabelas
que tenham sido alteradas desde que foram verificadas pela última vez ou tabelas que
não foram fechadas corretamente. A última condição poderá ocorrer se o servidor falhar
enquanto uma tabela é aberta.
• --fast ou -F: Ignore a verificação da tabela, exceto nos casos em que não foram
fechadas corretamente.
• --extended, --extend-check ou -e: Execute uma verificação de tabela estendida.
Para mysqlcheck, quando essa opção for fornecida em conjunto com uma opção de
reparo, um reparo mais abrangente será executado do que quando a opção de reparo é
fornecida isoladamente. Ou seja, a operação de reparo executada por --repair --
extended é mais abrangente do que a a operação executada por --repair.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Manutenção da Tabela
Capítulo 14 - Página 17
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

• --medium-check ou -m: Execute uma verificação de tabela média.


• --quick ou -q: Para o mysqlcheck, --quick sem uma opção de reparo faz com
que apenas o arquivo de índice seja verificado, ignorando o arquivo de dados. Para os
dois programas, --quick juntamente com uma opção de reparo, faz com que o
programa repare apenas o arquivo de índice, ignorando o arquivo de dados.
• --repair, --recover, ou -r: Execute uma operação de reparo da tabela.

Oracle University and Error : You are not a Valid Partner use only

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Manutenção da Tabela
Capítulo 14 - Página 18
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Manutenção da Tabela do InnoDB

Oracle University and Error : You are not a Valid Partner use only
Se uma tabela do InnoDB tiver problemas, eles não poderão ser corrigidos com o uso de
REPAIR TABLE porque essa instrução se aplica apenas às tabelas do MyISAM.
Se uma verificação de tabela indicar problemas, a tabela poderá ser restaurada a um estado
consistente por meio de seu dump com o mysqldump, eliminando e criando-a novamente a
partir do arquivo de dump (conforme ilustrado no exemplo do slide).
No caso de uma falha do servidor MySQL ou do host em que ele é executado, algumas
tabelas do InnoDB podem precisar de reparos. Normalmente, basta apenas reiniciar o
servidor porque o InnoDB executa a recuperação automática como parte de sua sequência
de inicialização. Raramente o servidor não inicializa devido a uma falha de recuperação
automática. Se isso ocorrer, execute o seguinte procedimento:
• Reinicie o servidor com a opção --innodb_force_recovery definida como um valor
no intervalo entre 1 e 6. Esses valores indicam níveis cada vez maiores de cautela para
evitar uma falha e níveis cada vez maiores de tolerância no caso de possível
inconsistência nas tabelas recuperadas. Um bom valor inicial é 4.
• Quando o servidor é iniciado com --innodb_force_recovery definido com um valor
diferente de zero, o InnoDB trata o tablespace como somente para leitura. Portanto,
você deve fazer dump das tabelas do InnoDB e eliminá-las depois, enquanto a opção
estiver em vigor. Em seguida, reinicie o servidor sem a opção
--innodb_force_recovery. Quando o servidor estiver pronto, recupere as tabelas
do InnoDB a partir dos arquivos de dump.
• Se as etapas anteriores falharem, restaure as tabelas a partir de um backup anterior.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Manutenção da Tabela
Capítulo 14 - Página 19
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Manutenção da Tabela do MyISAM

Oracle University and Error : You are not a Valid Partner use only
O tipo de verificação CHECK TABLE default é MEDIUM para as tabelas de formato dinâmico e
estático.
Se um tipo de tabela de formato estático for definido como CHANGED ou FAST, o default será
QUICK. A varredura da linha é ignorada por CHANGED e FAST porque as linhas muito
raramente são danificadas.
CHECK TABLE alterará a tabela se ela estiver marcada como "corrupted" ou "not closed
properly". Se não for encontrado nenhum problemas na tabela, o status da tabela será
marcado como up to date. Se uma tabela estiver danificada, é mais provável que o problema
esteja nos índices e não nos dados.
O valor de opção --myisam-recover pode consistir em uma lista separada por vírgulas de
um ou mais dos seguintes valores:
• DEFAULT: Verificação default
• BACKUP: Informa ao servidor que execute um backup de qualquer tabela que deva
alterar
• FORCE: Executa a recuperação da tabela mesmo quando causa a perda de mais de
uma linha de dados
• QUICK: Executa a recuperação rápida. Tabelas que não possuem falhas resultantes de
deleções ou atualizações são ignoradas.
Por exemplo, para informar ao servidor que execute uma recuperação forçada das tabelas do
MyISAM que tiverem problemas, mas fazer um backup de qualquer tabela que ela alterar,
adicione o seguinte ao seu arquivo de opções:
[mysqld]
myisam-recover=FORCE,BACKUP

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Manutenção da Tabela
Capítulo 14 - Página 20
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Manutenção da Tabela
Manutenção da Tabela do MEMORY

Capítulo 14 - Página 21
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Manutenção da Tabela
Manutenção da Tabela do ARCHIVE

Capítulo 14 - Página 22
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Resumo

Manutenção da Tabela
Capítulo 14 - Página 23
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Manutenção da Tabela
Capítulo 14 - Página 24
Visão Geral do Exercício 14-1: Questionário

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Visão Geral do Exercício 14-2: Manutenção de Tabela Usando


Instruções SQL

Oracle University and Error : You are not a Valid Partner use only

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Manutenção da Tabela
Capítulo 14 - Página 25
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Visão Geral do Exercício 14-3: Manutenção de Tabela Usando


Utilitários do MySQL

Oracle University and Error : You are not a Valid Partner use only

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Manutenção da Tabela
Capítulo 14 - Página 26
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Exportando e Importando Dados


Dados

Capítulo 15 - Página 1
Capítulo 15

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Exportando e Importando

Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Exportando e Importando Dados


Exportando e Importando Dados

Capítulo 15 - Página 2
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Objetivos

Exportando e Importando Dados


Capítulo 15 - Página 3
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Exportando e Importando Dados

Oracle University and Error : You are not a Valid Partner use only
As duas maneiras mais comuns de realizar operações de exportação e importação são:
• Usar SELECT ... INTO OUTFILE para exportar dados para os arquivos
• Usar a instrução LOAD DATA INFILE para importar dados de arquivos
Motivos para a Exportação de Dados
As exportações do banco de dados são úteis para copiar seus bancos de dados para outro
servidor. Normalmente um banco de dados é transferido para um servidor executando em
outro host, mas você também pode transferir dados para um servidor diferente em execução
no mesmo host. Você poderá fazer isso se estiver testando um servidor com uma nova
release do MySQL e se quiser usá-la com alguns dados reais de seu servidor de produção.
Pode ainda carregar os dados em aplicações externas, que também é útil para trasferir dados
de um RDBMS para outro.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Exportando e Importando Dados


Capítulo 15 - Página 4
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Exportar Dados Usando SELECT com INTO OUTFILE

Oracle University and Error : You are not a Valid Partner use only
Uma instrução SELECT pode ser usada com a cláusula INTO OUTFILE para gravar o
conjunto de resultados diretamente em um arquivo. Para usar SELECT dessa maneira,
coloque a cláusula INTO OUTFILE antes da cláusula FROM.
O nome do arquivo indica o local onde ele foi gravado. O MySQL interpreta o nome do
caminho para arquivos localizados no host servidor.
Características do arquivo
O arquivo criado pode ter as seguintes características:
• O arquivo é gravado no host servidor, em vez de ser enviado pela rede para o cliente (o
nome do arquivo não pode já existir).
• O servidor grava um novo arquivo no host servidor. O host deve estabelecer conexão
com o servidor usando uma conta que tenha o privilégio FILE.
• O arquivo é criado com permissões de acesso ao sistema de arquivos que o torna
propriedade do servidor MySQL, mas que pode ser lido por todos.
• O arquivo contém uma linha por linha selecionada pela instrução. (Por default, os
valores de coluna são delimitados por caracteres de tabulação, e as linhas são
finalizadas com novas linhas.)

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Exportando e Importando Dados


Capítulo 15 - Página 5
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Usando Especificadores de Formato de Arquivo de Dados

Oracle University and Error : You are not a Valid Partner use only
SELECT...INTO OUTFILE assume um formato de arquivo de dados default em que os
valores da coluna são separados por caracteres de tabulação e os registros são terminados
por novas linhas. Se você gravar SELECT...INTO OUTFILE em um arquivo com diferentes
separadores ou terminadores, será preciso indicar o formato a ser usado. Também é possível
controlar o valor dos dados escapando o comportamento ou colocando-o entre aspas.
Os especificadores de formato suportados por SELECT...INTO OUTFILE permitem a
definição das características gerais que se aplicam a todos os valores da coluna:
• Quais caracteres separam os valores da coluna nas linhas de dados
• Se os valores estão entre aspas
• Se há um caractere de escape que indica sequências de caracteres especiais

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Exportando e Importando Dados


Capítulo 15 - Página 6
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Sequências de Caracteres de Escape

Oracle University and Error : You are not a Valid Partner use only
Todas essas sequências, exceto \N serão compreendidas se elas aparecem isoladamente ou
em um valor de dados mais longo. \N é compreendido como NULL somente quando aparece
sozinho.
O terminador de linha default é o caractere de nova linha (preenchimento de linha). Para
indicar uma sequência de finalização de linha explicitamente, use uma cláusula LINES. Os
terminadores de linha comuns são a nova linha e o par retorno de carro/nova linha. Como a
nova linha é o terminador de linha default, ela deverá ser especificada somente se a
sequência de finalização de linha precisar ser explícita. Os terminadores de nova linha são
comuns em sistemas Linux, e os pares retorno de carro/nova linha são comuns em sistemas
Windows.
ESCAPED BY
A opção ESCAPED BY controla somente a manipulação de valores no arquivo de dados; ela
não controla o modo como a instrução precisa ser redigida. Para especificar um caractere de
escape de arquivo de dados '@', escreva ESCAPED BY '@'. Isso não significa que '@' é
usado para escapar caracteres especiais em qualquer parte de uma instrução. Por exemplo,
ainda é necessário especificar um caractere de nova linha como caractere terminador da
linha usando LINES TERMINATED BY '\n', e não LINES TERMINATED BY '@n'.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Exportando e Importando Dados


Capítulo 15 - Página 7
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Importe Dados Usando LOAD DATA INFILE

Oracle University and Error : You are not a Valid Partner use only
A instrução LOAD DATA INFILE lê os valores de um arquivo de dados em uma tabela. LOAD
DATA INFILE é a operação reversa de SELECT ... INTO OUTFILE.
Importando Arquivos Delimitados por Tabulação ou Separados por Vírgulas
Para importar um arquivo de dados contendo dados de tabela delimitado por tabulação ou
separado por vírgulas, use o comando LOAD DATA INFILE. As características mais
importantes do arquivo são:
• Os separadores de valores da coluna
• O separador de linhas
• Os caracteres que incluem os valores (por exemplo, aspas)
• Se os nomes de coluna são especificados no arquivo
• Se há um cabeçalho indicando linhas na tabela a serem ignoradas antes da importação
• O sistema de arquivos no qual o arquivo reside
• Se os privilégios são necessários para acessar o arquivo
• A ordem das colunas
• Se os números da coluna no arquivo e na tabela correspondem

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Exportando e Importando Dados


Capítulo 15 - Página 8
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Ignorando ou Transformando Dados de Entrada

Oracle University and Error : You are not a Valid Partner use only
Ignorando Linhas de Arquivo de Dados
Para ignorar a parte inicial do arquivo de dados, você pode usar a cláusula IGNORE n
LINES, em que n é um inteiro que indica o número de linhas de entrada a serem ignoradas.
Essa cláusula normalmente é usada quando um arquivo começa com uma linha de nomes de
coluna e não com valores de dados.
Ignorando ou Transformando Valores de Coluna
É possível ignorar colunas no arquivo de dados ou transformar valores de dados que são
lidos no arquivo antes de inseri-los na tabela. Esses recursos ficam disponíveis
especificando-se variáveis de usuário na lista de colunas e a cláusula opcional SET.
Para designar uma coluna de dados de entrada para uma variável de usuário, e não para
uma coluna da tabela, forneça o nome de uma variável de usuário na lista de colunas. Se a
coluna for designada a uma variável de usuário, mas nada for feito com a variável, o efeito
será ignorar a coluna, em vez de inseri-la na tabela. Ou, com a inclusão de uma cláusula
SET, podem ser usadas expressões que transformam o valor antes de inseri-lo.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Exportando e Importando Dados


Capítulo 15 - Página 9
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Registros Duplicados

Oracle University and Error : You are not a Valid Partner use only
Quando você usa a instrução INSERT ou a instrução REPLACE para adicionar novas linhas a
uma tabela, é possível controlar como manipular novas linhas que contêm valores que
duplicam valores de chave exclusiva que já estão presentes na tabela. Pode ocorrer um erro,
as novas linhas podem ser ignoradas ou as linhas antigas podem ser substituídas por novas.
LOAD DATA INFILE fornece os mesmos tipos de controle sobre linhas duplicadas por meio
do uso de duas palavras-chave do modificador. Entretanto, se o comportamento de
manipulação de duplicação é um pouco diferente, dependendo de o arquivo de dados estar
no host servidor ou no host cliente; portanto, o local do arquivo de dados deve ser levado em
consideração.
Manipulação de Linhas Duplicadas
Ao carregar um arquivo localizado no host servidor, LOAD DATA INFILE manipula linhas
que contêm chaves exclusivas duplicadas da seguinte maneira:
• Por default, um registro de entrada que causa a violação de uma chave duplicada
resulta em erro; o restante do arquivo de dados não é carregado. Os registros
processados até esse ponto são carregados na tabela.
• Se a palavra-chave IGNORE for especificada após o nome do arquivo, novos registros
que causam violações de chave duplicada são ignorados e não ocorre nenhum erro.
LOAD DATA INFILE processa o arquivo inteiro, carrega todos os registros que não
contêm chaves duplicadas e descarta o restante.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Exportando e Importando Dados


Capítulo 15 - Página 10
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

• Se a palavra-chave REPLACE for especificada após o nome do arquivo, novos registros


que causam violações de chave duplicada substituirão quaisquer registros já na tabela
que contiverem valores de chave duplicada. LOAD DATA INFILE processa o arquivo
inteiro e carrega todos os seus registros na tabela.
Duplicado no Host Cliente
Para arquivos de dados localizados no host cliente, a manipulação de chaves exclusivas
duplicadas é semelhante, exceto pelo comportamento default ser ignorar registros que
contenham chaves duplicadas, em vez de finalizar com um erro. Ou seja, o comportamento
default é deixar como está, embora o modificador IGNORE seja especificado. O motivo disso

Oracle University and Error : You are not a Valid Partner use only
é que o protocolo cliente/servidor não permite a interrupção da transferência do arquivo de
dados do host cliente para o servidor depois de a transferência ser iniciada; portanto, não há
nenhuma maneira conveniente de abortar a operação no meio.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Exportando e Importando Dados


Capítulo 15 - Página 11
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Resumo

Exportando e Importando Dados


Capítulo 15 - Página 12
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Exportando e Importando Dados


Capítulo 15 - Página 13
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Visão Geral do Exercício 15-1: Exportar Dados do MySQL

Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Exportando e Importando Dados


Capítulo 15 - Página 14
Visão Geral do Exercício 15-2: Importar Dados

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Programando Dentro do MySQL


Capítulo 16 - Página 1
Capítulo 16
MySQL

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Programando Dentro do

Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Programando Dentro do MySQL


Programando Dentro do MySQL

Capítulo 16 - Página 2
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Objetivos

Programando Dentro do MySQL


Capítulo 16 - Página 3
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Rotinas Armazenadas

Oracle University and Error : You are not a Valid Partner use only
Administradores de Banco de Dados
Essa lição aborda procedimentos armazenados de uma perspectiva do DBA. Um grande
número de DBAs recebe a responsabilidade de oferecer suporte aos procedimentos
armazenados em vez de realmente criar os procedimentos.
Procedimentos Armazenados Avançados do MySQL
A Oracle University oferece um curso de dois dias no qual você aprende a melhorar a
qualidade dos procedimentos armazenados, funções e triggers em suas aplicações e também
como depurar e otimizá-los. Com enfoque em exercícios práticos, este curso com instrutores
é designado a ensinar você a maximizar o uso de procedimentos armazenados e a
determinar quando uma aplicação deve conter procedimentos armazenados e quando não
deve.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 4
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Usos de Rotinas Armazenadas

Oracle University and Error : You are not a Valid Partner use only
Aplicações Clientes
Com rotinas armazenadas, é possível criar uma instrução em uma aplicação (MySQL) a ser
usada em diversas aplicações clientes que devem exigir a criação de programas para
diferentes linguagens de programação ou que funcionem em diferentes plataformas.
Segurança
As rotinas armazenadas fornecem uma saída para os programas que exigem o mais alto
nível de segurança. Bancos, por exemplo, usam procedimentos e funções armazenados para
todas as operações comuns. Isso fornece um ambiente consistente e seguro, e as rotinas
asseguram que cada operação seja corretamente registrada. Nessa configuração, as
aplicações e os usuários não possuem acesso às tabelas de banco de dados diretamente e
podem executar apenas rotinas armazenadas específicas.
Desempenho
Rotinas armazenadas podem melhorar o desempenho porque menos informações precisam
ser enviadas entre o servidor e o cliente.
Bibliotecas de Funções
As rotinas armazenadas permitem bibliotecas de funções no servidor do banco de dados.
Essas bibliotecas atuam como uma API para o banco de dados.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 5
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Problemas de Rotina Armazenada

Oracle University and Error : You are not a Valid Partner use only
Maior Carga do Servidor
A execução de rotinas armazenadas no banco de dados pode aumentar a carga do servidor e
reduzir o desempenho das aplicações. Teste e bom senso precisam ser aplicados para
garantir que a conveniência de se ter lógica no banco de dados tem mais importância do que
qualquer problema de desempenho que possa surgir.
Ferramentas de Desenvolvimento Limitadas
Atualmente há um número limitado de ferramentas de desenvolvimento para suportar rotinas
armazenadas no MySQL. Essa limitação pode tornar a criação e a depuração um processo
mais difícil e que precisa ser considerado no processo de decisão.
Velocidade e Funcionalidade de Linguagem Limitadas
Muito embora a existência de lógica no banco de dados seja uma vantagem significativa em
muitas situações, há limitações sobre o que pode ser realizado em comparação a outras
linguagens de programação. Você deve considerar isso para garantir que a melhor solução
possível esteja sendo usada.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 6
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Executando Rotinas Armazenadas

Oracle University and Error : You are not a Valid Partner use only
Os comandos para chamar rotinas armazenadas são muito parecidos com outros comandos
no MySQL.
Um procedimento é chamado com o uso de uma instrução CALL e pode apenas transferir
valores usando variáveis de saída. Uma função pode ser chamada em uma instrução, como
qualquer outra função (ou seja, chamando o nome da função) e pode retornar um valor em
escala.
No MySQL, um procedimento ou função armazenado é associado a um banco de dados em
particular. Isso apresenta várias implicações:
• USE <database>: Quando a rotina é chamada, uma instrução USE db_name implícita
é executada (e desfeita quando a rotina termina). As instruções USE nas rotinas
armazenadas não são permitidas.
• Qualificar nomes: Os nomes de rotina podem ser qualificados com o nome do banco de
dados. Você pode usar isso para se referir a uma rotina que não esteja no banco de
dados atual. Por exemplo, para chamar um procedimento armazenado p ou função f
que esteja associado ao banco de dados test, você pode usar CALL test.p() ou
test.f().
• Deleções do banco de dados: Quando um banco de dados é eliminado, todas as rotinas
armazenadas associadas a ele também são eliminadas.
O MySQL suporta extensões que permitem o uso de instruções SELECT regulares dentro de
um procedimento armazenado. O conjunto de resultados de uma consulta é enviado
diretamente ao cliente.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 7
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Procedimento Armazenado: Exemplo

Oracle University and Error : You are not a Valid Partner use only
Instruções Compostas
A sintaxe BEGIN…END pode ser usada em rotinas armazenadas e triggers. As instruções
compostas na sintaxe BEGIN…END podem conter uma ou mais instruções (não há limite) ou
nenhuma instrução (uma instrução composta vazia é legal).
Delimitador
Na sintaxe BEGIN…END, as instruções devem ser terminadas com um ponto e vírgula (;).
Como o ponto e vírgula é o mesmo caractere de finalização default para as instruções SQL,
você deve alterar o caractere de finalização de SQL com a instrução DELIMITER ao usar o
cliente de linha de comando ou o processamento batch do MySQL.
A primeira instrução DELIMITER usa duas barras na finalização do caractere da instrução
SQL (//). Essa alteração permite que o caractere de finalização da instrução composta da
rotina armazenada seja o ponto e vírgula. Depois de a rotina armazenada com as instruções
compostas ser criada, a segunda instrução DELIMITER retornará o caractere SQL de
finalização para um ponto e vírgula.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 8
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Função Armazenada: Exemplo

Oracle University and Error : You are not a Valid Partner use only
Returns
A instrução RETURNS identifica o valor que é retornado por essa função.
Características
Diversas características fornecem informações sobre a natureza dos dados usados pela
rotina. No MySQL, essas características são apenas para consulta. O servidor não as usa
para restringir os tipos de instruções que uma rotina tem permissão para executar.
• CONTAINS SQL indica que a rotina não contém instruções que leem ou gravam dados.
Esse será o default se nenhuma dessas características for fornecida explicitamente.
• NO SQL indica que a rotina não contém instruções SQL.
• READS SQL DATA indica que a rotina contém instruções que leem dados (por exemplo,
SELECT), mas nenhuma instrução que grava dados.
• MODIFIES SQL DATA indica que a rotina contém instruções que podem gravar dados
(por exemplo, INSERT ou DELETE).
Observação: Quando o log binário é ativado, o servidor MySQL gerará um erro se você
estiver usando a característica CONTAINS SQL em vez da característica NO SQL ou READS
SQL DATA.

Declare
A instrução DECLARE é usada para declarar variáveis locais e pode ser usada nas rotinas
armazenadas para inicializar variáveis de usuário. A cláusula DEFAULT pode ser adicionada

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 9
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

no final da instrução DECLARE para identificar qual deve ser o valor inicial para a variável de
usuário. Se a cláusula DEFAULT for excluída, o valor inicial para variável de usuário será
NULL.

Set
A instrução SET permite designar um valor para as variáveis definidas usando = ou :=
como operador de designação.

Return

Oracle University and Error : You are not a Valid Partner use only
A instrução RETURN finaliza a execução de uma função armazenada e retorna a expressão
do valor para o chamador da função.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 10
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Examine as Rotinas Armazenadas

Oracle University and Error : You are not a Valid Partner use only
SHOW CREATE PROCEDURE e SHOW CREATE FUNCTION
Essas instruções são extensões do MySQL e são semelhantes a SHOW CREATE TABLE.
Essas instruções retornam a string exata que pode ser usada para recriar uma rotina
nomeada. Uma das principais limitações dessas instruções é que você deve conhecer o
nome do procedimento ou da função e deve saber se é um procedimento ou função antes de
tentar exibir as informações.
SHOW PROCEDURE e SHOW FUNCTION STATUS
Essa instrução é uma extensão do MySQL. Ela retorna características de rotinas, como
banco de dados, nome, tipo, criador e datas de criação e de modificação. Essas instruções
têm a vantagem de serem capazes de exibir rotinas específicas com base em um padrão
LIKE. Se nenhum padrão for especificado, as informações de todos os procedimentos ou
todas as funções armazenados serão listadas, dependendo de qual instrução é usada.
INFORMATION_SCHEMA.ROUTINES
A tabela INFORMATION_SCHEMA.ROUTINES fornece informações sobre as rotinas
armazenadas (procedimentos e funções) e retorna a maioria dos detalhes que podem ser
encontrados nas instruções SHOW CREATE … e SHOW … STATUS para incluir a sintaxe real
usada para criar as rotinas armazenadas. Das três opções, essa tabela mantém o cenário
mais completo das rotinas armazenadas disponíveis nos bancos de dados.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 11
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Tabelas no Banco de Dados mysql do Sistema Associadas a Componentes de


Programação
O banco de dados mysql do sistema contém tabelas que fornecem informações associadas
aos recursos de rotina armazenada do MySQL. As tabelas incluem:
• A tabela mysql.event, que contém informações sobre os eventos armazenados no
servidor MySQL
• A tabela mysql.proc, que contém informações sobre procedimentos e funções
armazenados no servidor MySQL
• A tabela mysql.procs_priv, que fornece detalhes da concessão do controle de

Oracle University and Error : You are not a Valid Partner use only
acesso para usuários em referência aos procedimentos armazenados

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 12
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Rotinas Armazenadas e Segurança de Execução

Oracle University and Error : You are not a Valid Partner use only
Diversos privilégios se aplicam ao uso de procedimentos e funções armazenadas.
Ações Default
Quando uma rotina armazenada é criada, o MySQL automaticamente concede os privilégios
EXECUTE e ALTER ROUTINE a ela. Esses privilégios permitem que a rotina seja revogada ou
removida posteriormente. É possível verificar esses privilégios emitindo uma instrução SHOW
GRANTS após a criação de uma rotina.
Concedendo Privilégios
Uma instrução GRANT que concede o especificado do privilégio ALL no nível global ou de
banco de dados inclui todos os privilégios da rotina armazenada, exceto GRANT OPTION.
Concedendo Opções a Outros
Para conceder o privilégio GRANT OPTION também, inclua uma cláusula WITH GRANT
OPTION no final da instrução. Os privilégios EXECUTE, ALTER ROUTINE e GRANT OPTION
podem ser concedidos no nível de rotina individual, mas apenas para rotinas que já existem.
Para conceder privilégios para uma rotina individual, nomeie a rotina qualificada com um
nome de banco de dados e precedido pela palavra-chave PROCEDURE ou FUNCTION para
indicar o tipo de rotina.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 13
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Questionário

Programando Dentro do MySQL


Capítulo 16 - Página 14
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Triggers

Oracle University and Error : You are not a Valid Partner use only
Os triggers de banco de dados são objetos de banco de dados nomeados que são mantidos
em um banco de dados e são ativados quando os dados em uma tabela são modificados. É
possível usar triggers para oferecer um nível de capacidade e segurança aos dados dentro
das tabelas.
Recursos do trigger
Você pode usar os triggers para fornecer controle sobre o acesso a dados específicos, a
capacidade de executar log específico ou de auditar os próprios dados.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 15
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Crie Triggers

Oracle University and Error : You are not a Valid Partner use only
trigger_name é o nome que você dá ao trigger e table_name é a tabela que você deseja
associar ao trigger. BEFORE ou AFTER indica se o trigger é ativado antes ou depois do evento
de trigger e INSERT, UPDATE ou DELETE indica qual é o evento.
Observação: Os nomes de tabela OLD e NEW podem acessar colunas antes ou após a
operação.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 16
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Eventos do Trigger

Oracle University and Error : You are not a Valid Partner use only
Antes
Esses tipos de eventos são baseados nos tempos de ativação que ocorrem antes de as
alterações dos dados na tabela serem gravadas no banco de dados subjacente. É possível
usar esses tipos de eventos para capturar entradas de dados inadequadas e corrigi-las ou
rejeitar antes de armazená-las.
Depois
Esses tipos de eventos são baseados nos tempos de ativação que ocorrem depois de as
alterações dos dados na tabela serem gravadas no banco de dados subjacente. Você pode
usar esses tipos de eventos para log ou auditar a modificação dos dados sem os bancos de
dados.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 17
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Tratamento de Erros do Trigger

Oracle University and Error : You are not a Valid Partner use only
Para tabelas transacionais, a falha de um trigger (e, dessa forma, toda a instrução) deve
causar o rollback de todas as alterações executadas pela instrução.
Para tabelas não transacionais, esse rollback não pode ser feito. Como resultado, embora a
instrução falhe, todas as alterações executada antes do ponto do erro permanecem em vigor.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 18
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Examinando Triggers

Oracle University and Error : You are not a Valid Partner use only
SHOW CREATE TRIGGERS trigger_name
Essa instrução retorna a string exata que pode ser usada para recriar o trigger nomeado.
Uma das principais limitações dessa instrução é que você deve saber o nome do trigger antes
de tentar exibir as informações.
SHOW TRIGGERS
Essa instrução é uma extensão do MySQL. Ela retorna características de triggers, como
banco de dados, nome, tipo, criador e datas de criação e de modificação. Essa instrução tem
a vantagem de ser capaz de exibir triggers específicos com base em um padrão LIKE. Se
nenhum padrão for especificado, as informações para todos os triggers serão listadas.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 19
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Eliminando Triggers

Oracle University and Error : You are not a Valid Partner use only
Quando você usa DROP TRIGGER trigger_name, o servidor procura esse nome de trigger
no esquema atual. Se trigger_name que estiver sendo deletado estiver em outro
esquema, você poderá incluir o nome do esquema.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 20
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Restrições em Triggers

Oracle University and Error : You are not a Valid Partner use only
Os Conjuntos de Resultados Não Podem Ser Retornados
Não são permitidas:
• Instruções SELECT que não têm uma cláusula INTO var_list
• Instruções SHOW
Um trigger pode processar um conjunto de resultados com SELECT ... INTO var_list
ou usando um cursor e instruções FETCH.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 21
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Programando Dentro do MySQL


Acionar Privilégios

Capítulo 16 - Página 22
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Questionário

Programando Dentro do MySQL


Capítulo 16 - Página 23
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Eventos

Oracle University and Error : You are not a Valid Partner use only
Os eventos do MySQL são tarefas que são executadas de acordo com uma programação.
Eles podem ser conhecidos como "eventos programados". Quando um evento é criado, um
objeto de banco de dados nomeado é criado contendo uma instrução SQL (ou procedimento
armazenado) que deve ser executada em um determinado momento, repetindo
opcionalmente em intervalo regular. Conceitualmente, isso é parecido com o crontab
(também conhecido como "job cronológico") do Linux/UNIX ou do Agendador de Tarefas do
Windows.
Itens obrigatórios
event_name: Os eventos são objetos de esquema, como tabelas, procedimentos
armazenados e triggers. O event_name deve ser um identificador válido e pode ser colocado
entre aspas e/ou qualificado com o nome do esquema de maneira comum. Os nomes de
evento devem ser exclusivos no esquema.
schedule: A programação é uma regra que especifica quando a ação associada ao evento é
executada.
sql_statement: Você deve incluir uma instrução SQL ou instrução de procedimento
armazenado válida que seja executada conforme determinado pela programação. Essa
instrução está sujeita às mesmas limitações, como as instruções que podem aparecer nos
procedimentos armazenados e na SQL dinâmica. Além disso, a instrução não pode ser uma
instrução que retorne um conjunto de resultados (como SELECT ou SHOW). Em geral, você
usa uma instrução CALL para chamar um procedimento a fim de executar a ação real.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 24
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Programador de Eventos
Depois de criar um evento, ele é armazenado no banco de dados para que possa ser
executado de acordo com a programação. As programações de todos os eventos são
monitoradas pelo thread event_scheduler, que inicia um novo thread para realmente
executar o evento quando a programação for atendida.
Por default, o thread event_scheduler não é ativado. Você deve ativá-lo explicitamente
modificando o valor da variável de servidor global event_scheduler. Isso pode ser feito
com a adição da variável de servidor ao arquivo de opções (de modo que a alteração tenha
efeito na inicialização) ou de modo dinâmico, com o uso da sintaxe SET.

Oracle University and Error : You are not a Valid Partner use only
Após a ativação do thread event_scheduler, ele fica visível na saída de SHOW
PROCESSLIST (e o equivalente de INFORMATION_SCHEMA, PROCESSLIST).
Alterando Eventos
Uma vez criado, os EVENTOS podem ser alterados com o uso da sintaxe ALTER EVENT.
Cada elemento do EVENTO pode ser alterado com essa sintaxe. Consequentemente, o
modelo da sintaxe para ALTER EVENT é quase idêntico ao da instrução CREATE EVENT.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 25
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Programação

Oracle University and Error : You are not a Valid Partner use only
Uma programação é uma regra que especifica quando uma ação deve ser executada. É
possível especificar a programação na cláusula SCHEDULE das instruções CREATE EVENT e
ALTER EVENT.
Tipos de Ações de Programação
Há dois tipos de programação: aquelas que são executadas uma vez (usando a palavra-
chave AT) e aquelas que podem ser executadas repetidamente (usando a palavra-chave
EVERY). Para a segunda, é obrigatório que você defina um intervalo para especificar a
frequência. Você também pode definir uma janela de tempo que determine o período durante
o qual o evento deve ser repetido.
A sintaxe para a cláusula SCHEDULE é a seguinte:
AT timestamp [+ INTERVAL interval]| EVERY interval [STARTS
timestamp [+ INTERVAL interval]] [ENDS timestamp [+ INTERVAL
interval]]
Cláusula SCHEDULE
A cláusula SCHEDULE pode conter os seguintes elementos da variável:
• timestamp: Uma expressão do tipo DATETIME ou TIMESTAMP
• interval: Especifica uma duração. A duração é expressada por meio da
especificação de uma quantidade como um inteiro seguido por uma palavra-chave que
define um tipo de duração em particular. As palavras-chave válidas são:
- YEAR
- QUARTER

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 26
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

- MONTH
- DAY
- HOUR
- MINUTE
- WEEK
- SECOND
- YEAR_MONTH
- DAY_HOUR

Oracle University and Error : You are not a Valid Partner use only
- DAY_MINUTE
- DAY_SECOND
- HOUR_MINUTE
- HOUR_SECOND
- MINUTE_SECOND
Programador de Eventos
Os eventos são executados pelo programador de eventos, que é um thread separado no
processo mysqld. Ele verifica se deve executar um evento; se sim, ele criará uma nova
conexão para executar a ação.
Usos de Evento
É possível usar eventos para execução automática e periódica de tarefas (manutenção),
como atualização de uma tabela de resumo ou de uma tabela com base em uma consulta
(emulação de view materializada) e para execução de jobs à noite (processando o trabalho
do dia, carregando data warehouse, exportando dados para arquivos).

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 27
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Programador de Eventos e Privilégios

Oracle University and Error : You are not a Valid Partner use only
Cancele o Privilégio Event
Para cancelar o privilégio EVENT, use a instrução REVOKE. Revogar o privilégio EVENT de
uma conta de usuário não deleta nem desativa quaisquer eventos que foram criados por essa
conta.
Tabelas mysql
Os privilégios EVENT dos usuários são armazenados nas colunas Event_priv das tabelas
mysql.user e mysql.db. Em ambos os casos, essa coluna mantém um dos valores 'Y' ou
'N'. 'N' é o default. mysql.user.Event_priv será definido como 'Y' para um determinado
usuário somente se ele tiver o privilégio global EVENT. Para um privilégio EVENT no nível de
esquema, GRANT cria uma linha no mysql.db e define a coluna Db dessa linha com o nome
do esquema, a coluna User com o nome do usuário, e a coluna Event_priv como 'Y'. Você
não deve nunca ter que manipular essas tarefas diretamente, pois as instruções GRANT
EVENT e REVOKE EVENT executam as operações necessárias nelas.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 28
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Evento Executado com Privilégios do Definidor

Oracle University and Error : You are not a Valid Partner use only
É importante compreender que o evento é executado com os privilégios de seu definidor e
que ele não pode executar nenhuma ação para a qual seu definidor não tem os privilégios
necessários. Por exemplo, suponha que jon@ghidora tenha o privilégio EVENT para
myschema. Suponha também que ele tenha o privilégio SELECT para myschema, mas não
outros privilégios para esse esquema. Mesmo que seja possível para jon@ghidora criar um
novo evento, o próprio evento não pode executar as ações estabelecidas porque ele não tem
os privilégios para executar a ação.
Log de Erros
Se você inspecionar o log de erros do MySQL (hostname.err), poderá observar que o
evento está em execução, mas que a ação que ele está tentando executar falha, conforme
indicado por RetCode=0:
...
060209 22:39:44 [Note] EVEX EXECUTING event newdb.e [EXPR:10]
060209 22:39:44 [Note] EVEX EXECUTED event newdb.e [EXPR:10]. RetCode=0
060209 22:39:54 [Note] EVEX EXECUTING event newdb.e [EXPR:10]
060209 22:39:54 [Note] EVEX EXECUTED event newdb.e [EXPR:10]. RetCode=0
060209 22:40:04 [Note] EVEX EXECUTING event newdb.e [EXPR:10]
060209 22:40:04 [Note] EVEX EXECUTED event newdb.e [EXPR:10]. RetCode=0
...

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 29
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Examinando Eventos

Oracle University and Error : You are not a Valid Partner use only
SHOW CREATE EVENT event_name
Essa instrução exibe a instrução CREATE EVENT necessária para criar novamente um
determinado evento. Uma das principais limitações dessa instrução é que você deve saber o
nome do evento antes de tentar exibir as informações.
SHOW EVENTS
Essa instrução é uma extensão do MySQL. Ela retorna características de eventos, como
banco de dados, nome, tipo, criador e datas de criação e de modificação. Essa instrução tem
a vantagem de ser capaz de exibir eventos específicos com base em um padrão LIKE. Se
nenhum padrão for especificado, as informações para todos os eventos serão listadas.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 30
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Programando Dentro do MySQL


Eliminando Eventos

Capítulo 16 - Página 31
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Questionário

Programando Dentro do MySQL


Capítulo 16 - Página 32
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

SIGNAL e RESIGNAL

Oracle University and Error : You are not a Valid Partner use only
Esses comandos oferecem uma maneira de retornar um erro ao usuário final. SIGNAL
fornece informações do erro a um handler, a uma parte externa da aplicação ou ao cliente.
RESIGNAL transmite as informações da condição do erro que estão disponíveis durante a
execução de um handler de condição em uma instrução composta dentro do procedimento ou
função, trigger ou evento armazenado.
Consulte http://dev.mysql.com/doc/refman/5.5/en/signal-resignal.html para obter uma
discussão completa sobre esses comandos.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 33
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Resumo

Programando Dentro do MySQL


Capítulo 16 - Página 34
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Programando Dentro do MySQL


Capítulo 16 - Página 35
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Visão Geral do Exercício 16-1: Criar Rotinas Armazenadas

Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Visão Geral do Exercício 16-2: Verificar Rotinas Armazenadas

Oracle University and Error : You are not a Valid Partner use only

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Programando Dentro do MySQL


Capítulo 16 - Página 36
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Programando Dentro do MySQL


Capítulo 16 - Página 37
Visão Geral do Exercício 16-3: Criando Triggers

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Programando Dentro do MySQL


Capítulo 16 - Página 38
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Visão Geral do Exercício 16-4: Criar e Testar um Evento

Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Views
Views

Capítulo 17 - Página 1
Capítulo 17

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Views
Views

Capítulo 17 - Página 2
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Views
Objetivos

Capítulo 17 - Página 3
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Views

Oracle University and Error : You are not a Valid Partner use only
Uma view é um objeto de banco de dados que é definido nos termos de uma consulta
(expressão SELECT) que recupera os dados que você deseja que a view gere. Às vezes as
views são chamadas de "tabelas virtuais". Uma view pode ser usada para selecionar tabelas
regulares ("tabelas-base) ou outras views. Uma view pode ser atualizada e pode ser usada
com instruções, como UPDATE, DELETE ou INSERT para modificar uma tabela-base
subjacente.
Acesso a Dados
Uma view pode ser usada para:
• Executar um cálculo e exibir seu resultado. Por exemplo, é possível usar uma
definição de view para
exibir um resumo usando funções agregadas.
• Selecionar um conjunto restrito de linhas por meio de uma cláusula WHERE apropriada
ou selecionar apenas
um subconjunto de colunas de uma tabela
• Selecionar dados de várias tabelas usando uma join ou união
Operações Executadas Automaticamente
Uma view executa operações automaticamente. O usuário final não precisa especificar a
expressão na qual um cálculo se baseia, as condições que restringem linhas na cláusula
WHERE ou as condições usadas para corresponder tabelas para uma join.
• As views podem ser usadas para exibir conteúdo de tabela distintos para usuários
diferentes; portanto, cada usuário vê apenas os dados relacionados às atividades do
usuário. Isso melhora a segurança, ocultando informações aos usuários que não as

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Views
Capítulo 17 - Página 4
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

devem acessar ou modificar. Também reduz a distração, porque colunas irrelevantes não
são exibidas.
• As views podem auxiliar com alterações de estrutura que precisam ser feitas nas tabelas
para acomodar determinadas aplicações. A view pode preservar a aparência da estrutura
da tabela original para minimizar as interrupções para outras aplicações. Por exemplo, se
você dividir uma tabela em duas novas tabelas, poderá criar uma view (com o nome da
tabela original) que copia a estrutura da tabela original. É possível definir essa view para
selecionar dados das novas tabelas.

Oracle University and Error : You are not a Valid Partner use only

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Views
Capítulo 17 - Página 5
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Crie Views

Oracle University and Error : You are not a Valid Partner use only
<view_name> é o nome que você fornece à view. Ele pode ser não qualificado para criar a
view no banco de dados default ou pode ser qualificado como <db_name>.<view_name>
para criá-la em um banco de dados específico.
<select_expression> é uma consulta que indica como recuperar dados quando a view é
usada. A instrução pode selecionar entre as tabelas-base ou outras views. As referências na
instrução SELECT para nomes de tabela ou de view não qualificados são resolvidas no banco
de dados que era o default no momento em que a view foi criada. Para selecionar entre uma
tabela ou view em um banco de dados específico, consulte-o usando a sintaxe
<db_name.table_name> ou <db_name.view_name>.
Componentes Opcionais
• OR REPLACE: Qualquer view existente que tenha o nome igual ao da nova é eliminada
antes da criação da nova view.
• ALGORITHM: Especifica o algoritmo de processamento a ser usado quando a view é
chamada
• <column_list>: É usado para substituir os nomes das colunas na tabela ou view
subjacente
• WITH CHECK OPTION: É usado para garantir que todas as alterações dos dados feitas à
view sejam verificadas a fim de assegurar que as linhas novas ou atualizadas atendam à
condição WHERE na expressão da consulta da view

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Views
Capítulo 17 - Página 6
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Views
Questionário

Capítulo 17 - Página 7
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Views Atualizáveis

Oracle University and Error : You are not a Valid Partner use only
Uma view será atualizável se ela puder ser usada com instruções, como UPDATE ou DELETE
para modificar a tabela-base subjacente. Nem todas as views são atualizáveis. Por exemplo,
pode ser preciso atualizar uma tabela, mas uma view não poderá atualizar a tabela se a view
for definida nos termos de valores agregados calculados com base na tabela. Isso ocorre
porque cada linha da view não precisa corresponder a uma linha de tabela-base exclusiva,
caso em que o MySQL não seria capaz de determinar qual linha de tabela atualizar.
Views Atualizáveis de Várias Tabelas
É possível que uma view de várias tabelas seja atualizável com as seguintes restrições:
• Ela pode ser processada com o algoritmo MERGE.
• A view deve usar uma join interna (e não uma join externa ou uma instrução UNION).
• Apenas uma única tabela na definição da view pode ser atualizada.
• As views que usam UNION ALL não são permitidas, muito embora elas possam ser
teoricamente atualizáveis.
• INSERT só poderá funcionar se for inserida em uma única tabela. DELETE não é
suportada.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Views
Capítulo 17 - Página 8
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Views
Views Inseríveis

Capítulo 17 - Página 9
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Views
Questionário

Capítulo 17 - Página 10
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

SQL SECURITY

Oracle University and Error : You are not a Valid Partner use only
Você precisa dos privilégios apropriados para trabalhar com as views. Além disso, para os
privilégios necessários na própria view, há a questão de como tratar os privilégios, ou a falta
deles, nos objetos de banco de dados usados na instrução SELECT subjacente. Os objetos
do banco de dados, como tabelas-base, funções SQL armazenadas e outras views podem
aparecer na instrução SELECT e, para cada um desses objetos, o usuário que consulta a view
pode ter ou não o privilégio para usar esses objetos. A característica SQL SECURITY da view
determina como os problemas desse privilégio são tratados.
A característica SQL SECURITY pode ser opcionalmente especificada nas instruções
CREATE VIEW e ALTER VIEW. Quando a característica é omitida, a view é criada com SQL
SECURITY DEFINER por default.
• Se você definir SQL SECURITY para INVOKER, a view poderá ser consultada somente se
o usuário puder consultar as tabelas-base e as views usadas na definição da view e se o
usuário puder executar todas as funções SQL de armazenamento usadas na view.
• Se você definir SQL SECURITY para DEFINER, a view será consultada usando os
privilégios do usuário que for considerado o criador da view. Por default, o criador da view
é o usuário que executa a instrução CREATE VIEW. Entretanto, o criador pode ser
explicitamente especificado usando a característica DEFINER, que pode ter um dos
seguintes valores:
- Um identificador de conta do usuário (user@host)
- CURRENT_USER

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Views
Capítulo 17 - Página 11
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Por default, o DEFINER é idêntico à conta do usuário que executa a instrução CREATE
VIEW. Especificar CURRENT_USER também envolve a conta do usuário que executa a
instrução CREATE VIEW. Se você for um usuário SUPER, poderá especificar qualquer
conta para a cláusula DEFINER e, dessa forma, criar uma view no nome de outro usuário.

Oracle University and Error : You are not a Valid Partner use only

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Views
Capítulo 17 - Página 12
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Views
DEFINER

Capítulo 17 - Página 13
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

WITH CHECK OPTION

Oracle University and Error : You are not a Valid Partner use only
Se uma view for atualizável, você poderá usar a cláusula WITH CHECK OPTION para incluir
uma restrição nas modificações permitidas. Essa cláusula faz com que as condições na
cláusula WHERE da definição da view sejam verificadas quando há tentativa de atualização:
• Uma instrução UPDATE em uma linha existente será permitida somente se a cláusula
WHERE continuar verdadeira para a linha resultante.
• Uma instrução INSERT será permitida somente se a cláusula WHERE for verdadeira para
a próxima linha.
WITH CHECK OPTION assegura que uma linha não possa ser atualizada, de maneira que a
view não a selecione mais, e não possa ser inserida uma linha que a view não pode
selecionar.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Views
Capítulo 17 - Página 14
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Examine as Views

Oracle University and Error : You are not a Valid Partner use only
CHECK TABLE
Quando você define uma view, qualquer objeto ao qual ela fizer referência (como uma tabela,
view ou coluna) deve existir. Entretanto, uma view poderá se tornar inválida se uma tabela,
view ou coluna da qual ela depende for eliminada ou alterada. Para verificar se uma view tem
problemas dessa natureza, use a instrução CHECK TABLE.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Views
Capítulo 17 - Página 15
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Altere as Definições da View

Oracle University and Error : You are not a Valid Partner use only
Use a instrução ALTER VIEW para alterar a definição de uma view existente. ALTER VIEW
descarta a definição atual da view e a substitui pela nova definição na instrução. Um erro será
produzido se a view nomeada não existir. Sintaticamente, a única diferença entre ALTER
VIEW e CREATE VIEW é que a palavra-chave inicial é ALTER em vez de CREATE.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Views
Capítulo 17 - Página 16
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Elimine as Views

Oracle University and Error : You are not a Valid Partner use only
Quando você usa DROP VIEW <view_name>, o servidor procura esse nome de view no
esquema atual. Se <view_name> que estiver sendo deletado estiver em outro esquema, você
poderá incluir o nome do esquema.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Views
Capítulo 17 - Página 17
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Views
Questionário

Capítulo 17 - Página 18
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Views
Resumo

Capítulo 17 - Página 19
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Views
Capítulo 17 - Página 20
Visão Geral do Exercício 17-1: Criar Views

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Views
Capítulo 17 - Página 21
Visão Geral do Exercício 17-2: Views Atualizáveis

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Views
Capítulo 17 - Página 22
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Visão Geral do Exercício 17-3: Exibir e Modificar Views

Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Backup e Recuperação de MySQL


Capítulo 18 - Página 1
Capítulo 18
MySQL

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Backup e Recuperação de

Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Backup e Recuperação de MySQL


Backup e Recuperação de MySQL

Capítulo 18 - Página 2
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Objetivos

Backup e Recuperação de MySQL


Capítulo 18 - Página 3
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Noções Básicas de Backup

Oracle University and Error : You are not a Valid Partner use only
Motivos para Backups
• Recuperação completa do sistema: Se um sistema falhar, ter um backup de seus
dados para restaurar o sistema é crucial. A estratégia de backup e recuperação que
você implementa é determinada pela necessidade de dados completos e atualizados.
• Recursos de auditoria: Para determinados sistemas e processos associados, pode ser
importante para os usuários finais ou administradores dos dados conseguirem auditar
ou analisar os dados em um ambiente separado do ambiente de produção principal. Os
backups podem se úteis nessa capacidade.
• Tarefas comuns de DBA: Os backups de dados poderão ser necessários quando for
preciso executar tais tarefas comuns de DBA, como transferência de dados de um
sistema para outro, criação de um servidor de desenvolvimento com base em um
estado específico de um servidor de produção, recuperação de determinadas porções
do sistema para um estado antes de um erro do usuário etc.
• On-line: Esses backups dinâmicos são realizados enquanto os dados estão sendo lidos
e modificados com pouca ou nenhuma interrupção de sua capacidade para interagir
com/manipular dados. Com backups on-line, é possível manter a acessibilidade do
sistema para leitura e modificação de conjuntos de dados.
• Off-line: Esses backups são realizados enquanto os dados estão completamente
bloqueados para leitura e/ou quaisquer modificações aos dados por parte dos usuários.
Esses backups off-line impedem que você execute quaisquer atividades com os dados.
Esses tipos de backups não interferem no desempenho do sistema quando ele está em
funcionamento. Entretanto, bloquear completamente o acesso do usuário aos dados por
um período extenso não é aceitável para algumas aplicações.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 4
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

• Morno: Esses backups são realizados enquanto os dados são lidos, mas na maioria
dos casos os dados não podem ser modificados enquanto o backup é feito. Esse tipo de
backup moderado tem a vantagem de não ter que bloquear completamente os usuários
finais. Entretanto, a desvantagem de não conseguir modificar os conjuntos de dados
enquanto o backup é realizado pode tornar esse tipo de backup não apropriado para
determinadas aplicações. Não conseguir modificar dados durante backups pode
produzir problemas de desempenho.

Oracle University and Error : You are not a Valid Partner use only

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 5
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Noções Básicas de Backup

Oracle University and Error : You are not a Valid Partner use only
• Disco: Fazer o backup diretamente em outro disco usando processos, como replicação
ou espelhamento dos dados (por exemplo, RAID) ou usando aplicações externas (como
DRBD), pode fornecer um meio dinâmico (ou o mais dinâmico possível) e rápido de
recuperar dados.
• Logs binários: O log binário registra modificações nos dados; ele não registra
instruções SELECT ou SHOW. Portanto, os logs binários são muito úteis para restaurar
os eventos que ocorreram desde o último backup integral. A vantagem de fazer backup
de logs binários é que eles contêm um snapshot dos dados de determinado momento.
Vários logs binários podem existir em ordem sequencial, desde o último backup integral,
dependendo do volume de dados que estiver sendo modificado e com que frequência o
backup integral é concluído. A desvantagem dos logs binários é que todos os logs
binários sequenciais que foram criados desde o último backup integral devem ser
restaurados em sequência. Além disso,
a recuperação de uma falha do sistema pode ser lenta, dependendo do número de logs
binários que devem ser restaurados.
• Backup lógico/textual: Você pode fazer um dump de dados completo usando
mysqldump. Esses dumps de dados são baseados em um momento específico, mas
são os mais lentos entre todas as cópias de backup. A vantagem de usar o mysqldump
é que o arquivo criado é simplesmente um número de instruções SQL que podem ser
facilmente transferidas para outro sistema. A desvantagem é que é necessário bloquear
as tabelas durante o dump, que evita que os usuários leiam ou gravem nos arquivos
durante o backup.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 6
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Backups com MySQL

Oracle University and Error : You are not a Valid Partner use only
O backup do MySQL pode ser um dos seguintes:
• Um backup lógico resulta em um arquivo de texto contendo instruções SQL para
reconstruir o banco de dados.
• Um backup físico é uma cópia binária dos arquivos de banco de dados do MySQL.
• Um backup baseado em snapshot
• Um backup baseado em replicação
• Um backup incremental (criado pelo descarregamento dos logs binário do MySQL)

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 7
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Questionário

Backup e Recuperação de MySQL


Capítulo 18 - Página 8
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Backups Lógicos (Textuais)

Oracle University and Error : You are not a Valid Partner use only
Instruções SQL
Os backups lógicos ou textuais fazem dump do conteúdo do banco de dados em arquivos de
texto. Esses arquivos de texto contêm instruções SQL e, como tal, são muito portáveis. Essas
instruções SQL contêm todas as informações necessárias para recriar bancos de dados e
tabelas do MySQL. É possível usar o arquivo de texto para recarregar o banco de dados em
outro host, executando uma arquitetura diferente.
O Servidor Deve Estar em Execução
O servidor MySQL deve estar em execução durante a criação de backups lógicos porque o
servidor lê e interpreta os arquivos dos quais serão feitos os backups. Outras aplicações
podem executar operações de leitura durante o backup lógico.
Servidores Locais e Remotos
Com backups lógicos, você pode fazer o backup de servidores MySQL locais e remotos. É
possível executar outros tipos de backup (bruto) somente no servidor MySQL local.
Geralmente Mais Lento
Os backups lógicos geralmente são mais lentos do que os backups brutos. Isso ocorre
porque o servidor MySQL deve ler tabelas e interpretar seu conteúdo. Em seguida, ele deve
converter o conteúdo da tabela em um arquivo no disco ou enviar as instruções a um
programa cliente que as grava.
Um backup lógico também é mais lento do que um backup bruto durante a recuperação. Isso
ocorre porque o método de recuperação é ler as instruções INSERT individuais e recriar cada
tabela e linha.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 9
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Backups Físicos (Brutos ou Binários)

Oracle University and Error : You are not a Valid Partner use only
Cópia Exata
Os backups brutos são cópias binárias dos arquivos de banco de dados do MySQL. Essas
cópias preservam os bancos de dados exatamente no mesmo formato em que o MySQL os
armazena em disco. Como eles são cópias exatas dos originais, os backups brutos possuem
o mesmo tamanho do original.
É mais rápido fazer um backup binário porque envolve apenas operações de arquivo de cópia
que não precisam de nenhuma informação sobre a estrutura interna dos arquivos. Entretanto,
se o backup for usado para transferir bancos de dados para outra máquina que use uma
arquitetura diferente, os arquivos devem ser portáveis binários. Como um backup bruto é uma
representação exata dos bits nos arquivos de banco de dados, ele precisa ser restaurado em
um servidor MySQL usando o mesmo mecanismo do banco de dados. Um backup bruto do
MySQL não pode ser recuperado de um banco de dados InnoDB para um banco de dados
MyISAM.
Shutdown do Servidor MySQL
Com métodos de backup binário, você deve ter certeza de que o servidor não modifica os
arquivos enquanto o backup está em andamento. Isso pode ser alcançado de várias
maneiras. Uma é fazer shutdown do servidor MySQL e depois usar o backup. Isso tem
desvantagens óbvias. Para alguns mecanismos de armazenamento, uma melhor abordagem
é bloquear temporariamente o banco de dados, usar o backup e, em seguida, desbloquear o
banco de dados. O impacto também pode ser minimizado para o MySQL e as aplicações com
o uso de métodos de snapshots, replicação ou proprietários.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 10
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Backup Baseado em Snapshot

Oracle University and Error : You are not a Valid Partner use only
Recurso de Snapshot Externo
Os backups baseados em snapshot usam algum recurso de snapshot externo. Por exemplo,
se seus bancos de dados MySQL e logs binários existirem em um volume lógico LVM2 com
um sistema de arquivos apropriados (XFS ou VxFS), você poderá criar backups de snapshot.
Os backups baseados em snapshot funcionam melhor para mecanismos transacionais, como
o InnoDB. Para o InnoDB, pode ser executado um backup on-line; para outros mecanismos,
pode ser executado um backup morno.
Dimensionável
Os backups de snapshot são dimensionáveis, pois o tempo necessário para executar o
snapshot não aumenta na mesma proporção que o tamanho do banco de dados. Na verdade,
a janela de backup (da perspectiva da aplicação) é quase zero. Entretanto, um backup
baseado em snapshot deve sempre incluir um backup bruto após o snapshot ser obtido.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 11
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Backup Baseado em Replicação

Oracle University and Error : You are not a Valid Partner use only
Replicação Assíncrona Unidirecional
Os recursos do MySQL suportam replicação assíncrona unidirecional, em que um servidor
atua como master, enquanto um ou mais servidores atuam como slave. Os backups podem
ser executados por meio da replicação com o uso da réplica ou do slave, e não do master.
Isso tem a vantagem de não produzir nenhum impacto no servidor master.
Desvantagens
Essa é uma solução mais cara, pois você deve adquirir hardware e largura de banda
adicionais. Além disso, a cópia do banco de dados do slave não é idêntica à do master
porque ela é uma replicação assíncrona.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 12
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Questionário

Backup e Recuperação de MySQL


Capítulo 18 - Página 13
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Log Binário e Backups Incrementais

Oracle University and Error : You are not a Valid Partner use only
Alterações Feitas Após o Backup
É necessário fazer backups, mas um backup é apenas um dos componentes necessários
para a recuperação de dados após perda ou dano. O outro é o log binário, que contém um
registro de todas as alterações dos dados. Para recuperar bancos de dados, você usa os
backups para restaurá-los ao seu estado no momento do backup. Depois de o backup ter
sido restaurado, você executa as instruções contidas no log binário que fizeram as alterações
nos dados após o backup ter sido criado. Verifique se o log binário está ativado para todos os
servidores MySQL.
Privilégio SUPER
Você deve ter o privilégio SUPER para definir essa variável. Qualquer tentativa de defini-la
sem o privilégio SUPER resulta no seguinte erro:
ERROR 1227 (42000): Access denied; you need the SUPER privilege for
this operation

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 14
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Ferramentas de Backup: Visão Geral

Oracle University and Error : You are not a Valid Partner use only
Os backups podem ser feitos sem o uso de ferramentas ou utilitários adicionais. Alguns
exemplos incluem:
• Instruções SQL que são usadas para executar backups lógicos
• Execução de backups brutos de uma combinação de instruções SQL (para bloqueio)
juntamente com comandos do sistema operacional (para criação da cópia binária)
MySQL Enterprise Backup
O produto MySQL Enterprise Backup executa operações de backup on-line para bancos de
dados MySQL. O produto é projetado para backups eficientes e confiáveis de tabelas criadas
pelo mecanismo de armazenamento do InnoDB. Para a integridade, ele também pode fazer o
backup de tabelas do MyISAM e de outros mecanismos de armazenamento.
É possível encontrar informações sobre o MySQL Enterprise Backup em
http://dev.mysql.com/doc/mysql-enterprise-backup/3.6/en/intro.html.
mysqlhotcopy
O utilitário mysqlhotcopy é fornecido com a distribuição do MySQL. Ele executa um backup
bruto e é usado para apenas para os bancos de dados que usam o mecanismo de banco de
dados do MyISAM. O nome implica na realização de backup on-line do banco de dados, ou
seja, não há interrupção da disponibilidade do banco de dados. Entretanto, este não é o caso,
pois o banco de dados está bloqueado e não pode ser alterado durante o backup. Portanto,
ele é melhor descrito como backup "morno". Não há nenhum relatório ou rastreamento
fornecido com este script.
mysqldump

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 15
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

O utilitário mysqldump é fornecido com a distribuição do MySQL. Ele executa backups


lógicos e funciona com qualquer mecanismo de banco de dados. Ele pode automatizado com
o uso de crontab no Linux e UNIX e com o Agendador de Tarefas do Windows. Não há
nenhuma ferramenta de rastreamento ou de geração de relatórios para mysqldump.
Ferramentas de Terceiros
As ferramentas comerciais e comunitárias da Oracle são o foco principal desta lição.
Entretanto, você deve saber que há diversas ferramentas de terceiros comerciais e
comunitárias que podem ser incorporadas em suas estratégias de backup.

Oracle University and Error : You are not a Valid Partner use only

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 16
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

MySQL Enterprise Backup

Oracle University and Error : You are not a Valid Partner use only
Backup On-line
Os backups on-line são executados enquanto o banco de dados está em execução. Esse tipo
de backup não bloqueia operações de banco de dados normais e ele captura até mesmo
alterações que ocorrem enquanto o backup está sendo feito.
O mysqlbackup é a ferramenta de linha de comando fundamental do produto MySQL
Enterprise Backup. Para tabelas do InnoDB, essa ferramenta executa uma operação de
backup on-line.
Backup Morno
Nos mecanismos de armazenamento não InnoDB, o MySQL Enterprise Backup executa um
backup morno no qual o banco de dados continua a ser executado, mas essas tabelas não
podem ser modificadas enquanto estiver sendo feito o backup.
Backup de um Único Arquivo
Como o backup de um único arquivo pode ser transmitido ou canalizado para outro processo,
como um backup em fita ou um comando como scp, você pode usar essa técnica para
colocar o backup em outro dispositivo de armazenamento ou servidor sem overhead de
armazenamento significativo no servidor do banco de dados original.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 17
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

MySQL Enterprise Backup

Oracle University and Error : You are not a Valid Partner use only
MySQL Enterprise Backup (continuação)
Arquivos Brutos do mysqlbackup
Os arquivos de dados primários de backup relacionados ao InnoDB incluem:
• Arquivos ibdata* que representam o tablespace do sistema e possivelmente os dados
para algumas tabelas de usuário
• Quaisquer arquivos .ibd que contêm dados de tabelas de usuário criados com a
definição arquivo por tabela ativada
• Dados extraídos dos arquivos ib_logfile* (as informações de redo log que
representam alterações que ocorrem enquanto o backup está em execução) que são
armazenados em um novo arquivo de backup denominado ibbackup_logfile
Por default, o mysqlbackup faz backup de todos os arquivos no diretório de dados. Se a
opção --only-known-file-types for especificada, o backup incluirá apenas arquivos
adicionais com extensões reconhecidas do MySQL. Consulte http://dev.mysql.com/doc/mysql-
enterprise-backup/3.6/en/mysqlbackup.html para obter uma lista completa dessas extensões
reconhecidas.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 18
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

mysqlbackup

Oracle University and Error : You are not a Valid Partner use only
O mysqlbackup é um comando que pode ser usado para fazer um backup on-line de suas
tabelas do InnoDB e um snapshot das tabelas do MyISAM que correspondem à mesma
posição do binlog do backup das tabelas do InnoDB. Além da criação de backups, o
mysqlbackup pode preparar um backup para iniciar um servidor MySQL no backup e pode
copiar dados, índice e arquivos de log do diretório de backup novamente para os locais
originais.
Etapas Seguidas
1. É efetuado o ping do servidor MySQL para verificar se o mysqlbackup pode conectar-
se ao servidor MySQL.
2. O mysqlbackup é chamado e faz um backup on-line das tabelas do InnoDB.
- Essa fase não afeta o processamento normal do banco de dados.
3. Quando a execução do mysqlbackup estiver quase concluída, o comando SQL FLUSH
TABLES WITH READ LOCK será executado e, em seguida, as tabelas do MyISAM e
os arquivos .frm serão copiados para o diretório de backup.
-Se você não executar consultas SELECT longas ou de outro tipo no banco de
dados nesse momento, e suas tabelas do MyISAM forem pequenas, a fase
bloqueada durará apenas alguns segundos. Caso contrário, todo o banco de
dados, incluindo tabelas do tipo InnoDB, poderá ser bloqueado por algum tempo.
4. O mysqlbackup é executado completamente e DESBLOQUEIA as tabelas.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 19
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Restaurando um Backup com o mysqlbackup

Oracle University and Error : You are not a Valid Partner use only
O conteúdo de backup_dir, incluindo índices do InnoDB e do MyISAM, e os arquivos .frm
são restaurados para os locais originais (definido pelo arquivo my.cnf).
copy-back
A execução dessa opção requer que já tenha sido feito shutdown do servidor do banco de
dados. A opção copia os arquivos de dados, os logs e outros arquivos de backup do diretório
de backup de volta para os locais originais e executa neles o pós-processamento necessário.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 20
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Backups de um Único Arquivo do mysqlbackup

Oracle University and Error : You are not a Valid Partner use only
Para que o mysqlbackup crie um único arquivo de backup, todos os arquivos de dados
originais devem estar em um único diretório, e não distribuídos em caminhos diferentes. Isso
requer que você especifique o mesmo caminho para as opções de configuração datadir,
innodb_log_group_home_dir e innodb_data_home_dir.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 21
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Restaurando Backups de um Único Arquivo do mysqlbackup

Oracle University and Error : You are not a Valid Partner use only
• --src-entry: Identifica um arquivo ou diretório a ser extraído do backup de um único
arquivo
• --dst-entry: É usado com backups de um único arquivo para extrair um arquivo ou
diretório para um caminho especificado pelo usuário
Você pode encontrar uma lista completa de backups de um único arquivo e opções de
restauração em http://dev.mysql.com/doc/mysql-enterprise-backup/3.6/en/backup-single-file-
options.html.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 22
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Questionário

Backup e Recuperação de MySQL


Capítulo 18 - Página 23
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Backups Brutos do InnoDB

Oracle University and Error : You are not a Valid Partner use only
Backup completo do InnoDB
Uma operação de backup bruto que faz um backup completo do InnoDB (um backup de todas
as tabelas no tablespace do InnoDB) é baseada na criação de cópias exatas de todos os
arquivos que o InnoDB usa para gerenciar o tablespace.
Recuperação
Para recuperar um tablespace do InnoDB usando um backup bruto, pare o servidor, substitua
todos os componentes das cópias que foram feitas durante o procedimento de backup e
reinicie o servidor.
Observação: É necessário copiar os arquivos de tablespace como um grupo. Isso significa
que é preciso substituir todos os arquivos de tablespace existentes no servidor. Não é
possível adicionar um tablespace em outro usando um backup bruto.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 24
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Backups Brutos do MyISAM

Oracle University and Error : You are not a Valid Partner use only
Tabelas Bloqueadas
Para fazer um backup bruto de uma tabela do MyISAM, copie os arquivos .frm, .MYD e
.MYI que o MySQL usa para representar a tabela. Durante essa operação de cópia, outros
programas (incluindo o servidor) não devem estar usando a tabela. Para evitar problemas de
interação do servidor, pare o servidor durante a operação de cópia.
Observação: O bloqueio das tabelas em vez de fazer shutdown do servidor funciona em
sistemas Linux. No Windows, o comportamento do bloqueio de tabela impede a cópia de
arquivos de tabela para tabelas bloqueadas pelo servidor. Nesse caso, pare o servidor antes
de copiar arquivos de tabela.
Novo Arquivo de Log Binário
Para iniciar um novo arquivo de log binário, use FLUSH LOGS (antes de UNLOCK TABLES).
Como alternativa, SHOW MASTER STATUS retorna o nome e a posição do arquivo de log
binário atual. O novo arquivo de log binário contém todas as instruções que alteram os dados
após o backup (e todos os arquivos de log binário subsequentes).
Recuperação
Para recuperar uma tabela do MyISAM de um backup bruto, pare o servidor, copie os
arquivos de tabela de backup no diretório de banco de dados apropriado e reinicie o servidor.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 25
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

mysqlhotcopy

Oracle University and Error : You are not a Valid Partner use only
Tabelas Bloqueadas
O mysqlhotcopy estabelece conexão com o servidor MySQL local e copia os arquivos de
tabela. Quando finaliza a operação de cópia, ele desbloqueia as tabelas.
O Servidor MySQL Deve Estar em Execução
Execute mysqlhotcopy no host do servidor de modo que ele possa copiar arquivos de
tabela enquanto os bloqueios de tabela estiverem ativos. O servidor deve estar em execução
de modo que mysqlhotcopy possa estabelecer conexão com o servidor. A operação de
mysqlhotcopy é rápida porque ele copia os arquivos de tabela diretamente em vez de fazer
backup delas na rede.
Opções
--flush-log: Descarrega logs depois de todas as tabelas serem bloqueadas
--record_log_pos = db_name.tbl_name: Registra status master e slave no banco de
dados especificado db_name e na tabela tbl_name

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 26
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Portabilidade Binária Bruta

Oracle University and Error : You are not a Valid Partner use only
Portabilidade
A portabilidade binária é útil quando é usado um backup binário feito em uma máquina para
ser aplicado em uma segunda máquina que tenha uma arquitetura diferente. Por exemplo, o
uso de um backup binário é uma maneira de copiar bancos de dados de um servidor MySQL
para outro.
InnoDB
Para o InnoDB, com portabilidade binária, é possível copiar arquivos de tablespace
diretamente de um servidor MySQL em uma máquina para outro servidor em outra máquina,
e o segundo servidor acessa o tablespace. Por padrão, todas as tabelas do InnoDB
gerenciadas por um servidor são armazenadas juntas no tablespace.
MyISAM
Para o MyISAM, a portabilidade binária significa que os arquivos podem ser diretamente
copiados para uma tabela do MyISAM de um servidor MySQL para outro em uma máquina
diferente, e o segundo servidor acessa a tabela.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 27
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

mysqldump

Oracle University and Error : You are not a Valid Partner use only
Local de Armazenamento
Para arquivos de dump de formato SQL que contêm as instruções CREATE TABLE e INSERT
para criar novamente as tabelas, o servidor envia o conteúdo da tabela para mysqldump, que
grava os arquivos no host cliente.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 28
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Backup e Recuperação de MySQL


Consistência com o mysqldump

Capítulo 18 - Página 29
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Opções de formato de saída do mysqldump

Oracle University and Error : You are not a Valid Partner use only
Opções de Eliminação:
--add-drop-database adiciona uma instrução DROP DATABASE antes de cada instrução
CREATE DATABASE, enquanto --add-drop-table adiciona uma instrução DROP TABLE
antes de cada instrução CREATE TABLE.
Opções de Criação
--no-create-db suprime as instruções CREATE DATABASE, enquanto --no-create-
info suprime as instruções CREATE TABLE. --no-data cria as estruturas de banco de
dados e tabela, mas não faz o dump de dados. --no-tablespaces informa o servidor
MySQL para não gravar qualquer instrução CREATE LOGFILE GROUP ou CREATE
TABLESPACE na saída.
Componentes de Programação do MySQL
--routines faz dump de rotinas armazenadas (procedimentos e funções) de bancos de
dados descarregados, enquanto --triggers faz dump de triggers para cada tabela
descarregada.
Opção --opt
Essa é a abreviatura para as opções mais comuns na criação de um arquivo de backup
eficiente e completo.
Uma lista completa de todas as opções mysqldump pode ser encontrada no seguinte local:
http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 30
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Restaurando Backups do mysqldump

Oracle University and Error : You are not a Valid Partner use only
Recarregue Backups do mysqldump
O comando mysql para recarregar a saída mysqldump deverá nomear o banco de dados se
o próprio arquivo de dados não o fizer. Não será necessário nomear o banco de dados se um
arquivo de dump que for criado estiver sendo recarregado chamando o mysqldump com a
opção --database ou --all-databases. Nesse caso, o arquivo de dump contém
instruções USE db_name apropriadas.
Copie de um Banco de Dados para Outro
É possível usar a saída mysqldump para restaurar tabelas ou bancos de dados e copiá-las.
O mysql pode ler a partir de um pipe; portanto, o uso de mysqldump e mysql pode ser
combinado em um único comando que copia tabelas de um banco de dados para outro. A
técnica de pipe também pode ser usada para copiar bancos de dados ou tabelas na rede
para outro servidor:
shell> mysqldump orig_db table | mysql –h host copy_db
mysqlimport
Para recarregar a tabela, altere o local para o diretório de backup, processe o arquivo .sql
usando mysql e carregue o arquivo .txt usando mysqlimport:
shell> cd /backup_dir
shell> mysql database < table.sql
shell> mysqlimport database table.txt

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 31
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Se a opção --tab for combinada com opções de controle de formato, como --fields-
terminated-by e --fields-enclosed-by, as mesmas opções de controle de formato
deverão ser especificadas com mysqlimport de modo que ela saiba como interpretar os
arquivos de dados.

Oracle University and Error : You are not a Valid Partner use only

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 32
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Questionário

Backup e Recuperação de MySQL


Capítulo 18 - Página 33
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Fazendo Backup de Arquivos de Log e Status

Oracle University and Error : You are not a Valid Partner use only
Arquivos de Log Binário
Os logs binários armazenam atualizações que foram feitas após o backup.
Arquivo de Opções Usados pelo Servidor (arquivos my.cnf e my.ini)
Esses arquivos contêm informações de configuração que devem ser restauradas após uma
falha.
Arquivos de Replicação
Os servidores slaves de replicação criam um arquivo master.info que contém informações
necessárias para estabelecer conexão com o servidor master e um arquivo relay-
log.info que indica o andamento atual no processamento dos logs de retransmissão.
Arquivos de Dados do Slave de Replicação
Os slaves de replicação criam arquivos de dados para processamento de instruções LOAD
DATA INFILE. Esses arquivos estão localizados no diretório nomeado pela variável de
sistema slave_load_tmpdir, que pode ser definida iniciando-se o servidor com a opção -
-slave-load-tmpdir. Se slave_load_tmpdir não for definido, o valor da variável de
sistema tmpdir será aplicado. Os arquivos de dados para backup possuem nomes que
começam com SQL_LOAD-.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 34
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Replicação como um Auxílio para Backup

Oracle University and Error : You are not a Valid Partner use only
Se o servidor MySQL atuar como um master em uma configuração de replicação, um servidor
slave poderá ser usado para fazer backup em vez de fazer backup do master. Usando um
servidor slave para backups, o master não é interrompido, e o procedimento de backup não
usa um disco adicional nem impõe carga de processamento no master.
Parando o Slave
Pare o servidor que processa as atualizações recebidas do master parando o servidor ou
emitindo uma instrução STOP SLAVE SQL_THREAD. No segundo caso, você deve
descarregar as tabelas para forçar as alterações pendentes no disco.
Faça Backup dos Bancos de Dados do Slave
Faça um backup dos bancos de dados do slave. Os métodos permitidos dependem de o
servidor ser parado ou deixado em execução. Por exemplo, se o servidor for parado, qualquer
programa que precisar conectar-se a ele não poderá ser usado (como mysqldump ou
mysqlhotcopy).
Inicie o Servidor
Reinicie o servidor se ele estiver parado. Se o servidor foi deixado em execução, você poderá
o thread SQL emitindo uma instrução START SLAVE SQL_THREAD.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 35
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Comparando Métodos de Backup

Oracle University and Error : You are not a Valid Partner use only
Snapshots
Os snapshots não funcionam da mesma maneira para todos os mecanismos. Por exemplo,
as tabelas do InnoDB não requerem que FLUSH TABLES WITH READ LOCK inicie um
snapshot, mas as tabelas do MyISAM, sim.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 36
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Estratégia de Backup

Oracle University and Error : You are not a Valid Partner use only
O fluxograma no slide representa um processo na tomada de decisão que pode ser usado
para determinar uma estratégia de backup. As perguntas feitas nesse processo incluem:
• Nosso sistema pode ficar inativo por qualquer período (indisponibilidade)?
• Qual o volume de dados existente para backup?
• Quais mecanismos de armazenamento estão sendo usados para armazenar os dados
(InnoDB, MyISAM ou ambos)?

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 37
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Processando o Conteúdo do Log Binário

Oracle University and Error : You are not a Valid Partner use only
Após a restauração dos arquivos de backup binário ou do recarregamento dos arquivos de
backup de texto, as operações de recuperação deverão ser concluídas com o
reprocessamento das alterações de dados que estiverem registradas nos logs binários do
servidor. Para fazer isso, você deve determinar quais logs foram gravados após o backup. O
conteúdo desses logs binários precisam ser convertidos em instruções SQL de texto com o
programa mysqlbinlog para processar as instruções resultantes com o mysql.
Restaurando Binlogs Parciais
Se um determinado arquivo de log binário estiver no meio da gravação durante o backup,
você deverá extrair dele apenas a parte que foi gravada após o backup, além de todos os
arquivos de log gravados após esse evento. Além disso, se uma tabela ou banco de dados
for eliminada por acidente (ou se outra corrupção de dados ocorrer), você deverá restaurar o
backup usando a atividade incremental registrada nos logs binários. Para evitar nova
execução da tabela eliminada, você poderá executar tudo até o momento do comando
inválido, capturando o arquivo de log binário até esse ponto. Para tratar da extração parcial
do arquivo, o mysqlbinlog suporta opções que ativam o tempo a ser especificado ou a
posição do log na qual começar a extrair o conteúdo do log:
• Opção --start-datetime: Especifica data e hora de início da extração, em que o
argumento de opção é fornecido no formato DATA/HORA. Note que a granularidade de
--start-datetime é de apenas um segundo, portanto, pode não ser precisa o
bastante para especificar a posição exata na qual será iniciada.
• Opção --start-position: Pode ser usada para especificar a extração que começa
em uma determinada posição do log

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 38
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

• Também há opções --stop-datetime e --stop-position correspondentes para


especificar o ponto no qual interromper a extração do conteúdo do log.
Se você não tiver certeza sobre o timestamp ou posição em um arquivo de log que
corresponda ao ponto no qual o processamento deve começar, use o mysqlbinlog sem o
mysql para exibir o conteúdo do log para exame:
- shell> mysqlbinlog file_name | more

Oracle University and Error : You are not a Valid Partner use only

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Backup e Recuperação de MySQL


Capítulo 18 - Página 39
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Questionário

Backup e Recuperação de MySQL


Capítulo 18 - Página 40
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Resumo

Backup e Recuperação de MySQL


Capítulo 18 - Página 41
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Backup e Recuperação de MySQL


Capítulo 18 - Página 42
Visão Geral do Exercício 18-1: Questionário

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Backup e Recuperação de MySQL


Capítulo 18 - Página 43
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Visão Geral do Exercício 18-2: MySQL Enterprise Backup

Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Backup e Recuperação de MySQL


Capítulo 18 - Página 44
Visão Geral do Exercício 18-3: mysqldump

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Backup e Recuperação de MySQL


Capítulo 18 - Página 45
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Visão Geral do Exercício 18-4: Uma Recuperação Completa

Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Introdução à Replicação
Capítulo 19 - Página 1
Capítulo 19

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Introdução à Replicação

Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Introdução à Replicação
Introdução à Replicação

Capítulo 19 - Página 2
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Objetivos

Oracle University and Error : You are not a Valid Partner use only
Esta lição é uma breve introdução à replicação e à alta disponibilidade do MySQL. A Oracle University
oferece um curso avançado de três dias que propicia treinamento prático de alta disponibilidade
extensivo.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução à Replicação
Capítulo 19 - Página 3
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Replicação no MySQL

Oracle University and Error : You are not a Valid Partner use only
A replicação no MySQL funciona por meio de um mecanismo assíncrono, unidirecional, de
fornecimento de log―tornando-o um relacionamento master-slave. Ou seja, em cada
configuração de replicação, um servidor é designado como master para receber todas as
atualizações, e um ou mais servidores atuam como slaves desse master. Os slaves recebem
todas as atualizações que ocorrem com êxito no master e as executam, fornecendo dessa
forma aos slaves os mesmos dados que o master.
Limitações
Não há nenhum limite sobre quantos slaves um único master pode ter. Entretanto, cada slave
adicional usa uma quantidade pequena de recursos, de modo que é comum limitar o número
de slaves nas configurações de produção. O número real de slaves que um servidor master
gerencia é baseado em vários fatores: tamanho do esquema, número de gravações,
configuração dos servidores master e slave, CPU e uso de memória. É sugerido que você
limite o número de slaves por master em não mais do que 30.
Relay Slave
Um slave também pode atuar como um master para outro slave. Todas as alterações que
ocorrem no master superior são enviadas para os slaves imediatos, e esses slaves podem
retransmitir as alterações para seus slaves e assim por diante, até que o final da cadeia seja
alcançado. Isso permite que as atualizações sejam propagadas em diversos níveis de
replicação, permitindo topografias mais complexas. Lembre-se de que cada nível adicional
incluído adiciona mais atrasos de propagação no sistema; portanto, uma configuração mais
superficial geralmente é melhor do que uma configuração mais aprofundada. Cada servidor
slave pode ter apenas um servidor master; um slave não pode ser replicado a partir de vários

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução à Replicação
Capítulo 19 - Página 4
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

servidores master. Um slave que atua como um master para outros servidores é chamado
com frequência de "relay slave".
Interrupções na Rede
A replicação no MySQL resiste bem a uma interrupção na rede. Cada slave rastreia onde o
processamento terminou e o retoma automaticamente quando a conectividade da rede é
restaurada. Geralmente não é exigido nada especial para que esse processo ocorra após a
configuração da replicação.

Oracle University and Error : You are not a Valid Partner use only

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução à Replicação
Capítulo 19 - Página 5
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Tipos de Replicação

Oracle University and Error : You are not a Valid Partner use only
Replicação Assíncrona
O MySQL suporta nativamente a replicação assíncrona unilateral. Replicação assíncrona
significa que os dados são copiados de uma máquina para outra, com um atraso resultante
na cópia real das alterações dos dados. E o que é mais importante, isso significa que os seus
dados podem não ter sido copiados ou aplicados ao slave no ponto em que o commit da
transação é confirmado para a aplicação.
Replicação Síncrona
A replicação síncrona envolve uma ou mais máquina confirmando dados ao mesmo tempo,
geralmente por meio do que é conhecido como "commit de duas fases". Embora isso
proporcione consistência em vários sistemas, o procedimento apresenta penalidade de
desempenho de sistema de mensagens adicional. O MySQL com os mecanismos de
armazenamento do MyISAM não suporta nativamente a replicação síncrona. Entretanto,
ferramentas e tecnologias de terceiros podem fornecer replicação síncrona do sistema de
arquivos subjacente que armazena os dados do MySQL. Se você estiver usando o MySQL
Cluster, os dados serão replicados de forma síncrona entre os nós de dados no cluster (site)
e depois de forma assíncrona entre os clusters geograficamente separados.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução à Replicação
Capítulo 19 - Página 6
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Tipos de Replicação

Oracle University and Error : You are not a Valid Partner use only
Replicação Semissíncrona
Quando a replicação semissíncrona é ativada no master e há pelo menos um slave
semissíncrono configurado, um thread executa um commit de transação nos blocos masters
após o commit ser aplicado localmente e espera até que pelo menos um slave semissíncrono
retorne uma confirmação ao master de que ele recebeu todos os eventos da transação ou até
que ocorra um time-out. No caso de um time-out o master ainda confirma a transação, mas a
reverte para o modo assíncrono.
Se o seu master falhar durante o uso da replicação assíncrona, não será possível saber
imediatamente se as transações que master confirmou foram replicadas para o slave.
Consequentemente, o failover do master para o slave pode resultar em failover para um
servidor que não possui transações relativas a seu master. A replicação semissíncrona
minimiza o potencial de transações "órfãs" em seu servidor master porque todas as
transações confirmadas são recebidas pelo slave.
Os commits de replicação semissíncrona são mais lentos em razão da necessidade de
aguardar os slave. Essa é uma opção para uma integridade de dados maior. A duração da
lentidão é pelo menos o tempo de percurso de ida e volta do TCP/IP para enviar o commit ao
slave, ter o registro do slave em seu log de retransmissão e aguardar a confirmação do
recebimento pelo slave. Isso significa que a replicação semissíncrona funciona de maneira
mais efetiva para servidores fisicamente co-localizados, que se comunicam em redes rápidas.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução à Replicação
Capítulo 19 - Página 7
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Replicação no MySQL

Oracle University and Error : You are not a Valid Partner use only
Usos Comuns
• Soluções de escalabilidade: O motivo mais popular para optar pela implementação da
replicação é a distribuição da carga de trabalho para um ou mais servidores slaves no
esfoço de melhorar o desempenho.
• Alta disponibilidade: A replicação fornece failover para o servidor slave no caso de o
master ficar off-line devido a um erro ou falha ou para fins de manutenção.
• Analítica: Muitas consultas de business intelligence ou analíticas podem ter muitos
recursos e demorar tempo considerável para serem executadas. Para esse caso de
uso, os slaves podem ser criados com a finalidade de atender essas consultas
analíticas. Nessa configuração, o master não sofre nenhum impacto no desempenho
pela execução dessas consultas.
• Distribuição de dados em longa distância: Nas empresas em que há uma grande
distribuição geográfica de clientes ou de mão-de-obra, a replicação fornece um meio de
armazenar dados em locais geograficamente separados para facilitar o acesso aos
dados pelos clientes ou pela mão-de-obra.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução à Replicação
Capítulo 19 - Página 8
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Threads e Arquivos de Replicação

Oracle University and Error : You are not a Valid Partner use only
Há vários threads e arquivos envolvidos na replicação no MySQL. Os threads existem nos
servidores master e slave, apesar de os arquivos (exceto os logs binários) existirem apenas
no servidor slave. Isso significa que o slave é exclusivamente responsável por rastrear onde
vai o processamento dos logs binários no caso de uma interrupção.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução à Replicação
Capítulo 19 - Página 9
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Threads de Replicação

Oracle University and Error : You are not a Valid Partner use only
• IO_THREAD: Responsável pela conexão com o servidor master e pelo download dos
logs binários do master para um conjunto de arquivos local chamado "logs de
retransmisão". Os logs de retransmissão são cópias locais dos arquivos de log binário
remotos.
• SQL_THREAD: Responsável por executar todos os logs de retransmissão transferidos
por download
Controlando o Servidor Slave
Esses threads podem ser controlados separadamente no servidor slave. Por exemplo, é
possível suspender temporariamente o tráfego da rede desativando o IO_THREAD.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução à Replicação
Capítulo 19 - Página 10
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Arquivos de Replicação

Oracle University and Error : You are not a Valid Partner use only
Conjunto de logs de retransmissão: Normalmente, o servidor MySQL gerencia
automaticamente esses arquivos, removendo-os quando são repetidos, criando novos
quando necessários e assim por diante. Os logs de retransmissão são armazenados no
mesmo formato dos logs binários e podem ser exibidos com mysqlbinlog.
Arquivos de informações: Contém informações de replicação que persistiram aos reinícios.
Um slave procura esses arquivos depois de iniciar e retomar onde parou se estiverem
presentes.
• master.info: Pode ser renomeado ou movido com o uso da opção --master-info-
file. Esse arquivo contém todas as informações sobre o servidor master, incluindo
informações, como nome do host e nome do usuário com o qual se conectar.
• relay-log.info: Contém as informações sobre o local que o SQL_THREAD está
processando através dos arquivos de log de retransmissão. Esse arquivo pode ser
movido com a opção --relay-log-info-file.
Tome cuidado quando mover esse arquivo, porque o MySQL parará a replicação se ele
não puder localizar o arquivo.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução à Replicação
Capítulo 19 - Página 11
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Configurando a Replicação do MySQL

Oracle University and Error : You are not a Valid Partner use only
A configuração da replicação do MySQL é um processo relativamente simples. Há apenas
algumas etapas a serem executadas no master e no slave para que a replicação seja
executada pela primeira vez. Depois da configuração do primeiro slave, slaves adicionais
podem ser configurados sem afetar o processo master.
server-id
exclusivoPara cada membro da configuração de replicação, uma definição de server-id
exclusivo é necessária. Esse é apenas um valor de inteiro entre 1 e aproximadamente 4
bilhões. O server-id é usado para identificar cada evento gerado, de modo que o MySQL
saiba onde o evento é originado.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução à Replicação
Capítulo 19 - Página 12
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

CHANGE MASTER TO

Oracle University and Error : You are not a Valid Partner use only
Use esse comando para especificar como conectar-se ao master e de onde começar a
replicar (as coordenadas do log binário que são usadas de seu backup).

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução à Replicação
Capítulo 19 - Página 13
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Monitore uma Replicação no MySQL

Oracle University and Error : You are not a Valid Partner use only
Slave_*_Running: As colunas Slave_IO_Running e Slave_SQL_Running identificam se
IO_THREAD e SQL_THREAD estão atualmente em execução ou não. Se algum deles
informar NO, isso indicará que algo não está funcionando corretamente.
Seconds_Behind_Master: Esta coluna fornece uma estimativa de quanto tempo o slave está
atrasado. Esse tempo pode aumentar em razão de problemas na rede, de o slave estar
sobrecarregado etc. Se o slave não estiver conectado ao master, essa coluna terá o valor
NULL.
Master_Log: As colunas Master_Log_File e Read_Master_Log_Pos identificam a
posição de download atual que o IO_THREAD alcançou. Compare isso à saída da seguinte
execução de comando no master para obter uma ideia de o quanto o processo de download
está atrasado. Esse comando emite as coordenadas do binlog atual do master para compará-
lo com as informações de IO_THREAD:
mysql> SHOW MASTER STATUS;
Relay_Log: Se a saída das colunas Relay_Master_Log_File e Exec_Master_Log_Pos
estiverem muito atrás das posições IO_THREAD, isso indicará que está ocorrendo latência
na repetição dos logs no slave, e não no processo de download.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução à Replicação
Capítulo 19 - Página 14
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Estados de Thread I/O do Slave de Replicação

Oracle University and Error : You are not a Valid Partner use only
A lista no slide mostra os estados mais comuns exibidos na coluna State para um thread I/O
do servidor slave. Esses estados também aparecem na coluna Slave_IO_State exibidos
por SHOW SLAVE STATUS. Estes são os detalhes:
• Connecting to master: O thread está tentando se conectar ao master.
• Waiting to reconnect after a failed binlog dump request: Se a
solicitação de dump do log binário tiver falhado (devido à desconexão), o thread entrará
nesse estado enquanto estiver inativo e, em seguida, tentará se reconectar
periodicamente. O intervalo entre as novas tentativas pode ser especificado com o uso
da opção --master-connect-retry.
• Reconnecting after a failed binlog dump request: O thread está tentando
se conectar novamente ao master.
• Waiting for master to send event: O thread se conectou ao master e está
aguardando a chegada de eventos de log binário. Isso poderá durar um longo período
se o master estiver ocioso. Se a espera durar segundos para slave_read_timeout,
ocorrerá um time-out. Nesse ponto, o thread considera a conexão como interrompida e
faz uma nova tentativa de conexão.
• Queueing master event to the relay log: O thread leu um evento e está
copiando-o para o log de retransmissão de modo que o thread SQL possa processá-lo.
• Waiting to reconnect after a failed master event read: Ocorreu um
erro durante a leitura (em razão da desconexão). O thread fica inativo durante os
segundos de master-connect-retry antes de uma nova tentativa de reconexão.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução à Replicação
Capítulo 19 - Página 15
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

• Reconnecting after a failed master event read: O thread está tentando se


conectar novamente ao master. Quando a conexão é estabelecida novamente, o estado
muda para Waiting for master to send event.
• Waiting for the slave SQL thread to free enough relay log space:
Esse estado mostra que um valor para relay_log_space_limit diferente de zero
está sendo usado, e os logs de retransmissão cresceram o suficiente de modo que o
seu tamanho combinado excede esse valor. O thread I/O fica aguardando até que o
thread SQL libere espaço suficiente processando o conteúdo do log de retransmissão
para que possa deletar alguns arquivos de log de retransmissão.

Oracle University and Error : You are not a Valid Partner use only
• Waiting for slave mutex on exit: Esse é um estado que ocorre brevemente
quando o thread está parando.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução à Replicação
Capítulo 19 - Página 16
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Estados de Thread SQL do Slave de Replicação

Oracle University and Error : You are not a Valid Partner use only
A lista no slide mostra os estados mais comuns exibidos na coluna State para um thread
SQL do servidor slave. Estes são os detalhes:
• Reading event from the relay log: O thread leu um evento no log de
retransmissão para que o evento possa ser processado.
• Waiting for the next event in relay log: Esse é o estado inicial antes de
Reading event from the relay log.
• Making temp file: O thread está executando a instrução LOAD DATA INFILE e
está criando um arquivo temporário contendo os dados do qual o slave lerá as linhas.
• Slave has read all relay log; waiting for the slave I/O thread to
update it: O thread processou todos os eventos nos arquivos do log de
retransmissão e agora está aguardando que o thread I/O grave novos eventos para o
log de retransmissão.
• Waiting for slave mutex on exit: Esse é um estado muito breve que ocorre
quando o thread está parando.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução à Replicação
Capítulo 19 - Página 17
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

MySQL

Introdução à Replicação
Capítulo 19 - Página 18
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Diagnosticando e Solucionando Problemas de Replicação no

Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Diagnosticando e Solucionando Problemas de Replicação no


MySQL

Oracle University and Error : You are not a Valid Partner use only
SHOW PROCESSLIST no Slave
Estados do thread I/O durante conexão com o master:
• Verificar privilégios do usuário que está sendo usado para replicação no master.
• Verificar se o nome do host e a porta estão corretos para o master.
• Verificar se a rede não foi desativada no master ou no slave (opção skip-networking).
• Tentar efetuar ping do master para verificar se o slave pode alcançar o master.
Para obter mais informações sobre as limitações de replicação conhecidas e outros
problemas que podem afetar a replicação, consulte o MySQL Reference Manual:
http://dev.mysql.com/doc/refman/5.5/en/replication-features.html.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução à Replicação
Capítulo 19 - Página 19
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Resumo

Introdução à Replicação
Capítulo 19 - Página 20
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Introdução à Replicação
Capítulo 19 - Página 21
Visão Geral do Exercício 19-1: Questionário

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Introdução à Replicação
Capítulo 19 - Página 22
Visão Geral do Exercício 19-2: Log Binário

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Introdução à Replicação
Capítulo 19 - Página 23
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Visão Geral do Exercício 19-3: Replicação de Configuração

Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Introdução à Replicação
Capítulo 19 - Página 24
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Visão Geral do Exercício 19-4: Fazendo Backup de um Slave

Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Introdução ao Ajuste do Desempenho


Capítulo 20 - Página 1
Capítulo 20
Desempenho

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Introdução ao Ajuste do

Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Introdução ao Ajuste do Desempenho


Introdução ao Ajuste do Desempenho

Capítulo 20 - Página 2
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Objetivos

Oracle University and Error : You are not a Valid Partner use only
Esta lição é uma introdução breve ao ajuste de desempenho do MySQL. A Oracle University oferece
um curso avançado de quatro dias que fornece treinamento prático extensivo em ajuste de
desempenho.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução ao Ajuste do Desempenho


Capítulo 20 - Página 3
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Otimizações Gerais de Tabela

Oracle University and Error : You are not a Valid Partner use only
Normalizando os Dados
• Há muitos níveis de normalização com os quais é possível trabalhar durante a
determinação da melhor maneira de armazenar os dados. Entretanto, a normalização
em excesso é tão inadequada quanto a normalização insuficiente dos dados. É
importante lembrar que a finalidade definitiva da normalização é fornecer os dados
precisos ao usuário final o mais rápido possível.
• Se você estiver normalizando visando apenas a normalização, é mais provável que irá
promover a normalização em excesso do banco de dados.
Tipos e Tamanho de Dados
• A escolha do tipo de dados correto pode ser considerada uma tarefa secundária.
Entretanto, um dos maiores desafios no desempenho do banco de dados é o
armazenamento dos dados. Pequenos volumes de dados extras que são armazenados
em uma coluna individual porque um tipo ou tamanho de dados inadequado pode se
tornar um grande problema quando os dados aumentam. O resultado é um aumento
exponencial das necessidades do sistema de arquivos e ― mais importante ― na
memória que é usada.
• Alguns tipos de coluna (como os campos BLOB e TEXT) podem aproveitar a
compactação para melhorar o desempenho. Campos como esses podem ser
compactados quando armazenados e descompactados quando necessário. É possível
usar INSERT ... COMPRESS(field_name) ... e SELECT ...
UNCOMPRESS(column_name) ... para que isso seja feito.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução ao Ajuste do Desempenho


Capítulo 20 - Página 4
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Índices Eficientes
• A indexação, como a normalização, poderá produzir grandes ganhos no desempenho
se o número e os tipos de índices forem criados corretamente. Não usar um índice em
uma tabela, ou ser for feita indexação insuficiente, pode resultar em varreduras de
tabela completas, enquanto a indexação em excesso pode resultar na necessidade de
interação de uma consulta com mais índices do que o realmente necessário para
produzir resultados. Esses dois extremos deverão ser evitados se você quiser ver uma
melhora no desempenho indexando as tabelas.

Oracle University and Error : You are not a Valid Partner use only

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução ao Ajuste do Desempenho


Capítulo 20 - Página 5
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

EXPLAIN

Oracle University and Error : You are not a Valid Partner use only
Instruções DML (Data Manipulation Language)I
O comando EXPLAIN pode ser usado com INSERT, UPDATE e DELETE e também com as
instruções SELECT.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução ao Ajuste do Desempenho


Capítulo 20 - Página 6
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

PROCEDURE ANALYSE

Oracle University and Error : You are not a Valid Partner use only
Esse procedimento tem uma tendência de oferecer ENUMs com frequência como uma
solução. Entretanto, há momentos em que esse tipo de coluna não deve ser usado.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução ao Ajuste do Desempenho


Capítulo 20 - Página 7
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Variáveis de Status Superior

Oracle University and Error : You are not a Valid Partner use only
Created_tmp_disk_tables: Para as tabelas temporárias criadas pelo servidor durante a
execução das instruções. Se esse número for elevado, o servidor terá que criar tabelas
temporárias no disco, e não na memória, o que resultaria em execuções de consulta mais
lentas.
Handler_read_first: Se esse número for elevado, o servidor terá que executar
varreduras de índice completas para concluir as solicitações de consulta.
Innodb_buffer_pool_wait_free: Aguarde até que a página limpa no pool de buffers do
InnoDB esteja disponível ou descarregada antes da conclusão da solicitação da consulta. Se
esse número for elevado, o tamanho do pool de buffers do InnoDB não será dimensionado
corretamente, e o desempenho da consulta será afetado.
Key_reads: Se for elevado, o cache de chave não será dimensionado corretamente, e o
desempenho da consulta será afetado.
Max_used_connections: Essa variável fornece informações valiosas para determinar o
número de conexões que o seu servidor deve suportar.
Open_tables: Quando comparada com a variável de sistema do servidor table_cache,
essa variável fornece informações valiosas sobre o volume de memória que precisa ser
reservado para o cache de tabela.
Se a variável de status Open_tables for baixa, você poderá reduzir o tamanho da variável
de sistema table_cache sem um efeito no desempenho. Se a variável de status
Open_tables for elevada e estiver próxima ao valor da definição da variável de sistema do
servidor table_cache, aumentar a quantidade de memória designada ao cache de tabela
poderá melhorar os tempos de resposta de consulta.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução ao Ajuste do Desempenho


Capítulo 20 - Página 8
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Variáveis de Status Superior

Oracle University and Error : You are not a Valid Partner use only
Select_full_join: Se esse valor não for 0, você deverá verificar cuidadosamente os
índices de suas tabelas.
Slow_queries: Se a variável de status Slow_queries não for 0, será vantajoso verificar o
log de consulta lenta e melhorar as consultas que foram capturadas.
Threads_connected: A captura desses valores continuamente pode fornecer informações
valiosas sobre quando o seu servidor está mais ativo. Isso pode ser usado para determinar o
melhor momento para executar a manutenção no servidor. Também pode ser usado como
justificativa para alocar mais recursos para o servidor.
Uptime: Esse valor pode fornecer informações valiosas sobre o funcionamento do servidor,
como com que frequência o servidor precisa ser reiniciado e outros dados de análise.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução ao Ajuste do Desempenho


Capítulo 20 - Página 9
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Principais Variáveis de Sistema do Servidor

Oracle University and Error : You are not a Valid Partner use only
innodb_buffer_pool_size: O tamanho do pool de buffers do InnoDB é importante para o
desempenho de consultas em seu servidor. Os dados e os índices são armazenados no
cache nesse pool de buffers. Se você planeja usar apenas tabelas do InnoDB em um servidor
de banco de dados dedicado, a definição dessa variável para um valor de 70% a 80% é
garantida.
innodb_flush_log_at_trx_commit: Há três definições possíveis para essa variável: 0, 1
e 2. Independentemente do valor, o buffer do log é gravado no no arquivo de log uma vez por
segundo.
innodb_log_buffer_size: Para a maioria das aplicações, o valor default de 8 MB é
aceitável. Para aplicações que usam um grande número de BLOBs ou que apresentam uma
grande oscilação na atividade de atualização, tornar o buffer de log maior economiza E/S de
disco.
innodb_log_file_size: Para cargas de trabalho de gravações intensivas em grandes
conjuntos de dados, a definição dessa variável para um valor entre 64 MB e 512 MB
(dependendo do tamanho do servidor) pode produzir desempenho melhorado. Entretanto,
leva mais tempo para recuperar dados em razão de uma falha quando o tamanho dessa
variável é maior.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução ao Ajuste do Desempenho


Capítulo 20 - Página 10
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Principais Variáveis de Sistema do Servidor

Oracle University and Error : You are not a Valid Partner use only
key_buffer_size: Os blocos de índice para tabelas do MyISAM são armazenados em
buffer e compartilhados por todos os threads. Nas aplicações apenas do MyISAM, é
recomendada a definição dessa variável para um valor de 30% a 40% da memória do
sistema.
query_cache_size: Se a sua aplicação for usada principalmente para ler dados
consistentes e você não estiver usando caches no nível da aplicação, a definição dessa
variável de sistema do servidor poderá melhorar o desempenho de sua aplicação. A definição
dessa variável para um valor de 32 MB a 512 MB com base nas necessidades do seu servidor
fornece uma boa linha de base. Monitore sua relação de hits do cache do servidor para
determinar a eficiência dessa variável.
table_open_cache: Se você definir o tamanho de modo que seja possível manter a
maioria das tabelas abertas (80% a 90%) juntamente com a maioria do número máximo de
conexões (80% a 90%) que seu sistema permite, o servidor não terá que passar pelo disco
para abrir as tabelas com tanta frequência. A avaliação do tamanho da variável de status
Open_tables permite determinar se o tamanho dessa variável de sistema do servidor é
definido corretamente.
thread_cache_size: A criação e a destruição de novos threads é uma operação cara e
ocorre sempre que um cliente se conecta ou desconecta do servidor. A definição dessa
variável para um valor de 8 a 16 fornece uma boa linha de base. A avaliação do número de
threads criados (Threads_created) fornece os dados para determinar se é necessário
defini-lo mais alto ou mais baixo com base no uso do servidor.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Introdução ao Ajuste do Desempenho


Capítulo 20 - Página 11
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Resumo

Introdução ao Ajuste do Desempenho


Capítulo 20 - Página 12
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Introdução ao Ajuste do Desempenho


Capítulo 20 - Página 13
Visão Geral do Exercício 20-1: Questionário

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Introdução ao Ajuste do Desempenho


Capítulo 20 - Página 14
Visão Geral do Exercício 20-2: EXPLAIN

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Introdução ao Ajuste do Desempenho


Capítulo 20 - Página 15
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Visão Geral do Exercício 20-3: PROCEDURE ANALYSE

Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Conclusão
Capítulo 21 - Página 1
Capítulo 21
Conclusão

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Conclusão
Conclusão

Capítulo 21 - Página 2
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Conclusão
Objetivos do Curso

Capítulo 21 - Página 3
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Conclusão
Objetivos do Curso

Capítulo 21 - Página 4
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Conclusão
Trajetória de Currículo do MySQL

Capítulo 21 - Página 5
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Conclusão
Recursos do MySQL

Capítulo 21 - Página 6
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Conclusão
Precisamos de sua Avaliação!

Capítulo 21 - Página 7
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Conclusão
Obrigado

Capítulo 21 - Página 8
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Conclusão
Sessão de Perguntas e Respostas

Capítulo 21 - Página 9
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Conclusão
Capítulo 21 - Página 10
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Oracle University and Error : You are not a Valid Partner use only
Apêndice: Otimização de
Consulta Usando as Colunas
de Saída EXPLAIN
Capítulo 22

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Otimização de Consulta Usando as Colunas de Saída EXPLAIN

Capítulo 22 - Página 1
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Capítulo 22 - Página 2
Apêndice: Otimização de Consulta Usando as Colunas de Saída EXPLAIN
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

A Instrução EXPLAIN
A instrução EXPLAIN produz uma linha de saída para cada tabela nomeada em cada instrução
SELECT da instrução analisada. (Uma instrução pode ter mais de uma instrução SELECT se ela
usar subconsultas ou UNION.) Para usar EXPLAIN de forma produtiva, é importante saber o
significado das colunas em cada linha de saída:

• id: Indica qual SELECT na instrução analisada a que a linha de saída EXPLAIN se

Oracle University and Error : You are not a Valid Partner use only
refere

• select_type: Categoriza SELECT com referência por linha de saída. Essa coluna
pode ter qualquer um dos valores representados na tabela a seguir. A palavra
DEPENDENT indica que uma subconsulta está correlacionada com a consulta de saída.
Valor select_type Significado
SIMPLE Instrução SELECT simples (sem subconsultas ou uniões)
PRIMARY A instrução SELECT externa
UNION Segunda SELECT (ou posterior) na união
DEPENDENT UNION Segunda SELECT (ou posterior) na união
UNION RESULT Segunda SELECT (ou posterior) na união
SUBQUERY Primeira SELECT em uma subconsulta
DEPENDENT SUBQUERY Primeira SELECT em uma subconsulta que depende da
subconsulta externa
DERIVED Subconsulta na cláusula WHERE

• table: É o nome da tabela na qual se aplicam as informações na linha. A ordem das


tabelas indica a ordem em que o MySQL lê as tabelas para processar a consulta. Essa não
é necessariamente a ordem em que você as nomeia na cláusula FROM, pois o otimizador
tenta determinar qual ordem resulta no processamento mais eficiente.

• type: Indica o tipo de join. O valor é uma medida do nível de eficiência da varredura do
MySQL na tabela. Os valores de tipo possível serão descritos posteriormente nesta seção.

• possible_keys: Indica quais dos índices de tabela o MySQL considera candidatos


para identificar linhas que atendam à consulta. Esse valor pode ser uma lista de um ou
mais nomes de índice ou NULL se não houver candidatos. A palavra PRIMARY indica
que o MySQL considera a chave primária da tabela uma candidata.

• key: Indica a decisão do otimizador sobre qual dos índices candidatos listados em
possible_keys gera a execução de consulta mais eficiente. Se o valor da chave for
NULL, isso quer dizer que nenhum índice foi escolhido. Isso pode acontecer porque não
havia candidatos ou porque o otimizador acredita que é tão rápido fazer a varredura das
linhas da tabela como usar qualquer um dos índices possíveis. A varredura de uma tabela
poderá ser escolhida em uma varredura de índice se a tabela for pequena ou porque o
índice gera uma porcentagem muito elevada de linhas na tabela que será muito usada.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Otimização de Consulta Usando as Colunas de Saída EXPLAIN

Capítulo 22 - Página 3
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

• key_len: Indica o comprimento da chave que o MySQL usou. Nesse valor, você pode
derivar quantas colunas do índice serão usadas. Por exemplo, se você tiver um índice que
consista em três colunas INT, cada linha de índice conterá três valores de 4 bytes. Se
key_len for 12, isso indicará que o otimizador está usando as três colunas do índice
durante o processamento da consulta. Se key_len for 4 ou 8, ele usará a somente a
primeira ou duas colunas (ou seja, usará o prefixo à esquerda do índice).

Se você tiver valores de colunas de string parciais indexados, leve isso em consideração
ao avaliar o valor key_len. Suponha que você tenha um índice composto em duas

Oracle University and Error : You are not a Valid Partner use only
colunas CHAR(8) que indexe apenas os primeiros 4 bytes de cada coluna. Nesse caso,
um valor key_len de 8 significa que as duas colunas do índice seriam usadas, e não
apenas a primeira coluna.

• ref: Indica qual coluna ou colunas indexadas são usadas para escolher linhas na tabela.
const significa que os valores de chave no índice são comparados a uma expressão
constante, como em Code='FRA'. NULL indica que nem uma constante nem outra
coluna está sendo usada, indicando a seleção por uma expressão ou faixa de valores.
Também pode indicar que a coluna não contém o valor especificado pela expressão
constante. Se nem NULL nem const for exibido, será mostrada uma combinação
table_name.column_name, indicando que o otimizador está verificando
column_name nas linhas retornadas de table_name para identificar as linhas da
tabela atual.

• rows: É a estimativa do otimizador de quantas linhas da tabela é preciso examinar. O


valor é aproximado porque, em geral, o MySQL não consegue saber o valor exato de
linhas sem realizar a consulta. Para uma consulta de várias tabelas, o produto dos valores
das linhas é uma estimativa do número total da combinação de linhas que precisam ser
lidas. Esse produto fornece uma medida aproximada do desempenho da consulta. Valores
menores são melhores.

• Extra: Fornece outras informações sobre a join. Os valores possíveis serão descritos
posteriormente nesta seção.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Otimização de Consulta Usando as Colunas de Saída EXPLAIN

Capítulo 22 - Página 4
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Colunas de Saída EXPLAIN para Joins


O valor da coluna type da saída EXPLAIN indica o tipo de join, mas as joins podem ser
executadas com graus de eficiência variáveis. O valor type fornece uma medida dessa
eficiência, indicando a base na qual as linhas são selecionadas em cada tabela. A lista a seguir
mostra os possíveis valores, do melhor tipo ao pior:

• system: A tabela contém exatamente uma linha.

Oracle University and Error : You are not a Valid Partner use only
• const: A tabela contém exatamente uma linha correspondente. O valor do tipo é similar
a system, exceto pela possibilidade de a tabela ter outras linhas não correspondentes. A
saída EXPLAIN da consulta com WHERE Code='FRA' é um exemplo disso:
mysql> EXPLAIN SELECT * FROM Country WHERE Code = 'FRA'\G
************************* 1. row *************************
id: 1
select_type: SIMPLE
table: Country
type: const
possible_keys: PRIMARY
key: PRIMARY
key_len: 3
ref: const
rows: 1
Extra:

A consulta tem um valor de tipo const porque só é preciso ler uma linha dentre todas.
Se a tabela contivesse apenas a linha para France, não haveria linhas não
correspondentes, e o tipo de valor seria system, e não const.

Para system e const, como somente uma linha corresponde, todas as colunas
necessárias podem ser lidas uma vez e tratadas como constantes durante o processamento
do restante da consulta.

• eq_ref: Exatamente uma linha é lida na tabela para cada combinação de linhas das
tabelas listadas anteriormente por EXPLAIN. Isso é comum para joins em que o MySQL
pode usar uma chave primária para identificar linhas de tabela.

• ref: Várias linhas podem ser lidas na tabela para cada combinação de linhas das tabelas
listadas anteriormente por EXPLAIN. Isso é similar a eq_ref, mas pode ocorrer quando
um índice não exclusivo é usado para identificar linhas de tabela ou quando apenas um
prefixo à esquerda de um índice é usado. Por exemplo, a tabela CountryLanguage
tem uma chave primária nas colunas CountryCode e Language. Se você pesquisar
usando apenas um valor CountryCode, o MySQL poderá usar essa coluna com um
prefixo à esquerda, mas poderá haver várias linhas para um país se diversos idiomas
forem falados nele.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Otimização de Consulta Usando as Colunas de Saída EXPLAIN

Capítulo 22 - Página 5
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

• ref_or_null: Similar a ref, mas o MySQL também procura linhas que contêm NULL.

• index_merge: O MySQL usa um algoritmo de intercalação de índice.

• unique_subquery: Similar a ref, mas usado para subconsultas IN que selecionam


na coluna de chave primária de uma única tabela.

• index_subquery: Similar a unique_subquery, mas usado para subconsultas IN


que selecionam na coluna indexada de uma única tabela.

Oracle University and Error : You are not a Valid Partner use only
• range: O índice é usado para selecionar linhas incluídas em uma determinada faixa de
valores de índice. Isso é comum para comparações de desigualdade, como id < 10.

• index: O MySQL executa uma varredura completa, mas varre o índice, e não as linhas
de dados. Uma varredura de índice é preferencial: O índice é classificado e as linhas do
índice geralmente são mais curtas do que as linhas de dados; portanto, as linhas do índice
podem ser lidas na ordem e a maioria delas pode ser lida de uma só vez.

• ALL: Uma varredura de tabela completa de todas as linhas de dados. Geralmente, isso
indica que nenhuma otimização é feita e representa o pior caso. É particularmente
inadequado quando as tabelas listadas por último na saída EXPLAIN possuem um tipo de
join ALL, porque isso indica uma varredura de tabela para cada combinação de linhas
selecionadas nas tabelas processadas inicialmente na join.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Otimização de Consulta Usando as Colunas de Saída EXPLAIN

Capítulo 22 - Página 6
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Colunas da Saída EXPLAIN para Processamento de Tabela


A coluna Extra da saída EXPLAIN fornece informações adicionais sobre como uma tabela é
processada. Alguns valores indicam que a consulta é eficiente:

• Usando index: O MySQL pode otimizar a consulta lendo valores de um índice sem a
necessidade de ler as linhas de dados correspondentes. Essa otimização é possível quando
a consulta seleciona apenas colunas que estão no índice.

Oracle University and Error : You are not a Valid Partner use only
• Usando where: O MySQL usa uma cláusula WHERE para identificar linhas que
satisfazem a consulta. Sem uma cláusula WHERE, você obterá todas as linhas da tabela.

• Distinct: O MySQL lê uma única linha na tabela para cada combinação de linhas das
tabelas listadas anteriormente na saída EXPLAIN.

• Not exists: O MySQL pode executar uma otimização de "linhas ausentes" LEFT
JOIN que elimina rapidamente as linhas consideradas.

Por outro lado, alguns valores de Extra indicam que a consulta não é eficiente:

• Usando filesort: As linhas que atendem a consulta devem ser classificadas, o que
adiciona uma etapa de processamento extra.

• Usando temporary: Uma tabela temporária deve ser criada para processar a consulta.

• Range checked for each record: O MySQL não pode determinar


antecipadamente qual índice da tabela usar. Para cada combinação de linhas selecionada
nas tabelas anteriores, ele verifica os índices na tabela para identificar qual é o melhor.
Isso não é o ideal, mas é melhor do que não usar nenhum índice.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Otimização de Consulta Usando as Colunas de Saída EXPLAIN

Capítulo 22 - Página 7
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Colunas de Saída EXPLAIN para Joins


Para usar EXPLAIN na análise de consulta, verifique indicações de como a consulta pode ser
melhorada. Modifique a consulta e depois execute EXPLAIN novamente para ver como sua saída
é alterada. As alterações podem envolver a reescrita da consulta ou a modificação da estrutura de
suas tabelas.

As seguintes técnicas de reescrita de consulta podem ser úteis:

Oracle University and Error : You are not a Valid Partner use only
• Se o valor da chave for NULL, mesmo quando houver índices disponíveis, você poderá
tentar adicionar uma opção USE INDEX como uma sugestão para o otimizador de que o
índice é relevante para a consulta. Para forçar o MySQL a usar o índice, use FORCE
INDEX. Para informar ao MySQL que ignore um índice que ele escolheu e selecionar
outro no lugar, use IGNORE INDEX. Cada uma dessas opções é usada na cláusula
FROM, após o nome da tabela contendo o índice que você deseja controlar. A opção é
seguida por parênteses que contêm uma lista separada por vírgula de um ou mais nomes
de índice. PRIMARY significa a chave primária da tabela.
mysql> SELECT Name FROM CountryList USE INDEX(PRIMARY)
-> WHERE Code > 'M';
mysql> SELECT Name FROM CountryList IGNORE INDEX(Population)
-> WHERE Code < 'B' AND Population > 50000000;

A palavra-chave KEY pode ser usada em vez de INDEX em todas as três opções.

• Para forçar o MySQL a unir tabelas em uma ordem em particular, inicie a consulta com
SELECT STRAIGHT_JOIN, em vez de SELECT e, em seguida, liste as tabelas na
ordem desejada na cláusula FROM.

• Às vezes, uma tabela em uma consulta tem um índice disponível, mas a consulta é escrita
de maneira que impeça que o índice seja usado. Se possível, reescreva a consulta de
forma equivalente que permita o uso do índice.

Alterar a estrutura de suas tabelas é outra maneira de fornecer ao otimizador informações


melhores sobre em que basear as decisões:

• Se o valor possible_keys for NULL na saída de EXPLAIN, isso significa que o


MySQL não encontra o índice aplicável para processar a consulta. Verifique se pode ser
adicionado às colunas um índice que identifique quais registros recuperar. Por exemplo,
se uma join for executada correspondendo uma coluna em uma tabela com uma coluna
em outra, mas nenhuma das colunas for indexada, tente indexá-las.

• Mantenha as estatísticas do índice atualizadas para ajudar o MySQL escolher os índices


ideais. Se a tabela for do InnoDB ou do MyISAM, você poderá atualizar as estatísticas
com a instrução ANALYZE TABLE. Quando o conteúdo de uma tabela é alterado, as
estatísticas ficam desatualizadas e se tornam menos úteis ao otimizador para tomar boas
decisões sobre as estratégias de execução da consulta. Você deve executar ANALYZE
TABLE mais vezes para as tabelas que são alteradas com frequência do que para aquelas
que raramente são atualizadas.
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Otimização de Consulta Usando as Colunas de Saída EXPLAIN

Capítulo 22 - Página 8
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

• Tome cuidado ao usar EXPLAIN para analisar uma instrução que inclua uma subconsulta
na cláusula FROM se a subconsulta for lenta. Para esse tipo de subconsulta, o MySQL
deve executá-la para determinar o que ela retorna de modo que o otimizador possa
formular um plano de execução para a consulta externa.

Oracle University and Error : You are not a Valid Partner use only

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Otimização de Consulta Usando as Colunas de Saída EXPLAIN

Capítulo 22 - Página 9
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Capítulo 22 - Página 10
Apêndice: Otimização de Consulta Usando as Colunas de Saída EXPLAIN
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Oracle University and Error : You are not a Valid Partner use only
Apêndice: Exercícios de
Scripts de Soluções
Capítulo 23

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Exercícios de Scripts de Soluções


Capítulo 23 - Página 1
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Apêndice: Exercícios de Scripts de Soluções


Capítulo 23 - Página 2
Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Oracle University and Error : You are not a Valid Partner use only
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Lição 1: Introdução
Nenhum script para esta lição

Lição 2: Arquitetura do MySQL

Oracle University and Error : You are not a Valid Partner use only
Nenhum script para esta lição

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Exercícios de Scripts de Soluções


Capítulo 23 - Página 3
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Lição 3: Administração de Sistemas


Exercício 3-1: Instalar o Servidor MySQL
### Etapa 1
su –
Password: oracle
cd /stage

Oracle University and Error : You are not a Valid Partner use only
rpm -i MySQL-server-5.5.8-1.rhel5.i386.rpm
rpm -i MySQL-client-5.5.8-1.rhel5.i386.rpm
rpm -i MySQL-devel-5.5.8-1.rhel5.i386.rpm
rpm -i MySQL-shared-5.5.8-1.rhel5.i386.rpm
rpm -i MySQL-test-5.5.8-1.rhel5.i386.rpm
### Etapa 2
/etc/init.d/mysql start
### Etapa 3
/usr/bin/mysql_secure_installation

Exercício 3-2: Diretório de Dados do MySQL


### Etapa 1
mysql -uroot –poracle
CREATE DATABASE world_innodb;
USE world_innodb
SOURCE /labs/world_innodb.sql
### Etapa 2
SHOW DATABASES;
### Etapa 3
SHOW VARIABLES LIKE 'datadir'\G
### Etapa 4
cd /var/lib/mysql;ls
### Etapa 5
su –
Password: oracle
cd /var/lib/mysql/mysql; ls
### Etapa 6
cd world_innodb; ls
### Etapa 7
USE world_innodb
CREATE TABLE CityMyISAM LIKE City;
SHOW TABLES;
ALTER TABLE CityMyISAM ENGINE=MyISAM;

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Exercícios de Scripts de Soluções


Capítulo 23 - Página 4
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

INSERT INTO CityMyISAM SELECT * FROM City;


EXIT
### Etapa 8
EXIT
### Etapa 9
cd /var/lib/mysql/world_innodb; ls

Exercício 3-3: Iniciar e Parar o Servidor MySQL

Oracle University and Error : You are not a Valid Partner use only
### Etapa 1
su –
Password: oracle
### Etapa 2
/etc/init.d/mysql status
### Etapa 3
/etc/init.d/mysql stop
### Etapa 4
/etc/init.d/mysql status
### Etapa 5
/etc/init.d/mysql start
### Etapa 6
/etc/init.d/mysql status

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Exercícios de Scripts de Soluções


Capítulo 23 - Página 5
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Lição 4: Configuração do Servidor


Exercício 4-1: Editar e Criar um Arquivo de Configuração
### Etapa 1
su –
Password: oracle
cd /etc

Oracle University and Error : You are not a Valid Partner use only
cp /usr/share/mysql/my-small.cnf my.cnf
gedit my.cnf
### Etapa 2-4
# Nenhum script para esta etapa.
### Etapa 5
/etc/init.d/mysql stop
/etc/init.d/mysql start
### Etapa 6
ls /var/lib/mysql
### Etapa 7
cd ~/
gedit my_opts.txt
### Etapa 8
mysql --defaults-extra-file=~/my_opts.txt
### Etapa 9
STATUS
USE world_innodb
EXIT
### Etapa 10
cd /etc
gedit my.cnf
### Etapa 11
mysql –poracle
EXIT

Exercício 4-2: Questionário


Nenhum script para este exercício.

Exercício 4-3: Exercício Adicional: Configuração do Servidor


### Etapa 1
cd /etc
cp /usr/share/mysql/my-small.cnf my.cnf
/etc/init.d/mysql stop

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Exercícios de Scripts de Soluções


Capítulo 23 - Página 6
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

/etc/init.d/mysql start
### Etapa 2
mysql –uroot –poracle
SHOW GLOBAL VARIABLES LIKE '%log';
SET GLOBAL general_log = ON;
SET GLOBAL slow_query_log = ON;
SHOW GLOBAL VARIABLES LIKE '%log';

Oracle University and Error : You are not a Valid Partner use only
### Etapa 3
SHOW GLOBAL VARIABLES LIKE 'log_output';
SET GLOBAL log_output = 'TABLE';
SHOW GLOBAL VARIABLES LIKE 'log_output';
TRUNCATE mysql.general_log;
TRUNCATE mysql.slow_log;
### Etapa 4
DROP DATABASE world_innodb;
CREATE DATABASE world_innodb;
USE world_innodb;
SOURCE /labs/world_innodb.sql
### Etapa 5
SELECT COUNT(*) FROM mysql.general_log WHERE argument LIKE 'CREATE
TABLE%';
### Etapa 6
SELECT SLEEP(11);
SELECT * FROM mysql.slow_log \G
### Etapa 7
SHOW GLOBAL VARIABLES LIKE 'log_bin';
EXIT
### Etapa 8
su –
Password: oracle
cd /etc
gedit my.cnf
/etc/init.d/mysql stop
/etc/init.d/mysql start
### Etapa 9
mysql –uroot –poracle
SHOW GLOBAL VARIABLES LIKE 'log_bin';
RESET MASTER;
### Etapa 10
CREATE DATABASE foo;
DROP DATABASE foo;

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Exercícios de Scripts de Soluções


Capítulo 23 - Página 7
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

SHOW BINLOG EVENTS;


### Etapa 11
FLUSH LOGS;
CREATE DATABASE bar;
DROP DATABASE bar;
### Etapa 12
SHOW MASTER LOGS;

Oracle University and Error : You are not a Valid Partner use only
SHOW BINLOG EVENTS IN 'mysql-bin.000002';
### Etapa 13
PURGE MASTER LOGS TO 'mysql-bin.000002';
### Etapa 14
CREATE DATABASE foo_2;
DROP DATABASE foo_2;
### Etapa 15
EXIT
### Etapa 16
mysqlbinlog /var/lib/mysql/mysql-bin.000002
### Etapa 17
# Nenhum script para esta etapa.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Exercícios de Scripts de Soluções


Capítulo 23 - Página 8
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Lição 5: Clientes e Ferramentas


Exercício 5-1: Chamar o Cliente mysql
### Etapa 1
mysql –V
### Etapa 2
mysql –-help

Oracle University and Error : You are not a Valid Partner use only
### Etapa 3
mysql -uroot –poracle
EXIT
### Etapa 4
mysql -uroot -poracle -e "SELECT CURRENT_DATE(), CURRENT_TIME()" -–html
### Etapa 5
mysql -uroot -p -P 3306 --tee=tee_1.txt
EXIT
gedit tee_1.txt
### Etapa 6
mysql –uroot –poracle -–safe-updates
### Etapa 7
STATUS;
### Etapa 8
HELP CONTENTS;
HELP Account Management;
HELP SET PASSWORD;
### Etapa 9
SHOW DATABASES;
EXIT

Exercício 5-2: Chamar o Cliente mysqladmin


### Etapa 1
mysqladmin –V
### Etapa 2
mysqladmin –-help
### Etapa 3
mysqladmin -uroot -poracle variables

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Exercícios de Scripts de Soluções


Capítulo 23 - Página 9
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Exercício 5-3: Visualizar as Demonstrações do MySQL Enterprise


Monitor
Informe o caminho do arquivo file:///labs/demos/Enterprise_Monitor_demos/ no Web browser.
Siga as instruções no exercício.

Exercício 5-4: Exibir as Demonstrações do MySQL Workbench


Informe o caminho do arquivo file:///labs/demos/Workbench_demos no Web browser. Siga as

Oracle University and Error : You are not a Valid Partner use only
instruções no exercício.

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Exercícios de Scripts de Soluções


Capítulo 23 - Página 10
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Lição 6: Tipos de Dados


Exercício 6-1: Questionário
Nenhum script para este exercício.

Exercício 6-2: Definir um Tipo de Dados

Oracle University and Error : You are not a Valid Partner use only
### Etapa 1
mysql –uroot -poracle
USE test
### Etapa 2
CREATE TABLE integers(n SMALLINT UNSIGNED);
INSERT INTO integers VALUES (5);
### Etapa 3
SELECT * FROM integers;
### Etapa 4
SHOW TABLE STATUS LIKE 'integers'\G
### Etapa 5
USE world_innodb
CREATE TABLE CityMyISAM LIKE City;
SHOW TABLES;
ALTER TABLE CityMyISAM ENGINE=MyISAM;
INSERT INTO CityMyISAM SELECT * FROM City;
DESC CityMyISAM;
SHOW TABLE STATUS LIKE 'CityMyISAM'\G
### Etapa 6
ALTER TABLE CityMyISAM MODIFY Population BIGINT;
DESC CityMyISAM;
SHOW TABLE STATUS LIKE 'CityMyISAM'\G
EXIT

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Exercícios de Scripts de Soluções


Capítulo 23 - Página 11
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Lição 7: Obter Metadados


Exercício 7-1: Obter Metadados Usando INFORMATION_SCHEMA
### Etapa 1
mysql –uroot –poracle
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'test'\G
### Etapa 2

Oracle University and Error : You are not a Valid Partner use only
USE INFORMATION_SCHEMA
SELECT TABLE_NAME, ENGINE FROM TABLES WHERE TABLE_SCHEMA = 'world_innodb';
### Etapa 3
SELECT TABLE_SCHEMA, ENGINE, COUNT(*) FROM TABLES GROUP BY TABLE_SCHEMA,
ENGINE;
### Etapa 4
SELECT TABLE_NAME, DATA_LENGTH FROM TABLES WHERE TABLE_SCHEMA =
'world_innodb' AND TABLE_NAME = 'City';
### Etapa 5
SELECT DATA_TYPE, COUNT(*) FROM COLUMNS WHERE TABLE_SCHEMA =
'world_innodb' AND DATA_TYPE IN ('CHAR', 'VARCHAR') GROUP BY DATA_TYPE;

Exercício 7-2: Obter Metadados Usando SHOW e DESCRIBE


### Etapa 1
SHOW DATABASES;
### Etapa 2
SHOW DATABASES LIKE '%o%';
### Etapa 3
USE information_schema;
SHOW TABLES;
### Etapa 4
USE world_innodb
SHOW FULL COLUMNS FROM City\G
### Etapa 5
SHOW INDEX FROM City\G
### Etapa 6
DESCRIBE CountryLanguage;
### Etapa 7
SHOW CHARACTER SET;
### Etapa 8
SHOW COLLATION;
### Etapa 9
EXIT

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Exercícios de Scripts de Soluções


Capítulo 23 - Página 12
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Exercício 7-3: Obter Metadados Usando mysqlshow


### Etapa 1
mysqlshow -uroot –poracle
### Etapa 2
mysqlshow world_innodb -uroot –poracle
### Etapa 3
mysqlshow world_innodb CountryLanguage -uroot –poracle

Oracle University and Error : You are not a Valid Partner use only

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Exercícios de Scripts de Soluções


Capítulo 23 - Página 13
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Lição 8: Transações e Bloqueio


Exercício 8-1: Questionário
Nenhum script para este exercício

Exercício 8-2: Usar Instruções de Controle de Transação

Oracle University and Error : You are not a Valid Partner use only
### Etapa 1
mysql –uroot –poracle
SHOW ENGINES\G
### Etapa 2
SET AUTOCOMMIT = 1;
SELECT @@AUTOCOMMIT;
### Etapa 3
USE world_innodb
SHOW CREATE TABLE City\G
### Etapa 4
START TRANSACTION;
### Etapa 5
SELECT * FROM City WHERE Name = 'Manta';
DELETE FROM City WHERE Name = 'Manta';
SELECT * FROM City WHERE Name = 'Manta';
### Etapa 6
ROLLBACK;
SELECT * FROM City WHERE Name = 'Manta';
### Etapa 7
START TRANSACTION;
### Etapa 8
DELETE FROM City WHERE Name = 'Manta';
### Etapa 9
COMMIT;
### Etapa 10
SELECT * FROM City WHERE Name = 'Manta';
### Etapa 11
ROLLBACK;
SELECT * FROM City WHERE Name = 'Manta';

Exercício 8-3: Exercício Adicional: Transação e Bloqueio


### Etapa 1

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Exercícios de Scripts de Soluções


Capítulo 23 - Página 14
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

su -
Password: oracle
cd /etc
cp /usr/share/mysql/my-small.cnf my.cnf
### Etapa 2
/etc/init.d/mysql stop
/etc/init.d/mysql start

Oracle University and Error : You are not a Valid Partner use only
### Etapa 3
mysql -uroot –poracle
SELECT @@global.tx_isolation;
### Etapa 4
PROMPT t1>;
### Etapa 5
START TRANSACTION;
### Etapa 6
USE world_innodb
SELECT * FROM City WHERE ID > 4070;
### Etapa 7
### Abra uma segunda janela de terminal (t2).
mysql –uroot –poracle
PROMPT t2>;
### Etapa 8
### Na segunda janela de terminal (t2).
START TRANSACTION;
### Etapa 9
USE world_innodb
SELECT * FROM City WHERE ID > 4070;
### Etapa 10
### Na primeira janela de terminal (t1).
INSERT INTO City (Name, CountryCode) VALUES ('New City', 'ATA');
SELECT * FROM City WHERE ID > 4070;
### Etapa 11
### Na segunda janela de terminal (t2).
SELECT * FROM City WHERE ID > 4070;
### Etapa 12
### Na primeira janela de terminal (t1).
COMMIT;
### Etapa 13
### Na segunda janela de terminal (t2).
COMMIT;
SELECT * FROM City WHERE ID > 4070;

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Exercícios de Scripts de Soluções


Capítulo 23 - Página 15
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

### Etapa 14
### Na primeira janela de terminal (t1).
START TRANSACTION;
### Etapa 15
DELETE FROM City WHERE ID = 4080;
SELECT * FROM City WHERE ID > 4070;
### Etapa 16

Oracle University and Error : You are not a Valid Partner use only
### Na segunda janela de terminal (t2).
SET SESSION tx_isolation = 'READ-UNCOMMITTED';
SELECT @@tx_isolation;
### Etapa 17
START TRANSACTION;
SELECT * FROM City WHERE ID > 4070;
### Etapa 18
### Na primeira janela de terminal (t1).
ROLLBACK;
SELECT * FROM City WHERE ID > 4070;
### Etapa 19
### Na segunda janela de terminal (t2).
SELECT * FROM City WHERE ID > 4070;
### Etapa 20
### Na segunda janela de terminal (t2).
ROLLBACK;
### Etapa 20
### Na primeira janela de terminal (t1).
EXIT
EXIT
### Na segunda janela de terminal (t2).
EXIT
EXIT

Copyright © 2012, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.

Apêndice: Exercícios de Scripts de Soluções


Capítulo 23 - Página 16
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED

Lição 9: Mecanismo de Armazenamento InnoDB


Exercício 9-1: Questionário
Nenhum script para este exercício

Exercício 9-2: Definir e Confirmar Con