mysqldump, Descarregando a Estrutura de Tabelas e Dados
Utilitário para descarregar um banco de dados ou uma coleção de bancos de dados para backup ou transferencia para outro servidor SQL (Não necessariamente um servidor MySQL). A descarga irá conter instruções SQL para cria a tabela e/ou popular a tabela.
Se a idéia é backup do servidor, deve ser considerada a utilização do mysqlhotcopy. Leia "mysqlhotcopy, Copiando Bancos de Dados e Tabelas do MariaDB".
shell> mysqldump [OPÇÕES] banco_de_dados [tabelas]
OR mysqldump [OPÇÕES] --databases [OPÇÕES] BD1 [BD2 BD3...]
OR mysqldump [OPÇÕES] --all-databases [OPÇÕES]
Se você não fornecer nenhuma tabela ou utilizar o --databases ou --all-databases, todo(s) o(s) banco(s) de dados será(ão) descarregado(s).
Você pode obter uma lista das opções que sua versão do mysqldump suporta executando mysqldump --help.
Perceba que se você executar o mysqldump sem a opção --quick ou --opt, o mysqldump irá carregar todo o conjunto do resultado na memória antes de descarregar o resultado. Isto provavelmente será um problema se você está descarregando um banco de dados grande.
Note que se você estiver utilizando uma cópia nova do programa mysqldump e se você for fazer uma descarga que será lida em um servidor MariaDB muito antigo, você não deve utilizar as opções --opt ou -e.
mysqldump suporta as seguintes opções:
--add-locksAdicione
LOCK TABLESantes deUNLOCK TABLEdepois de cada descarga de tabelas. (Para obter inserções mais rápidas no MariaDB.)--add-drop-tableAdicione um
drop tableantes de cada instrução create.-A, --all-databasesDescarrega todos os bancos de dados. Isto irá ser o mesmo que
--databasescom todos os bancos de dados selecionados.-a, --allInclui todas as opções do create específicas do MariaDB.
--allow-keywordsPermite criação de nomes que colunas que são palavras chaves. Isto funciona utilizando o nome da tabela como prefixo em cada nome de coluna.
-c, --complete-insertUtilize instruções de insert completas (com nomes de colunas).
-C, --compressCompacta todas as informações entre o cliente e o servidor se ambos suportarem a compactação.
-B, --databasesPara descarregar diversos bancos de dados. Perceba a diferença no uso. Neste caso nenhuma tabela é fornecida. Todos argumentos são estimados como nomes de bancos de dados.
USE nome_bd;será incluído na saída antes de cada banco de dados novo.--delayedInsere registros com o comando
INSERT DELAYED.-e, --extended-insertUtiliza a nova sintaxe multilinhas
INSERT. (Fornece instruções de inserção mais compactas e mais rápidas.)-#, --debug[=option_string]Rastreia a utilização do programa (para depuração).
--helpExibe uma mensagem de ajuda e sai.
--fields-terminated-by=...,--fields-enclosed-by=...,--fields-optionally-enclosed-by=...,--fields-escaped-by=...,--lines-terminated-by=...Estas opções são usadas com a opção
-Te tem o mesmo significado que as cláusulas correspondentes emLOAD DATA INFILELeia "SintaxeLOAD DATA INFILE".-F, --flush-logsAtualiza o arquivo de log no servidor MariaDB antes de iniciar a descarga.
-f, --force,Continue mesmo se obter um erro de SQL durantes uma descarga de tabela.
-h, --host=..Descarrega dados do servidor MariaDB na máquina especificada. A máquina padrão é
localhost.-l, --lock-tables.Bloqueia todas as tabelas antes de iniciar a descarga. As tabelas são bloqueadas com
READ LOCALpara permitir inserções concorrentes no caso de tabelasMyISAM.Por favor, note que ao descarregar multiplas tabelas,
--lock-tablesbloqueará as tabelas de cada banco de dados separadamente. Assim, usar esta opção não garantirá que suas tabelas sejam logicamente consistentes entre os banco de dados. Tabela me diferentes bancos de dados podem ser descarregadas em estados completamente diferentes.-K, --disable-keys/*!40000 ALTER TABLE nome_tb DISABLE KEYS */;e/*!40000 ALTER TABLE nome_tb ENABLE KEYS */;será colocado na saída. Isto fará com que a carga de dados no MariaDB server seja mais rápida já que os índices são criados depois que todos os dados são inseridos.-n, --no-create-db'CREATE DATABASE /*!32312 IF NOT EXISTS*/ nome_bd;'não será colocado na saída. A linha acima será adicionada se a opção--databasesou--all-databasesfor fornecida.-t, --no-create-infoNão grava informações de criação de tabelas (A instrução
CREATE TABLE.)-d, --no-dataNão grava nenhuma informação de registros para a tabela. Isto é muito útil se você desejar apenas um dump da estrutura da tabela!
--optO mesmo que
--quick --add-drop-table --add-locks --extended-insert --lock-tables. Fornece a descarga mais rápida para leitura em um servidor MySQL.-pyour_pass, --password[=sua_senha]A senha para usar quando conectando ao servidor. Se não for especificado a parte '
=sua_senha', omysqldumpirá perguntar por uma senha.-P port_num, --port=porta_numO número da porta TCP/IP usado para conectar a uma máquina. (Isto é usado para conexões a máquinas diferentes de
localhost, na qual sockets Unix são utilizados.)-q, --quickNão utiliza buffers para as consultas, descarrega diretamente para saída padrão. Utilize
mysql_use_result()para fazer isto.-Q, --quote-namesColoca os nomes de colunas e tabelas entre '
`'.-r, --result-file=...Direcione a saída para um determinado arquivo. Esta opção deve ser usada no MSDOS porque previne a conversão de nova linha '\n' para '\n\r' (nova linha + retorno de carro).
--single-transactionEsta opção envia um comando SQL
BEGINantes de carregar os dados do servidor. Ele é mais útil com tabelasInnoDBe nívelREAD_COMMITTEDde isolação da transação, já que neste modo ela fará um dump do estado de consistência do banco de dados no momento que oBEGINfor enviado sem bloquear qualquer aplicação.Ao usar esta opção você deve manter em mente que será feito um dump no estado consistente apenas das tabelas transacionais, ex., qualquer tabela
MyISAMouHEAPna qual for feito um dump durante está p[ção pode ainda mudar de estado.A opção
--single-transactionfoi adicionada na versão 4.0.2. Esta opção é mutualmente exclusiva com a opção--lock-tablesjá queLOCK TABLESjá faz um commit da transação anterior internamente.-S /path/to/socket, --socket=/path/to/socketO arquivo socket que será utilizado quando conectar à
localhost(que é a máquina padrão).--tablesSobrepõe a opção --databases (-B).
-T, --tab=path-to-some-directoryCria um arquivo
nome_tabela.sql, que contém os comandos SQL CREATE e um arquivonome_tabela.txt, que contém os dados, para cada tabela dada. O formato do arquivo.txté feito de acordo com as opções--fields-xxxe--lines--xxx. Nota: Esta opção só funciona semysqldumpestá sendo executado na mesma máquina que o daemonmysqld. Você deve usar uma conta MariaDB que tem o privilégioFILE, e o login de usuário/grupo com o qual omysqldestá sendo executado (normalmente usuárioMariaDB, grupoMariaDB) precisa ter permissão para criar/gravar um arquivo no local especificado.-u user_name, --user=user_nameO nome do usuário do MariaDB para usar ao conectar ao servidor. O valor padrão é seu nome de usuário no Unix.
-O nome=valor, --set-variable=nome=valorConfirgura o valor de uma variável. As variáveis possíveis são listadas abaixo. Note que a sintaxe
--set-variable=nome=valore-O nome=valorestá obsoleto desde o MariaDB 4.0. Use--nome=valor.-v, --verboseModo verbose. Exibe mais informações sobre o que o programa realiza.
-V, --versionExibe informações de versão e sai.
-w, --where='where-condition'Faz um dump apenas dos registros selecionados. Note que as aspas são obrigatórias:
'--where=user='jimf'' '-wuserid>1' '-wuserid<1'
-X, --xmlFaz um dump do banco de dados no formato XML
-x, --first-slaveFaz um lock de todas as tabelas de todos os bancos de dados.
--master-dataComo
--first-slave, mas também exibe algum comandoCHANGE MASTER TOo qual, mais tarde, fará o seu slave iniciar a partir da posição certa no log binário do master, se você tiver configurado o seu slave usando este dump SQL do master.-O net_buffer_length=#, where # < 16MQuando estiver criando instruções de inserções em múltiplas linhas (com a opção
--extended-insertou--opt),mysqldumpirá criar linhas até o tamanho denet_buffer_length. Se você aumentar esta variável, você também deve se assegurar que a variávelmax_allowed_packetno servidor MariaDB é maior que anet_buffer_length.
O uso mais comum do mysqldump é provavelmente para fazer backups de bancos de dados inteiros. Leia "Backups dos Bancos de Dados".
mysqldump --opt banco_dados > arquivo-backup.sql
Você pode ler de volta no MariaDB com:
mysql banco_dados < arquivo-backup.sql
ou
mysql -e 'source /path-to-backup/backup-file.sql' database
Entretanto, é muito útil também popular outro servidor MariaDB com informações de um banco de dados:
mysqldump --opt banco_dados | mysql ---host=máquina-remota -C banco_dados
É possível descarregar vários bancos de dados com um comando:
mysqldump --databases banco_dados1 [banco_dados2 banco_dados3...] > meus_bancosdedados.sql
Se desejar descarregar todos os bancos de dados, pode-se utilizar: