O artefato de backup que vem com o mysql - mysqldump

Prefácio

Em muitos casos, precisaremos realizar operações como transferência de backup para o mysql. Existem muitas maneiras de fazer backup, uma das quais é o próprio mysql, que é o mysqldump.

Comando Mysqldump

A ferramenta mysqldump é um aplicativo cliente que vem com o mysql, no diretório / bin do diretório de instalação do mysql. mysqldump é usado para backup lógico.Ele pode gerar um conjunto de instruções SQL.Executando essas instruções pode regenerar as definições de objeto de banco de dados originais e dados da tabela. mysqldump é freqüentemente usado para despejar um ou mais bancos 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.

mysqldump precisa de pelo menos a permissão SELECT da tabela dump, a permissão SHOW VIEW da visão dump, e a permissão do gatilho do dump. Se a opção --single-transaction não for usada, a tabela está bloqueada. A opção -no-tablespaces não é usada, então (a partir do MySQL 5.7.31) as permissões de processo. Algumas opções podem exigir outros privilégios mencionados na descrição da opção.

As vantagens do mysqldump incluem a conveniência e flexibilidade de visualizar e até mesmo editar a saída antes da recuperação. Você pode clonar o banco de dados para desenvolvimento e trabalho de DBA ou fazer pequenas alterações no banco de dados existente para teste. Mas não é uma solução rápida ou escalonável para fazer backup de grandes quantidades de dados. Para big data, mesmo que a etapa de backup leve um tempo razoável, a restauração dos dados será muito lenta, porque a repetição de instruções SQL envolve E / S de disco para inserir, criar índices, etc.

Para backup e recuperação em grande escala, o backup físico é mais adequado.O backup físico pode copiar arquivos de dados em um formato original que pode ser restaurado rapidamente.

Sintaxe de chamada

Normalmente, há três maneiras de usar mysqldump-dump em um grupo ou várias tabelas, despejar um grupo ou vários bancos de dados completos ou despejar um servidor MySQL completo - como segue:

shell> mysqldump [options] db_name [tbl_name ...]
shell> mysqldump [options] --databases db_name ...
shell> mysqldump [options] --all-databases

Para ver a lista de opções suportadas por sua versão do mysqldump, use o comando mysqldump --help para ver

As opções acima geralmente são o usuário e a senha do banco de dados. Geralmente, há duas maneiras

Método 1: Não há necessidade de escrever manualmente a senha no comando, use -u nome de usuário -p, desta forma executará o comando e nos permitirá inserir a senha

gramática:

mysqldump -u 用户名 -p 数据库名 > (目录)导出文件名

Exemplos:

[root@localhost mysql-5.7.24]# mysqldump -uroot -p  --all-databases > dump.sql

Método 2: digite a senha diretamente no comando, -u seguido pelo nome de usuário, -p seguido por um espaço e, em seguida, digite a senha

gramática:

mysqldump -u用户 -p 密码 数据库名 > (目录)导出文件名

Instância

[root@localhost bin]# mysqldump -uroot -proot --all-databases > dbdump.sql

Nota: Não pode haver espaços após -p. Você precisa escrever a senha diretamente. Depois de executar o comando, o seguinte prompt aparecerá, o que significa que usar a senha na interface de linha de comando não é seguro.

mysqldump: [Warning] Using a password on the command line interface can be insecure.

Use mysqldump para backup

O seguinte descreve como usar o mysqldump para gerar um arquivo de despejo e como recarregar o arquivo de despejo. O arquivo de despejo pode ser usado de várias maneiras:

1、作为备份,以便在数据丢失的情况下恢复数据。

2、作为设置副本的数据源。

3、作为实验数据的来源:

 - 制作可在不更改原始数据的情况下使用的数据库副本。
 - 测试潜在的升级不兼容性。

Use mysqldump para despejar dados no formato SQL

O seguinte descreve como usar o mysqldump para criar um arquivo dump no formato SQL.

Por padrão, o mysqldump grava informações na saída padrão como instruções SQL. Você pode salvar a saída em um arquivo:

shell> mysqldump [arguments] > file_name

