Giter Club home page Giter Club logo

database-backup's Introduction

This package is abandoned. This Backup Manager has fully replaced it.

Database Backup

A framework-agnostic database backup package.

Drivers: At this moment the package supports MySQL, gzip, and Amazon S3. However, it's modular and could be extended to support much more.

Frameworks: This package doesn't require a framework, but a Laravel service provider and Artisan command are made available for convenience.

Note: be aware that this package uses mysqldump for MySQL backups.

Example

Laravel users can run the following command if they'd like to backup the db, gzip it, upload it to s3, and remove the local backup file:

php artisan db:backup --s3-bucket=whatever --s3-path=/this/is/optional/ --cleanup --gzip

Non-Laravel users can look at the Usage section below.

Requirements

  • 5.4 (would openly accept pull requests to lower to 5.3)

Installation

Laravel

  1. add to composer.json

    "mccool/database-backup": "1.0.1"
  2. install dependency

    composer update
  3. install configuration file

    php artisan config:publish mccool/database-backup
  4. add service provider to config/app.php

    'McCool\DatabaseBackup\ServiceProviders\LaravelServiceProvider',
  5. add key / secret to the config file in app/config/packages/mccool/database-backup/aws.php

Native PHP

  1. add to composer.json

    "mccool/database-backup": "dev-master"
  2. install dependency

    composer update
  3. make sure that your app requires the composer autoloader

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

Usage

Laravel

Dump the database to app/storage/dumps/databasename_timestamp.sql

php artisan db:backup

Store the database to backups/databasename_timestamp.sql

php artisan db:backup --local-path=backups

Gzip the database.

php artisan db:backup --gzip

Choose a database to dump other than the default (names are configured in Laravel's config/database.php).

php artisan db:backup --database=otherdatabaseconnection

Choose a specific filename other than the default (default is 'Y-m-d_H-i-s' ). Note, do not include the file extension .sql, we will do that for you

php artisan db:backup --filename=my_project_backup

Upload the backup to S3

php artisan db:backup --s3-bucket=whatever --s3-path=/this/is/optional/

Cleanup file when we're done

php artisan db:backup --s3-bucket=whatever --s3-path=/this/is/optional/ --cleanup

Native PHP

<?php

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

// dump the database to backup/test.sql
$shellProcessor = new McCool\DatabaseBackup\Processors\ShellProcessor(new Symfony\Component\Process\Process(''));
$dumper = new McCool\DatabaseBackup\Dumpers\MysqlDumper($shellProcessor, 'localhost', 3306, 'username', 'password', 'test_db', 'backup/test.sql');

$backup = new McCool\DatabaseBackup\BackupProcedure($dumper);
$backup->backup();

// dump the database to backup/test.sql and gzip it
$shellProcessor = new McCool\DatabaseBackup\Processors\ShellProcessor(new Symfony\Component\Process\Process(''));
$dumper   = new McCool\DatabaseBackup\Dumpers\MysqlDumper($shellProcessor, 'localhost', 3306, 'username', 'password', 'test_db', 'backup/test.sql');
$archiver = new McCool\DatabaseBackup\Archivers\GzipArchiver($shellProcessor);

$backup = new McCool\DatabaseBackup\BackupProcedure($dumper);
$backup->setArchiver($archiver);

$backup->backup();

// dump the database to backup/test.sql, gzip it, upload it to S3, and clean up after ourselves
$shellProcessor = new McCool\DatabaseBackup\Processors\ShellProcessor(new Symfony\Component\Process\Process(''));
$dumper   = new McCool\DatabaseBackup\Dumpers\MysqlDumper($shellProcessor, 'localhost', 3306, 'username', 'password', 'test_db', 'backup/test.sql');
$archiver = new McCool\DatabaseBackup\Archivers\GzipArchiver($shellProcessor);
$storer   = new McCool\DatabaseBackup\Storers\S3Storer($awsKey, $awsSecret, 'us-east-1', $bucket, $s3Path);

$backup = new McCool\DatabaseBackup\BackupProcedure($dumper);
$backup->setArchiver($archiver);
$backup->setStorer($storer);

$backup->backup();
$backup->cleanup();

License

MIT

database-backup's People

Contributors

driesvints avatar grahamcampbell avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.