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
. See
Secção 4.9.8, “mysqlhotcopy
, Copiando Bancos de Dados e Tabelas do
MySQL”.
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 MySQL muito antigo, você não
deve utilizar as opções --opt
ou
-e
.
mysqldump
suporta as seguintes opções:
--add-locks
Adicione LOCK TABLES
antes de
UNLOCK TABLE
depois de cada descarga de
tabelas. (Para obter inserções mais rápidas no MySQL.)
--add-drop-table
Adicione um drop table
antes de cada
instrução create.
-A, --all-databases
Descarrega todos os bancos de dados. Isto irá ser o mesmo
que --databases
com todos os bancos de
dados selecionados.
-a, --all
Inclui todas as opções do create específicas do MySQL.
--allow-keywords
Permite 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-insert
Utilize instruções de insert completas (com nomes de colunas).
-C, --compress
Compacta todas as informações entre o cliente e o servidor se ambos suportarem a compactação.
-B, --databases
Para 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.
--delayed
Insere registros com o comando INSERT
DELAYED
.
-e, --extended-insert
Utiliza 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).
--help
Exibe 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
-T
e tem o mesmo significado que as
cláusulas correspondentes em LOAD DATA
INFILE
See Secção 6.4.8, “Sintaxe LOAD DATA INFILE
”.
-F, --flush-logs
Atualiza o arquivo de log no servidor MySQL 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 MySQL 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 LOCAL
para permitir inserções concorrentes no caso de tabelas
MyISAM
.
Por favor, note que ao descarregar multiplas tabelas,
--lock-tables
bloqueará 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 MySQL 4.0 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
--databases
ou
--all-databases
for fornecida.
-t, --no-create-info
Não grava informações de criação de tabelas (A
instrução CREATE TABLE
.)
-d, --no-data
Não grava nenhuma informação de registros para a tabela. Isto é muito útil se você desejar apenas um dump da estrutura da tabela!
--opt
O 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
', o
mysqldump
irá perguntar por uma senha.
-P port_num, --port=porta_num
O 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, --quick
Não utiliza buffers para as consultas, descarrega
diretamente para saída padrão. Utilize
mysql_use_result()
para fazer isto.
-Q, --quote-names
Coloca 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-transaction
Esta opção envia um comando SQL BEGIN
antes de carregar os dados do servidor. Ele é mais útil
com tabelas InnoDB
e nível
READ_COMMITTED
de 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 o
BEGIN
for 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
MyISAM
ou HEAP
na qual
for feito um dump durante está p[ção pode ainda mudar de
estado.
A opção --single-transaction
foi
adicionada na versão 4.0.2. Esta opção é mutualmente
exclusiva com a opção --lock-tables
já
que LOCK TABLES
já faz um commit da
transação anterior internamente.
-S /path/to/socket,
--socket=/path/to/socket
O arquivo socket que será utilizado quando conectar à
localhost
(que é a máquina padrão).
--tables
Sobrepõe a opção --databases (-B).
-T, --tab=path-to-some-directory
Cria um arquivo nome_tabela.sql
, que
contém os comandos SQL CREATE e um arquivo
nome_tabela.txt
, que contém os dados,
para cada tabela dada. O formato do arquivo
.txt
é feito de acordo com as opções
--fields-xxx
e
--lines--xxx
.
Nota: Esta opção só
funciona se mysqldump
está sendo
executado na mesma máquina que o daemon
mysqld
. Você deve usar uma conta MySQL
que tem o privilégio FILE
, e o login de
usuário/grupo com o qual o mysqld
está
sendo executado (normalmente usuário
mysql
, grupo mysql
)
precisa ter permissão para criar/gravar um arquivo no local
especificado.
-u user_name, --user=user_name
O nome do usuário do MySQL para usar ao conectar ao servidor. O valor padrão é seu nome de usuário no Unix.
-O nome=valor, --set-variable=nome=valor
Confirgura o valor de uma variável. As variáveis
possíveis são listadas abaixo. Note que a sintaxe
--set-variable=nome=valor
e -O
nome=valor
está obsoleto desde o MySQL 4.0. Use
--nome=valor
.
-v, --verbose
Modo verbose. Exibe mais informações sobre o que o programa realiza.
-V, --version
Exibe 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, --xml
Faz um dump do banco de dados no formato XML
-x, --first-slave
Faz um lock de todas as tabelas de todos os bancos de dados.
--master-data
Como --first-slave
, mas também exibe algum
comando CHANGE MASTER TO
o 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 # < 16M
Quando estiver criando instruções de inserções em
múltiplas linhas (com a opção
--extended-insert
ou
--opt
), mysqldump
irá
criar linhas até o tamanho de
net_buffer_length
. Se você aumentar esta
variável, você também deve se assegurar que a variável
max_allowed_packet
no servidor MySQL é
maior que a net_buffer_length
.
O uso mais comum do mysqldump
é
provavelmente para fazer backups de bancos de dados inteiros.
See Secção 4.5.1, “Backups dos Bancos de Dados”.
mysqldump --opt banco_dados > arquivo-backup.sql
Você pode ler de volta no MySQL 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 MySQL 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:
mysqldump --all-databases > todos_bancos_dados.sql
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.