Para despejar todos os bancos de dados, chame mysqldump – all-databases com as seguintes opções:

shell> mysqldump --all-databases > dump.sql

Para despejar apenas bancos de dados específicos, nomeie-os na linha de comando e use a opção --databases:

shell> mysqldump --databases db1 db2 db3 > dump.sql

A opção –databases faz com que todos os nomes na linha de comando sejam tratados como nomes de banco de dados. Sem esta opção, mysqldump usa o primeiro nome como o nome do banco de dados e os seguintes nomes como o nome da tabela.

Ao usar --all-databases ou --databases, mysqldump grava as instruções CREATE DATABASE e USE antes da saída do dump de cada banco de dados. Isso garante que, quando o arquivo de despejo for recarregado, se o arquivo de despejo não existir, ele criará cada banco de dados e o definirá como o banco de dados padrão para que o conteúdo do banco de dados possa ser carregado no mesmo banco de dados de onde veio. Se você deseja que o arquivo de despejo exclua forçosamente cada banco de dados antes de criar cada banco de dados, use também a opção --add-drop-database.

Para despejar um único banco de dados, nomeie-o na linha de comando:

shell> mysqldump --databases test > dump.sql

No caso de um único banco de dados, a seguinte opção --databases pode ser ignorada:

shell> mysqldump test > dump.sql

A diferença entre os dois comandos anteriores é que, se não houver bancos de dados, a saída de dump não conterá as instruções CREATE DATABASE ou USE. Isso tem várias implicações:

1、重新加载转储文件时,必须指定默认数据库名称,以便服务器知道要重新加载哪个数据库。

2、对于重新加载,您可以指定与原始名称不同的数据库名称,这使您能够将数据重新加载到不同的数据库中。

3、如果要重新加载的数据库不存在,则必须先创建它。

4、因为输出不包含CREATE DATABASE语句,所以——add-drop-database选项不起作用。如果您使用它,它不会产生DROP DATABASE语句。

Para despejar apenas uma tabela específica no banco de dados, nomeie-a na linha de comando após o nome do banco de dados:

shell> mysqldump test t1 t3 t7 > dump.sql

Despejar definição e conteúdo da tabela separadamente

A opção -no-data diz ao mysqldump para não fazer dump dos dados da tabela, o que faz com que o arquivo de dump contenha apenas instruções de criação de tabela. Em vez disso, a opção –no-create-info diz ao mysqldump para não produzir instruções CREATE, de forma que o arquivo de despejo contenha apenas dados da tabela.

Por exemplo, para despejar a definição da tabela e os dados do banco de dados de teste separadamente, use o seguinte comando:

shell> mysqldump --no-data test > dump-defs.sql
shell> mysqldump --no-create-info test > dump-data.sql

Para um dump definido, adicionar opções --routines e --events também pode incluir procedimentos armazenados e definições de eventos:

shell> mysqldump --no-data --routines --events test > dump-defs.sql

Recarregue o backup no formato SQL

Para recarregar o arquivo de despejo contendo instruções SQL escritas por mysqldump, use-o como entrada para o cliente mysql. Se o arquivo de despejo foi criado por mysqldump com a opção --all-databases ou --databases, ele contém as instruções CREATE DATABASE e USE, e não há necessidade de especificar um banco de dados padrão para carregar dados nele:

Exemplo:

shell> mysql < dump.sql

Ou use o comando source no mysql:

mysql> source dump.sql

Se o arquivo for um único despejo de banco de dados que não contém as instruções CREATE DATABASE e USE, crie o banco de dados primeiro:

shell> mysqladmin create db1

Em seguida, especifique o nome do banco de dados ao carregar o arquivo de despejo:

shell> mysql db1 < dump.sql

Copie o banco de dados de um servidor para outro

No servidor 1:

shell> mysqldump --databases db1 > dump.sql

Copie o arquivo de despejo do servidor 1 para o servidor 2.

No servidor 2:

shell> mysql < dump.sql

Acho que você gosta

Origin blog.csdn.net/qq_36551991/article/details/111409411
Recomendado
Clasificación