Comandos Linux – Comando mysqldump

Comando Linux mysqldump

comando mysqldump

Em sistemas operacionais do tipo Unix executando o MySQL , o comando mysqldump “despeja” um banco de dados MySQL, ou uma coleção de bancos de dados, para backup ou transferência para outro servidor SQL .

Descrição

O cliente mysqldump é um utilitário que executa backups lógicos, produzindo um conjunto de instruções SQL que podem ser executadas para reproduzir os objetos de esquema originais, dados da tabela ou ambos. Despeja um ou mais banco de dados MySQL para backup ou transferência para outro servidor SQL. O comando mysqldump também pode gerar saída em CSV , outro texto delimitado ou formato XML .

O mysqldump requer pelo menos o privilégio SELECT para tabelas despejadas, SHOW VIEW para visualizações despejadas, TRIGGER para gatilhos despejados e LOCK TABLES se a opção – única transação não for usada. Certas opções podem exigir outros privilégios, conforme observado nas descrições das opções.

Para recarregar um arquivo de despejo, você deve ter os mesmos privilégios necessários para criar cada um dos objetos despejados, emitindo instruções CREATE manualmente.

A saída do mysqldump pode incluir instruções ALTER DATABASE que alteram o agrupamento do banco de dados. Eles podem ser usados ​​ao despejar programas armazenados para preservar suas codificações de caracteres . Para recarregar um arquivo de despejo que contém essas instruções, é necessário o privilégio ALTER do banco de dados afetado.

Considerações sobre desempenho e escalabilidade

As vantagens do mysqldump incluem a conveniência e a flexibilidade de visualizar ou mesmo editar a saída antes de restaurar. Você pode clonar bancos de dados para desenvolvimento e trabalho de DBA ou produzir pequenas variações de um banco de dados existente para teste. Não se destina a ser uma solução rápida ou escalável para fazer backup de quantidades substanciais de dados. Com tamanhos de dados grandes, mesmo que a etapa de backup demore um tempo razoável, a restauração dos dados pode ser muito lenta porque a reprodução das instruções SQL envolve E / S de disco para inserção, criação de índice, etc.

Para backup e restauração em larga escala, um backup físico é mais apropriado, para copiar os arquivos de dados em seu formato original que podem ser restaurados rapidamente:

  • Se suas tabelas são principalmente tabelas InnoDB ou se você tem uma mistura de tabelas InnoDB e MyISAM, uma ferramenta melhor pode ser o comando mysqlbackup do produto MySQL Enterprise Backup (que não é gratuito). Ele oferece o melhor desempenho para backups do InnoDB e também pode fazer backup de tabelas do MyISAM e outros mecanismos de armazenamento; e fornece muitas opções convenientes para acomodar diferentes cenários de backup.
  • Se suas tabelas são principalmente tabelas MyISAM, considere usar o mysqlhotcopy para obter melhor desempenho do que o mysqldump das operações de backup e restauração.

O mysqldump pode recuperar e despejar o conteúdo da tabela linha por linha, ou pode recuperar todo o conteúdo de uma tabela e armazená-lo na memória antes de descarregá-lo. O buffer da memória pode ser um problema se você estiver descartando tabelas grandes. Para despejar tabelas linha por linha, use a opção –quick (ou –opt , que habilita –quick ). A opção –opt (e, portanto, –quick ) está ativada por padrão; portanto, para ativar o buffer de memória, use –skip-quick .

Se você estiver usando uma versão recente do mysqldump para gerar um dump a ser recarregado em um servidor MySQL muito antigo, use a opção –skip-opt em vez da opção –opt ou –extended-insert .

Invocando o mysqldump

Existem três maneiras gerais de usar o mysqldump . Pode ser usado para despejar um conjunto de uma ou mais tabelas, despejar um conjunto de um ou mais bancos de dados completos ou despejar um servidor MySQL inteiro. Esses três usos, respectivamente, são mostrados aqui:

  mysqldump [opções] nome_bd [nome_tabela ...]
  mysqldump [opções] - bancos de dados db_name ...
  mysqldump [opções] --todos os bancos de dados

Para despejar bancos de dados inteiros, não nomeie nenhuma tabela após db_name ; ou, use a opção –databases ou –all-database .

Sintaxe

  mysqldump [ opções ] [ nome_bd [ nome_tabela ...]]

Opções

O mysqldump suporta as seguintes opções, que podem ser especificadas na linha de comando ou nos grupos [mysqldump] e [client] de um arquivo de opções.

Opções de conexão

  --bind-address = endereço_ip
Em um computador com várias interfaces de rede , esta opção pode ser usada para selecionar qual interface é empregada ao se conectar ao servidor MySQL. Esta opção é suportada começando no MySQL 5.6.1.
  --comprimir
 -C
Compacte todas as informações enviadas entre o cliente e o servidor, se ambas suportarem compactação.
  --default-auth = plugin
O plug-in de autenticação do lado do cliente a ser usado.
  --host = host_name
 -h host_name
Despejar dados do servidor MySQL no host especificado. O host padrão é localhost .
  --login-path = name
Leia as opções do caminho de login nomeado no arquivo de login .mylogin.cnf . Um “caminho de login” é um grupo de opções que permite apenas um conjunto limitado de opções: host , usuário e senha . Pense em um caminho de logon como um conjunto de valores que indicam o host do servidor e as credenciais para autenticação no servidor. Para criar o arquivo de login, use o utilitário mysql_config_editor . Esta opção foi adicionada no MySQL 5.6.6.
  --password [ = senha ]
 -p [ senha ]
A senha a ser usada ao se conectar ao servidor. Se você usar o formulário de opção abreviada ( -p ), não poderá ter espaço entre a opção e a senha. Se você omitir o valor da senha após a opção –password ou -p na linha de comando, o mysqldump solicitará uma.

A especificação de uma senha na linha de comando deve ser considerada insegura, pois qualquer pessoa que possa visualizar seus processos (por exemplo, com o comando ps ) poderá ver sua senha como texto sem formatação .

  --tubo
 -W
No Windows , conecte-se ao servidor usando um pipe nomeado. Esta opção se aplica apenas se o servidor suportar conexões de pipe nomeado.
  --plugin-dir = caminho
O diretório no qual procurar plug-ins . Pode ser necessário especificar esta opção se a opção –default-auth for usada para especificar um plug-in de autenticação, mas o mysqldump não o encontrar.
  --protocol = { TCP |  SOQUETE |  TUBO |  MEMÓRIA }
O protocolo de conexão a ser usado para se conectar ao servidor. É útil quando os outros parâmetros de conexão normalmente fazem com que um protocolo seja usado diferente daquele que você deseja.
  --secure-auth
Não envie senhas para o servidor no formato antigo (anterior à 4.1). Isso evita conexões, exceto para servidores que usam o formato de senha mais recente. Essa opção é ativada por padrão; use –skip-secure-auth para desativá-lo. Esta opção foi adicionada no MySQL 5.6.17.

Nota: As senhas que usam o método de hash pré-4.1 são menos seguras que as senhas que usam o método de hash de senha nativo e devem ser evitadas. As senhas anteriores à 4.1 foram descontinuadas e o suporte a elas será removido em uma versão futura do MySQL.

  --socket = caminho , caminho -S
Para conexões com o host local, o arquivo de soquete Unix a ser usado ou, no Windows, o nome do canal nomeado a ser usado.
  --ssl *
As opções que começam com –ssl especificam se o servidor deve ser conectado usando SSL e indicam onde encontrar as chaves e certificados SSL.
  --user = nome_do_usuário , -u nome_do_usuário
O nome de usuário do MySQL a ser usado ao se conectar ao servidor.

Você também pode definir as seguintes variáveis usando a sintaxe –var_name = value :

  max_allowed_packet
O tamanho máximo do buffer para comunicação cliente / servidor. O padrão é 24 MB , o máximo é 1 GB .
  net_buffer_length
O tamanho inicial do buffer para comunicação cliente / servidor. Ao criar instruções INSERT de várias linhas (como na opção –extended-insert ou –opt ), o mysqldump cria linhas com o comprimento net_buffer_length . Se você aumentar essa variável, verifique se a variável net_buffer_length no servidor MySQL é pelo menos desse tamanho.

Opções DDL

Os cenários de uso do mysqldump incluem a configuração de uma nova instância do MySQL inteira (incluindo tabelas de banco de dados) e a substituição de dados dentro de uma instância existente por bancos de dados e tabelas existentes.

As opções a seguir permitem especificar quais itens desmontar e configurar ao restaurar um despejo, codificando várias instruções DDL no arquivo de despejo.

  --add-drop-database
Adicione uma instrução DROP DATABASE antes de cada instrução CREATE DATABASE . Esta opção é usada em conjunto com a opção –all -atabases ou –databases porque nenhuma instrução CREATE DATABASE é gravada, a menos que uma dessas opções seja especificada.
  --add-drop-table
Adicione uma instrução DROP TABLE antes de cada instrução CREATE TABLE .
  --add-drop-trigger
Adicione uma instrução DROP TRIGGER antes de cada instrução CREATE TRIGGER .
  --todos os espaços de tabela
 -Y
Adiciona a um despejo de tabela todas as instruções SQL necessárias para criar os espaços de tabela usados ​​por uma tabela NDB. Esta informação não é incluída na saída do mysqldump . Atualmente, esta opção é relevante apenas para tabelas de cluster do MySQL.
  --no-create-db
 -n
Esta opção suprime as instruções CREATE DATABASE que, de outra forma, estão incluídas na saída se a opção –databases ou –all-database for fornecida.
  --no-create-info
 -t
Não escreva instruções CREATE TABLE que recriam cada tabela despejada. Nota: Esta opção não exclui instruções que criam grupos de arquivos de log ou espaços de tabela a partir da saída do mysqldump ; no entanto, você pode usar a opção –no-tablespaces para essa finalidade.
  --no-tablespaces
 -y
Esta opção suprime todas as instruções CREATE LOGFILE GROUP e CREATE TABLESPACE na saída do mysqldump .
  --substituir
Escreva instruções REPLACE em vez de instruções INSERT .

Opções de depuração

As opções a seguir imprimem informações de depuração , codificam informações de depuração no arquivo de despejo ou permitem que a operação de despejo continue independentemente de possíveis problemas.

  --allow-keywords
Permite a criação de nomes de colunas que são palavras-chave. Isso funciona prefixando o nome de cada coluna com o nome da tabela.
  --comentários
 -Eu
Escreva informações adicionais no arquivo de despejo, como versão do programa, versão do servidor e host. Essa opção é ativada por padrão. Para suprimir essas informações adicionais, use –skip-comments .
  --debug [ = debug_options ]
 - # [ debug_options ]
Escreva um log de depuração. Uma string típica de debug_options é d: t: o, file_name . O valor padrão é d: t: o, / tmp / mysqldump.trace .
  --debug-check
Imprima algumas informações de depuração quando o programa sair.
  --debug-info
Imprima informações de depuração e estatísticas de uso de memória e CPU quando o programa sair.
  --dump-date
Se a opção –comments for fornecida, o mysqldump produzirá um comentário no final do dump do seguinte formulário:

  - Despejo concluído em DATE

No entanto, a data faz com que os arquivos de despejo obtidos em momentos diferentes pareçam diferentes, mesmo que os dados sejam idênticos. –dump-date e –skip-dump-date controlam se a data é adicionada ao comentário. O padrão é –dump-date (inclua a data no comentário). –skip-dump-date suprime a impressão da data.

  --força
 -f
Continue mesmo se ocorrer um erro SQL durante um despejo de tabela.

Um uso para esta opção é fazer com que o mysqldump continue executando mesmo quando encontrar uma visão que se tornou inválida porque a definição se refere a uma tabela que foi eliminada. Sem –force , o mysqldump sai com uma mensagem de erro. Com –force , o mysqldump imprime a mensagem de erro, mas também grava um comentário SQL contendo a definição de exibição na saída do despejo e continua executando.

  --log-error = nome_do_arquivo
Registre avisos e erros anexando-os ao arquivo nomeado. O padrão é não fazer log.
  - skip-comments
Veja a descrição para a opção –comments .
  --verbose
 -v
Modo verboso . Imprima mais informações sobre o que o programa faz.

Opções de ajuda

As seguintes opções exibem informações sobre o próprio comando mysqldump .

  --Socorro
 -?
Exiba uma mensagem de ajuda e saia.
  --versão
 -V
Exibir informações da versão e sair.

As seguintes opções mudam como o comando mysqldump representa dados de caracteres com configurações de idioma nacional.

  --character-sets-dir = caminho
O diretório em que os conjuntos de caracteres estão instalados.
  --default-character-set = charset_name
Use charset_name como o conjunto de caracteres padrão. Se nenhum conjunto de caracteres for especificado, o mysqldump usa utf8 e as versões anteriores usam latin1 .
  --nenhum-conjunto-nomes , -N
Desativa a configuração –set-charset , o mesmo que especificar –skip-set-charset .
  --set-charset
Adicione SET NAMES default_character_set à saída. Essa opção é ativada por padrão. Para suprimir a instrução SET NAMES , use –skip-set-charset .

Opções de replicação

O comando mysqldump é freqüentemente usado para criar uma instância vazia, ou uma instância incluindo dados, em um servidor escravo em uma configuração de replicação. As opções a seguir se aplicam ao dumping e à restauração de dados nos servidores mestre e escravo de replicação.

  --apply-slave-statement
Para um dump escravo produzido com a opção –dump-slave , adicione uma instrução STOP SLAVE antes da instrução CHANGE MASTER TO e uma instrução START SLAVE no final da saída.
  --delete-master-logs
