mysql-dump-app
v1.0.0
Published
Backup MySQL com controle de views, rotinas, schema e dados
Maintainers
Readme
mysql-dump-app
Biblioteca Node.js para gerar backup (dump) de bancos MySQL com controle fino do que entra no arquivo: schema, dados, views, triggers e rotinas (procedures e functions). Pensada para quem precisa escolher tabelas, definir a ordem das views ou exportar só rotinas, por exemplo.
Instalação
npm install mysql-dump-appUso básico
Informe a conexão e, se quiser, o caminho do arquivo. O resto usa padrões sensatos (schema + dados + triggers + rotinas).
const mysqlDumpApp = require('mysql-dump-app');
await mysqlDumpApp({
connection: {
host: 'localhost',
user: 'root',
password: 'sua_senha',
database: 'meu_banco',
},
dumpToFile: './backup.sql',
});Para receber o resultado em memória em vez de gravar em arquivo, omita dumpToFile:
const result = await mysqlDumpApp({
connection: { host: '...', user: '...', password: '...', database: '...' },
});
console.log(result.dump.schema); // SQL do schema
console.log(result.dump.data); // SQL dos dados
console.log(result.dump.trigger); // SQL dos triggers
console.log(result.dump.routine); // SQL das procedures/functions
console.log(result.tables); // lista de tabelas processadasO que você pode controlar
- Schema – Incluir ou não as definições (CREATE TABLE e CREATE VIEW). Opção de pular views (
schema.view: false). - Views – Lista e ordem das views no dump (
dump.views: ['view_a', 'view_b']), útil quando uma view depende de outra. - Tabelas – Só algumas tabelas ou “todas exceto” (
dump.tables+dump.excludeTables). - Dados – Incluir ou não os INSERTs; filtros por tabela (
dump.data.where). - Triggers – Incluir ou não os triggers.
- Rotinas – Incluir procedures e/ou functions, com opções de DEFINER e DROP IF EXISTS.
- Arquivo – Gravar em arquivo (
dumpToFile) e, se quiser, comprimir (compressFile: true).
A referência completa das opções está nos tipos TypeScript em dist/mysql-dump-app.d.ts (gerado no build).
Exemplos prontos
A pasta exemplos/ traz vários cenários em Markdown com código que você pode copiar e colar:
| Exemplo | Descrição | |--------|------------| | 01-apenas-rotinas | Só stored procedures e/ou functions | | 02-apenas-views | Só o schema das views | | 03-apenas-dados | Só os dados (INSERTs), com opção de WHERE | | 04-apenas-schema | Só estrutura (tabelas + views) | | 05-schema-sem-views | Schema só com tabelas, sem views | | 06-rotinas-e-tabelas | Rotinas junto com schema e/ou dados | | 07-tabelas-especificas | Whitelist ou blacklist de tabelas | | 08-views-ordem-customizada | Views em ordem definida (dependências) | | 09-backup-completo | Backup completo com compactação |
Em todos os exemplos, basta trocar connection pelos dados do seu banco.
Opções principais (resumo)
Conexão (connection)
host,port,user,password,database(obrigatórios na prática)charset,ssl(opcionais)
Dump (dump)
tables– Lista de tabelas. ComexcludeTables: false= só essas (whitelist); comexcludeTables: true= todas exceto essas (blacklist).views– Lista de views na ordem desejada. Se tiver itens, só essas views entram no schema, nessa ordem. Vazio = todas as views.schema–falsepara não incluir schema. Se for objeto, pode terview: falsepara não incluir views, ou opções de formatação/tabela/view.data–falsepara não incluir dados. Se for objeto, aceitawhere,maxRowsPerInsertStatement,includeViewData, etc.trigger–falsepara não incluir triggers.routine–falsepara não incluir rotinas. Se for objeto:includeProcedures,includeFunctions,definer,dropIfExist,delimiter.
Saída
dumpToFile– Caminho do arquivo (ex.:'./backup.sql'ou'./backup.sql.gz').compressFile–truepara gerar arquivo gzip.
Resultado (DumpReturn)
O retorno da função tem a forma:
dump.schema– String SQL do schema ounull.dump.data– String SQL dos dados ounull.dump.trigger– String SQL dos triggers ounull.dump.routine– String SQL das rotinas ounull.tables– Array com as tabelas/views processadas (nome, schema, data, etc.).
TypeScript
O pacote exporta tipos. Após o build, as declarações ficam em dist/mysql-dump-app.d.ts. Em projeto TypeScript você pode importar:
import mysqlDumpApp from 'mysql-dump-app';Licença
MIT.
