Acabei de ouvir sobre o mysqlpump - parece que ele foi lançado com o MySQL 5.7, no entanto o MySQL 5.7 ainda inclui o mysqldump . Ambos são programas de backup, mas alguém poderia resumir as principais diferenças? Existem cenários em que um deles pode funcionar melhor? O mysqldump será extinto para o mysqlpump?
17
Respostas:
Desde que eu estava pesquisando isso sozinho, aqui está um resumo do que encontrei.
De acordo com um post de 2015 da equipe de desenvolvimento do MySQL , as principais vantagens do mysqlpump são que ele pode usar vários threads em paralelo para acelerar o dumping e que não compartilha os requisitos de compatibilidade com versões anteriores do mysqldump, o que deve abrir a porta para mais informações. melhorias.
No entanto, a publicação alerta que o mysqlpump é "atualmente inseguro como uma substituição de backup de uso geral" porque threads individuais podem gerar suas seções do dump a partir de diferentes estados do banco de dados. Ele não menciona nenhum plano para descontinuar o mysqldump.
Giuseppe Maxia brincou com o mysqlpump em 2015 e descobriu que a velocidade de despejo era bastante pequena. Ele apreciou a nova capacidade de selecionar com precisão quais objetos despejar, mas observou que o carregamento do despejo de volta só pode ser feito com thread único e que (ao contrário do mysqldump) os despejos só podem ser carregados de volta nos bancos de dados com o mesmo nome.
fonte
mysqlpump
é um software de código fechado (futuro incerto). Uma alternativa Open Source paramysqlpump
é github.com/maxbube/mydumpermydumper
Também estive analisando as diferenças entre esses dois utilitários e, além do que é mencionado na resposta do @ Neil , parece que o mysqlpump também tem menos opções que o mysqldump , como não permitir o seguinte:
--compatible=
--tab
, e suas opções relacionadas:--fields-terminated-by=
--fields-enclosed-by=
--fields-optionally-enclosed-by=
--fields-escaped-by=
--lines-terminated-by=
--quote-names
--add-drop-trigger
--allow-keywords
--apply-slave-statements
--comments
--compact
--compatible
--create-options
--delete-master-logs
--disable-keys
--dump-date
--dump-slave
--enable-cleartext-plugin
--flush-logs
--flush-privileges
--force
--ignore-error
--include-master-host-port
--lock-all-tables
--lock-tables
--master-data
--no-autocommit
--no-tablespaces
--opt
--order-by-primary
--pipe
--quick
--quote-names
--set-gtid-purged
--shared-memory-base-name
--skip-add-drop-table
--skip-add-locks
--skip-comments
--skip-compact
--skip-disable-keys
--skip-extended-insert
--skip-opt
--skip-quick
--skip-quote-names
--skip-triggers
--skip-tz-utc
--verbose
--where
--xml
Por outro lado, o mysqlpump possui as seguintes opções que não estão disponíveis no mysqldump
--compress-output
--default-parallelism
--defer-table-indexes
--exclude-databases=
--exclude-events=
--exclude-routines=
--exclude-triggers=
--exclude-users=
--include-events=
--include-routines=
--include-triggers=
--include-users=
--parallel-schemas=
--skip-definer
--users
--watch-progress
Renomeado ou similar:
--no-data
no despejo ==--skip-dump-rows
na bomba--no-set-names
no dump não existe na bomba , mas seu sinônimo ---skip-set-charset
- existe nos dois--ignore-table=
no dump é principalmente--exclude-tables=
no pump, exceto que--exclude-tables
pode especificar todas as tabelas, separadas por vírgulas, e permite caracteres curinga (%
e_
)--tables
no dump é principalmente--include-tables=
no pump, exceto que--include-tables
pode especificar todas as tabelas, separadas por vírgulas, e permite caracteres curinga (%
e_
). Além disso,--tables
substitui--databases
no dump , enquanto--include-tables=
no pump não.--databases
no dump e no pump é principalmente--include-databases=
no pump, exceto que--include-databases
pode especificar todos os bancos de dados, separados por vírgulas, e permite caracteres curinga (%
e_
).fonte
Aqui está o resumo do que eu entendi entre as duas ferramentas de backup.
A definição para mysqldump dada na página de manual
O Mysqldump é muito fácil de usar e a sintaxe também é muito simples. Quando executamos isso, ele converte todas as linhas em consultas SQL e as imprime na saída padrão. Podemos redirecionar essa saída para um arquivo externo (>) ou usando uma opção - resultado-arquivo.
Por padrão, o mysqldump não despeja tabelas information_schema e nunca utiliza performance_schema. A principal desvantagem do mysqldump é que ele usa apenas um thread enquanto faz backup e restauração.
Mysqlpump é outro utilitário que foi introduzido no MySQL 5.7 com mais alguns recursos quando comparado com o mysqldump
A definição para mysqlpump dada na página de manual
Os principais recursos são
Processamento paralelo (multiencadeado) para acelerar o backup
Indicador de Progresso
Despejo de contas de usuário como (criar, conceder instruções não como inserções para o banco de dados do sistema MySQL)
Por padrão, o mysqlpump não faz backup de bancos de dados do sistema, como esquema de informações, esquema de desempenho e algumas tabelas de sistema do MySQL, a menos que mencionado explicitamente.
Ele também possui as opções –include-database, –exclude-database, –include-table, –exclude-table com correspondência de padrão (%).
Essas opções são mais convenientes para usuários que desejam fazer backup de apenas alguns objetos de um conjunto de dados inteiro.
Em geral, o mysqlpump divide seu trabalho em partes e cada uma é atribuída a uma fila multiencadeada.
Essa fila multithread é processada por N threads (por padrão, usa 2 threads).
Podemos definir um número de encadeamentos usando esta opção –default-parallelism e –parallel-schemas.
Enquanto restauração, ele usa um único thread que é o mesmo que mysqldump, falta restauração paralela.
Como complemento, temos mais uma ferramenta que executa paralelização no backup e na restauração (onde o mysqlpump e o mysqldump não têm), chamado mydumper e myloader . Isso será muito usado ao restaurar grandes conjuntos de dados.
Você pode encontrar mais alguns detalhes e suas opções úteis dessas ferramentas neste blog mysqldump vs mysqlpump vs mydumper .
fonte