Em um servidor de replicação principal, exclua os logs binários enviando uma instrução PURGE BINARY LOGS para o servidor depois de executar a operação de despejo. Esta opção ativa automaticamente –master-data .
  --dump-slave [ = valor ]
Essa opção é semelhante a –master-data, exceto que é usada para despejar um servidor escravo de replicação para produzir um arquivo despejo que pode ser usado para configurar outro servidor como escravo que tenha o mesmo mestre que o servidor despejado. Faz com que a saída de despejo inclua uma instrução CHANGE MASTER TO que indique as coordenadas do log binário (nome e posição do arquivo) do mestre do escravo despejado. Essas são as coordenadas do servidor mestre das quais o escravo deve começar a replicar.

–dump-slave faz com que as coordenadas do mestre sejam usadas em vez das do servidor despejado, como é feito pela opção –master-data . Além disso, especificar esta opção faz com que a opção –master-data seja substituída, se usada, e efetivamente ignorada.

O valor da opção é tratado da mesma maneira que para –master-data (a configuração de nenhum valor ou 1 faz com que uma instrução CHANGE MASTER TO seja gravada no dump, a configuração 2 faz com que a instrução seja gravada, mas envolvida em comentários SQL) e possui o mesmo efeito que –master-data em termos de habilitar ou desabilitar outras opções e em como o bloqueio é tratado.

Esta opção faz com que o mysqldump pare o encadeamento SQL escravo antes do despejo e o reinicie novamente depois.

Em conjunto com –dump-slave , as opções –apply-slave- e –include-master-host-port também podem ser usadas.

  --include-master-host-port
Para a instrução CHANGE MASTER TO em um dump escravo produzido com a opção –dump-slave , adicione as opções MASTER_HOST e MASTER_PORT para o nome do host e o número da porta TCP / IP do mestre do escravo.
  --master-data [ = valor ]
Use esta opção para despejar um servidor de replicação principal para produzir um arquivo de despejo que pode ser usado para configurar outro servidor como escravo do mestre. Faz com que a saída de despejo inclua uma instrução CHANGE MASTER TO que indique as coordenadas do log binário (nome e posição do arquivo) do servidor despejado. Essas são as coordenadas do servidor mestre das quais o escravo deve começar a replicar depois de carregar o arquivo de despejo no escravo.

Se o valor da opção for 2 , a instrução CHANGE MASTER TO será gravada como um comentário SQL e, portanto, é apenas informativa; não tem efeito quando o arquivo de despejo é recarregado. Se o valor da opção for 1, a instrução não será gravada como um comentário e entrará em vigor quando o arquivo de despejo for recarregado. Se nenhum valor de opção for especificado, o valor padrão é 1.

Esta opção requer o privilégio RELOAD e o log binário deve estar ativado.

A opção –master-data desativa automaticamente as tabelas –lock . Ele também ativa –lock-all-tables , a menos que – Única transação também seja especificada; nesse caso, um bloqueio de leitura global é adquirido apenas por um curto período de tempo no início do dump (consulte a descrição para – transação única ). Em todos os casos, qualquer ação nos logs acontece no momento exato do despejo.

Também é possível configurar um escravo despejando um escravo existente do mestre, usando a opção –dump-slave , que substitui –master-data e faz com que seja ignorado se as duas opções forem usadas.

Antes do MySQL 5.6.4, essa opção era necessária para descarregar as tabelas de log de replicação.

  --set-gtid-purged = value
Esta opção permite o controle das informações GTID (ID de transação global) gravadas no arquivo de despejo, indicando se uma instrução SET @@ global.gtid_purged deve ser adicionada à saída.

A tabela a seguir mostra os valores das opções permitidas. O valor padrão é AUTO .

valor significado
FORA Adicione nenhuma instrução SET à saída.
EM Adicione uma instrução SET à saída. Ocorre um erro se os GTIDs não estiverem ativados no servidor.
AUTO Adicione uma instrução SET à saída se os GTIDs estiverem ativados no servidor.

Esta opção foi adicionada no MySQL 5.6.9.

Opções de formato

As opções a seguir especificam como representar o arquivo de despejo inteiro ou certos tipos de dados no arquivo de despejo. Eles também controlam se certas informações opcionais são gravadas no arquivo de despejo.

  --compactar
Produza uma saída mais compacta. Esta opção ativa as opções –skip-add-drop-table , –skip-add-locks , –skip-comments , –skip-disable-keys e –skip-set-charset .
  --compatible = nome
Produza uma saída que seja mais compatível com outros sistemas de banco de dados ou com servidores MySQL mais antigos. O valor do nome pode ser ansi , mysql323 , mysql40 , postgresql , oracle , mssql , db2 , maxdb , no_key_options , no_table_options ou no_field_options . Para usar vários valores, separe-os por vírgulas. Esses valores têm o mesmo significado que as opções correspondentes para configurar o modo SQL do servidor.

Esta opção não garante compatibilidade com outros servidores. Ele habilita apenas os valores do modo SQL atualmente disponíveis para tornar a saída de despejo mais compatível. Por exemplo, –compatible = oracle não mapeia tipos de dados para tipos Oracle ou usa a sintaxe de comentários do Oracle.

Esta opção requer uma versão do servidor 4.1.0 ou superior. Com servidores mais antigos, isso não faz nada.

  - inserção-completa
 -c
Use instruções INSERT completas que incluem nomes de colunas.
  --create-options
Inclua todas as opções de tabela específicas do MySQL nas instruções CREATE TABLE .
  --fields-terminado-por = ...
 --fields-closed-by = ...
 --fields-opcionalmente fechado por = ...
 - campos-escapados por = ...
Essas opções são usadas com a opção –tab e têm o mesmo significado que as cláusulas FIELDS correspondentes para LOAD DATA INFILE .
  --hex-blob
Despejar colunas binárias usando notação hexadecimal (por exemplo, ‘ abc ‘ se torna 0x616263 ). Os tipos de dados afetados são BINARY , VARBINARY , os tipos de BLOB e BIT .
  - linhas terminadas por = ...
Esta opção é usada com a opção –tab e tem o mesmo significado que a cláusula LINES correspondente para LOAD DATA INFILE .
  --quote-names
 -Q
