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-locks
Adicione
LOCK TABLES
antes deUNLOCK TABLE
depois de cada descarga de tabelas. (Para obter inserções mais rápidas no MariaDB.)--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 MariaDB.
--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 emLOAD DATA INFILE
Leia "SintaxeLOAD DATA INFILE
".-F, --flush-logs
Atualiza 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 LOCAL
para permitir inserções concorrentes no caso de tabelasMyISAM
.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 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--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
', omysqldump
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 tabelasInnoDB
e nívelREAD_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 oBEGIN
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
ouHEAP
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á queLOCK 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 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-xxx
e--lines--xxx
. Nota: Esta opção só funciona semysqldump
está 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 omysqld
está sendo executado (normalmente usuárioMariaDB
, grupoMariaDB
) precisa ter permissão para criar/gravar um arquivo no local especificado.-u user_name, --user=user_name
O 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=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 MariaDB 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 comandoCHANGE 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 denet_buffer_length
. Se você aumentar esta variável, você também deve se assegurar que a variávelmax_allowed_packet
no 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: