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