edifonttes/mysql-backup-manager

Biblioteca PHP para backup de banco de dados MySQL com suporte a SQL e ZIP

Installs: 8

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/edifonttes/mysql-backup-manager

v1.2.0 2025-12-06 08:12 UTC

This package is auto-updated.

Last update: 2025-12-06 08:58:53 UTC


README

Biblioteca PHP moderna para backup de bancos de dados MySQL com suporte a múltiplos formatos e integração com Google Drive.

✨ Características

  • 🗄️ Backup completo (estrutura + dados)
  • 📦 Múltiplos formatos (SQL, ZIP)
  • ☁️ Google Drive integrado (opcional)
  • 📤 HTTP POST para envio remoto
  • 🔔 Webhooks para notificações em tempo real
  • 🔧 Modular e extensível
  • Fácil de usar
  • 🧪 Testado e documentado

📋 Requisitos

  • PHP >= 7.4
  • Extensão PDO MySQL
  • Extensão ZIP
  • Composer

🚀 Instalação

composer require edifonttes/mysql-backup-manager

Ou adicione manualmente ao seu composer.json:

{
    "require": {
        "edifonttes/mysql-backup-manager": "^1.2"
    }
}

Com Google Drive (opcional):

composer require google/apiclient:^2.15

💡 Uso Básico

Backup SQL:

<?php
require 'vendor/autoload.php';

use MysqlBackup\BackupManager;
use MysqlBackup\Config\BackupConfig;

$config = new BackupConfig([
    'host' => 'localhost',
    'database' => 'meu_banco',
    'username' => 'root',
    'password' => 'senha',
    'backup_path' => __DIR__ . '/backups'
]);

$manager = new BackupManager($config);

// Backup em SQL
$arquivo = $manager->backupToSql();
echo "Backup criado: {$arquivo}";

Backup ZIP:

// Backup compactado
$arquivo = $manager->backupToZip();

Com Google Drive:

use MysqlBackup\Storage\GoogleDriveStorage;

$storage = new GoogleDriveStorage(
    __DIR__ . '/credentials.json',
    'ID_DA_PASTA' // opcional
);

$manager->setStorage($storage);
$arquivo = $manager->backupToZip(); // Local + Google Drive

Com HTTP POST (envio remoto):

use MysqlBackup\Storage\HttpPostStorage;

$storage = new HttpPostStorage(
    'https://seu-servidor.com/backup/receive-backup.php',
    [],
    ['token' => 'seu_token_seguro']
);

$manager->setStorage($storage);
$arquivo = $manager->backupToZip(); // Local + envio remoto

Com Webhooks (notificações):

use MysqlBackup\Notifications\WebhookNotifier;

$webhook = new WebhookNotifier([
    'https://seu-servidor.com/webhook'
]);

try {
    $arquivo = $manager->backupToZip();
    
    // Notifica sucesso
    $webhook->notifySuccess([
        'file' => basename($arquivo),
        'size_mb' => 12.5
    ]);
} catch (Exception $e) {
    // Notifica falha
    $webhook->notifyFailure($e->getMessage());
}

📚 Exemplos Avançados

Esta biblioteca inclui exemplos prontos para produção em docs/examples/:

📂 Copie para sua aplicação:

# Scripts de Cron (CLI e CURL)
cp -r vendor/seu-usuario/mysql-backup/docs/examples/cron ./

# Sistema de Webhooks
cp -r vendor/seu-usuario/mysql-backup/docs/examples/webhooks ./

# Configuração
cp vendor/seu-usuario/mysql-backup/docs/examples/config/.env.example ./.env

# Scripts utilitários
cp vendor/seu-usuario/mysql-backup/docs/examples/scripts/* ./

🎯 O que está incluído:

Cron Jobs:

  • ✅ Backup diário automático
  • ✅ Backup semanal com rotação
  • ✅ Múltiplos bancos de dados
  • ✅ Limpeza de backups antigos
  • ✅ Suporte CLI e CURL

Webhooks Internos:

  • ✅ Registro automático de eventos
  • ✅ Formatos: JSON, CSV, TXT
  • ✅ Visualizador web
  • ✅ API para integração

Scripts Úteis:

  • ✅ Instalador de cron jobs
  • ✅ Testes automatizados
  • ✅ Configuração facilitada

📖 Documentação Completa

Guias detalhados disponíveis em docs/guides/:

⚙️ Configuração

BackupConfig:

$config = new BackupConfig([
    'host' => 'localhost',      // Host do banco
    'database' => 'database',   // Nome do banco
    'username' => 'root',       // Usuário
    'password' => 'senha',      // Senha
    'port' => 3306,            // Porta (padrão: 3306)
    'charset' => 'utf8mb4',    // Charset (padrão: utf8mb4)
    'backup_path' => '/path'   // Onde salvar
]);

🔧 Opções Avançadas

Backup com nome personalizado:

$manager->backupToSql('meu_backup_custom.sql');
$manager->backupToZip('meu_backup_custom.zip');

Listar arquivos no Google Drive:

$files = $storage->listFiles(10);
foreach ($files as $file) {
    echo $file->getName() . "\n";
}

Deletar arquivo do Drive:

$storage->deleteFile('ID_DO_ARQUIVO');

🎯 Casos de Uso

Backup Agendado (Cron):

# Todo dia às 2h
0 2 * * * /usr/bin/php /caminho/cron/daily-backup.php

Backup via CURL (Hospedagem compartilhada):

# CPanel, Plesk, etc
0 2 * * * curl -s "https://seu-site.com/cron/daily-backup.php?token=TOKEN"

Múltiplos Bancos:

$databases = ['db1', 'db2', 'db3'];

foreach ($databases as $db) {
    $config->setDatabase($db);
    $manager = new BackupManager($config);
    $manager->backupToZip();
}

🧪 Testes

# Instale dependências de dev
composer install --dev

# Execute testes
vendor/bin/phpunit

# Com coverage
vendor/bin/phpunit --coverage-html coverage

🤝 Contribuindo

Contribuições são bem-vindas! Por favor:

  1. Fork o projeto
  2. Crie uma branch para sua feature (git checkout -b feature/nova-feature)
  3. Commit suas mudanças (git commit -am 'Add nova feature')
  4. Push para a branch (git push origin feature/nova-feature)
  5. Abra um Pull Request

📝 Changelog

Veja CHANGELOG.md para histórico de versões.

Últimas versões:

  • 1.2.0 - Integração para envio remoto (HTTP POST), Webhooks para notificações em tempo real
  • 1.1.0 - Integração Google Drive, exemplos de cron
  • 1.0.0 - Release inicial com backup SQL e ZIP

📄 Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.

🙏 Agradecimentos

🌟 Star History

Se esta biblioteca foi útil, considere dar uma ⭐ no GitHub!

Desenvolvido com ❤️ para a comunidade PHP