Identifique aspas (como nomes de banco de dados, tabela e coluna) com caracteres ” ` “(backtick). Se o modo SQL ANSI_QUOTES estiver ativado, os identificadores serão citados com caracteres ”  “(aspas duplas). Esta opção é ativada por padrão. Ela pode ser desativada com –skip-quote-names , mas essa opção deve ser fornecida após qualquer opção como –compatible que pode habilitar –quote-names .
  --result-file = nome_do_arquivo
 -r nome_do_arquivo
Saída direta para um determinado arquivo. Esta opção deve ser usada no Windows para impedir que caracteres de nova linha ” \ n ” sejam convertidos em ” \ r \ n ” sequências de retorno de carro / nova linha. O arquivo de resultado é criado e seu conteúdo anterior substituído, mesmo se ocorrer um erro ao gerar o dump.
  --tab = caminho
 Caminho -T
Produza arquivos de dados em formato de texto separados por tabulação . Para cada tabela despejada, o mysqldump cria um arquivo tbl_name.sql que contém a instrução CREATE TABLE que cria a tabela e o servidor grava um arquivo tbl_name.txt que contém seus dados. O valor da opção é o diretório no qual os arquivos serão gravados.

Nota: Esta opção deve ser usada apenas quando o mysqldump for executado na mesma máquina que o servidor mysqld . Você deve ter o privilégio FILE e o servidor deve ter permissão para gravar arquivos no diretório que você especificar. Por padrão, os arquivos de dados .txt são formatados usando caracteres de tabulação entre os valores da coluna e uma nova linha no final de cada linha. O formato pode ser especificado explicitamente usando as opções –fields-xxx e –lines-terminated-by .

Os valores da coluna são convertidos no conjunto de caracteres especificado pela opção –default-character-set .

  --tz-utc
Essa opção permite que as colunas TIMESTAMP sejam despejadas e recarregadas entre servidores em diferentes fusos horários. O mysqldump define seu fuso horário de conexão como UTC e adiciona SET TIME_ZONE = ‘+ 00:00’ ao arquivo de despejo. Sem essa opção, as colunas TIMESTAMP são despejadas e recarregadas nos fusos horários locais para os servidores de origem e destino, o que pode fazer com que os valores sejam alterados se os servidores estiverem em fusos horários diferentes. –tz-utc também protege contra alterações devido ao horário de verão. –tz-utc está ativado por padrão. Para desativá-lo, use –skip-tz-utc .
  --xml
 -X
Grave a saída de despejo como XML bem formado.

NULL , ‘ NULL ‘ e valores vazios: para uma coluna chamada column_name, o valor NULL , uma string vazia e o valor da string ‘ NULL ‘ são diferenciados um do outro na saída gerada por esta opção, da seguinte maneira.

valor representação xml
NULO
(valor desconhecido)
<nome do campo = “nome_da_coluna” xsi: nil = “true” />

(cadeia vazia)
<nome do campo = “nome_da_coluna”> </field>
‘NULO’
(valor da sequência)
<field name = “column_name”> NULL </field>

A saída do cliente mysql quando executada usando a opção –xml também segue as regras anteriores.

Opções de filtragem

As seguintes opções controlam quais tipos de objetos de esquema são gravados no arquivo de despejo: por categoria, como gatilhos ou eventos; pelo nome, por exemplo, escolhendo quais bancos de dados e tabelas despejar; ou mesmo filtrando linhas dos dados da tabela usando uma cláusula WHERE .

  --all-database
 -UMA
Despejar todas as tabelas em todos os bancos de dados. É o mesmo que usar a opção –databases e nomear todos os bancos de dados na linha de comandos.

Antes do MySQL 5.6.4, as tabelas slave_master_info e slave_relay_log_info (consulte a Seção 16.2.2, “Relé de replicação e logs de status”) não eram incluídas por esta opção.

  --databases
 -B
Despejar vários bancos de dados. Normalmente, o mysqldump trata o argumento do primeiro nome na linha de comando como um nome de banco de dados e os seguintes nomes como nomes de tabela. Com esta opção, ele trata todos os argumentos de nome como nomes de banco de dados. As instruções CREATE DATABASE e USE estão incluídas na saída antes de cada novo banco de dados.
  --eventos
 -E
Inclua eventos do Agendador de eventos para os bancos de dados despejados na saída.
  --ignore-table = db_name .  tbl_name
Não despeje a tabela especificada, que deve ser especificada usando os nomes de banco de dados e tabela. Para ignorar várias tabelas, use esta opção várias vezes. Esta opção também pode ser usada para ignorar visualizações.
  --no-data
 -d
Não escreva nenhuma informação de linha da tabela (ou seja, não despeje o conteúdo da tabela). Isso é útil se você deseja despejar apenas a instrução CREATE TABLE da tabela (por exemplo, para criar uma cópia vazia da tabela carregando o arquivo de despejo).
  --rotinas
 -R
Inclua rotinas armazenadas (procedimentos e funções) para os bancos de dados despejados na saída. O uso desta opção requer o privilégio SELECT para a tabela mysql.proc. A saída gerada usando –rotines contém as instruções CREATE PROCEDURE e CREATE FUNCTION para recriar as rotinas. No entanto, essas instruções não incluem atributos como os carimbos de data / hora de criação e modificação de rotina. Isso significa que, quando as rotinas forem recarregadas, elas serão criadas com os carimbos de data e hora iguais ao tempo de recarga.

Se você precisar recriar as rotinas com seus atributos de carimbo de data / hora originais, não use –rotines . Em vez disso, despeje e recarregue o conteúdo da tabela mysql.proc diretamente, usando uma conta MySQL que possua privilégios apropriados para o banco de dados mysql.

Antes do MySQL 5.6.5, essa opção não tinha efeito quando usada junto com a opção –xml .

  --tables
Substitua a opção –databases ou -B . O mysqldump considera todos os argumentos de nome seguindo a opção como nomes de tabela.
  --gatilhos
Inclua gatilhos para cada tabela despejada na saída. Essa opção é ativada por padrão; desative-o com –skip-triggers .
  --where = ' where_condition '
 -w ' where_condition '
Despejar apenas linhas selecionadas pela condição WHERE especificada. As cotações em torno da condição são obrigatórias se contiverem espaços ou outros caracteres especiais para o seu interpretador de comandos. Exemplos:

  --where = "usuário = 'jimf'"
  -w "ID do usuário> 1"
  -w "ID do usuário <1"

Opções de desempenho

As opções a seguir são as mais relevantes para o desempenho, particularmente das operações de restauração. Para conjuntos de dados grandes, a operação de restauração (processando as instruções INSERT no arquivo de despejo) é a parte que consome mais tempo. Quando for urgente restaurar dados rapidamente, planeje e teste o desempenho desse estágio com antecedência. Para tempos de restauração medidos em horas, você pode preferir uma solução alternativa de backup e restauração, como o MySQL Enterprise Backup para bancos de dados somente para uso InnoDB e de uso misto, ou o mysqlhotcopy para bancos de dados somente para MyISAM.

O desempenho também é afetado pelas opções transacionais, principalmente para a operação de despejo.

  - inserção atrasada
Para as tabelas não transacionais que suportam a sintaxe INSERT DELAYED , use essa instrução em vez das instruções INSERT regulares.

A partir do MySQL 5.6.6, as inserções DELAYED estão obsoletas, portanto essa opção será removida em uma versão futura.

  --disable-keys
 -K
Para cada tabela, coloque as instruções INSERT com / *! 40000 ALTER TABLE tbl_name DISABLE KEYS * /; / *! 40000 ALTER TABLE tbl_name ENABLE KEYS * /; afirmações. Isso torna o carregamento do arquivo de despejo mais rápido, porque os índices são criados depois que todas as linhas são inseridas. Esta opção é efetiva apenas para índices não exclusivos de tabelas MyISAM.
  - inserção extendida
 -e
Use a sintaxe INSERT de várias linhas que inclui várias listas VALUES . Isso resulta em um arquivo de despejo menor e acelera as inserções quando o arquivo é recarregado.
  --inserir-ignorar
Escreva instruções INSERT IGNORE em vez de instruções INSERT .
  --optar
Essa opção, ativada por padrão, é uma abreviação para a combinação de –add-drop-table –add-locks –create-options –disable-keys –extended-insert –lock-tables –lock-tables –quick – set-charset . Ele fornece uma operação de despejo rápido e produz um arquivo de despejo que pode ser recarregado rapidamente em um servidor MySQL.

Como a opção –opt está ativada por padrão, você especifica apenas o inverso, o –skip-opt para desativar várias configurações padrão. Veja a discussão dos grupos de opções do mysqldump para obter informações sobre como ativar ou desativar seletivamente um subconjunto das opções afetadas pelo –opt .

  --rápido
 -q
Esta opção é útil para despejar tabelas grandes. Isso força o mysqldump a recuperar linhas para uma tabela do servidor, uma linha por vez, em vez de recuperar o conjunto inteiro de linhas e armazená-lo em buffer na memória antes de escrevê-las.
  --skip-opt
Veja a descrição para a opção –opt .

Opções transacionais

As opções a seguir trocam o desempenho da operação de despejo contra a confiabilidade e a consistência dos dados exportados.

  --add-locks
Coloque cada despejo de tabela com as instruções LOCK TABLES e UNLOCK TABLES . Isso resulta em inserções mais rápidas quando o arquivo de despejo é recarregado.
  --flush-logs
 -F
Lave os arquivos de log do servidor MySQL antes de iniciar o despejo. Esta opção requer o privilégio RELOAD. Se você usar esta opção em combinação com a opção –all-database , os logs serão liberados para cada banco de dados despejado. A exceção é ao usar –lock-all-tables , –master-data ou –single-transaction : nesse caso, os logs são liberados apenas uma vez, correspondendo ao momento em que todas as tabelas estão bloqueadas. Se você deseja que seu dump e a descarga do log ocorram no mesmo momento, use –flush-logs junto com –lock-all-tables , –master-data ou – Única transação .
  --flush-privilégios
Adicione uma instrução FLUSH PRIVILEGES à saída de despejo após despejar o banco de dados mysql. Esta opção deve ser usada sempre que o dump contiver o banco de dados mysql e qualquer outro banco de dados que dependa dos dados no banco de dados mysql para uma restauração adequada.
  --lock-all-tables
 -x
Bloqueie todas as tabelas em todos os bancos de dados. Isso é obtido com a aquisição de um bloqueio de leitura global durante todo o despejo. Esta opção desativa automaticamente – única transação e –lock-tables .
  --lock-tables
 -eu
Para cada banco de dados despejado, bloqueie todas as tabelas a serem despejadas antes de despejá-las. As tabelas são bloqueadas com READ LOCAL para permitir inserções simultâneas no caso de tabelas MyISAM. Para tabelas transacionais como o InnoDB, – único transação é uma opção muito melhor do que –lock-tables, porque não precisa bloquear as tabelas.

Como –lock-tables bloqueia tabelas para cada banco de dados separadamente, essa opção não garante que as tabelas no arquivo de despejo sejam logicamente consistentes entre os bancos de dados. Tabelas em bancos de dados diferentes podem ser despejadas em estados completamente diferentes.

Algumas opções, como –opt , ativam automaticamente –lock-tables . Se você deseja substituir isso, use –skip-lock-tables no final da lista de opções.

  --no-autocommit
Coloque as instruções INSERT para cada tabela despejada nas instruções SET autocommit = 0 e COMMIT .
  --order-by-primary
Despejar as linhas de cada tabela classificadas por sua chave primária ou por seu primeiro índice exclusivo, se esse índice existir. Isso é útil ao descarregar uma tabela MyISAM para ser carregada em uma tabela InnoDB, mas faz com que a operação de despejo demore consideravelmente mais.
  - única transação
Esta opção define o modo de isolamento da transação como REPEATABLE READ e envia uma instrução SQL START TRANSACTION para o servidor antes de descarregar os dados. É útil apenas com tabelas transacionais, como o InnoDB, porque despeja o estado consistente do banco de dados no momento em que o START TRANSACTION foi emitido sem bloquear nenhum aplicativo.

Ao usar esta opção, lembre-se de que apenas as tabelas do InnoDB são despejadas em um estado consistente. Por exemplo, qualquer tabela MyISAM ou MEMORY despejada ao usar esta opção ainda pode mudar de estado.

Enquanto um despejo de transação única está em andamento, para garantir um arquivo de despejo válido (conteúdo correto da tabela e coordenadas de log binárias), nenhuma outra conexão deve usar as seguintes instruções: ALTER TABLE , CREATE TABLE , DROP TABLE , RENAME TABLE , TRUNCATE TABELA Uma leitura consistente não é isolada dessas instruções, portanto, o uso delas em uma tabela a ser despejada pode fazer com que o SELECT que é executado pelo mysqldump recupere o conteúdo da tabela para obter conteúdo incorreto ou falhe.

A opção –single -transaction e a opção –lock-tables são mutuamente exclusivas porque LOCK TABLES faz com que quaisquer transações pendentes sejam confirmadas implicitamente.

Para despejar tabelas grandes, combine a opção –single-transaction com a opção –quick .

Grupos de opções

  • A opção –opt ativa várias configurações que trabalham juntas para executar uma operação de despejo rápido. Todas essas configurações estão ativadas por padrão, porque –opt está ativado por padrão. Assim, você raramente ou nunca especifica –opt . Em vez disso, você pode desativar essas configurações como um grupo especificando –skip-opt e , opcionalmente, reativar determinadas configurações especificando as opções associadas posteriormente na linha de comando.
  • A opção –compact desativa várias configurações que controlam se declarações e comentários opcionais aparecem na saída. Novamente, você pode seguir esta opção com outras opções que reativam determinadas configurações ou ativam todas as configurações usando o formulário –skip-compact .

Quando você ativa ou desativa seletivamente o efeito de uma opção de grupo, a ordem é importante porque as opções são processadas da primeira à última. Por exemplo, –disable-keys –lock-tables –skip-opt não teria o efeito pretendido; é o mesmo que – skip-opt por si só.

Notas de uso

  • Para selecionar o efeito de –opt, exceto em alguns recursos, use a opção –skip para cada recurso. Para desativar inserções estendidas e buffer de memória, use –opt –skip-extended-insert – skip-quick . (Na verdade, –skip-extended-insert –skip-quick é suficiente porque –opt está ativado por padrão.)
  • Para inverter –opt para todos os recursos, exceto a desabilitação do índice e o bloqueio de tabela, use –skip-opt –disable-keys –lock-tables .

Restrições

  • O mysqldump não despeja o banco de dados INFORMATION_SCHEMA por padrão. Para despejar o arquivo INFORMATION_SCHEMA , nomeie-o explicitamente na linha de comandos e também use a opção –skip-lock-tables .
  • O mysqldump nunca despeja o banco de dados performance_schema.
  • O mysqldump também não despeja o banco de dados de informações do MySQL Cluster ndbinfo.
  • Antes do MySQL 5.6.6, o mysqldump não despeja as tabelas general_log ou slow_query_log para despejos do banco de dados mysql. A partir da versão 5.6.6, o dump inclui instruções para recriar essas tabelas para que elas não estejam ausentes após o recarregamento do arquivo de dump. O conteúdo da tabela de log não é despejado.

Exemplos

 mysqldump db_name> backup-file.sql

Faça backup do banco de dados inteiro db_name no arquivo backup-file.sql .

 mysql nome_do_db <arquivo-de-backup.sql

Carregue o arquivo de backup backup-file.sql no banco de dados db_name .

 mysql -e "source /path-to-backup/backup-file.sql" nome do banco de dados

Essa é outra maneira de fazer a mesma coisa que o exemplo anterior (carregar o arquivo de backup no banco de dados).

mysqldump --opt nome_bd | mysql --host = host_ remoto -C nome do banco de dados

Preencha o banco de dados do servidor mysql remoto db_name com o banco de dados local db_name .

 mysqldump --databases db_name1 [db_name2 ...]> my_databases.sql

O comando acima despeja vários bancos de dados ( db_name1 , db_name2 …) no arquivo de backup único my_databases.sql .

 mysqldump --all-database> all_databases.sql

Despeja todos os bancos de dados no arquivo de backup all_databases.sql .

myisamchk – Verifica, repara, otimiza ou busca informações sobre um banco de dados MySQL.
mysql – Um sistema de gerenciamento de banco de dados relacional de código aberto.

Categorias
Compartilhe esse post

Posts populares

Linux Force Security Cursos de linux e segurança da informação

Seu futuro na tecnologia começa agora! Não deixe essa chance escapar.