2017 © Pedro Peláez
 

package backup-manager

Backup manager for Laravel

image

mrtnsn/backup-manager

Backup manager for Laravel

  • Tuesday, February 6, 2018
  • by mrtnsn
  • Repository
  • 0 Watchers
  • 0 Stars
  • 66 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 4 Open issues
  • 9 Versions
  • 18 % Grown

The README.md

💼 Backup Manager for Laravel

Latest Version on Packagist Total Downloads, (*1)

Easy to use backup manager for Laravel., (*2)

Features - Quick installation - Integration with Laravels queue and filesystem - Support for multiple Laravel versions (5.1 => 5.5) - Each table is stored in it's own file - Chunking of large tables, (*3)

:fire: Breaking changes

In version 2.0.0 we changed how the backup files are created meaning that backups created before 2.0.0 can't be automatically imported. They can still be manually imported., (*4)

Installation

Composer

composer require mrtnsn/backup-manager

Provider

Add the service provider to providers in config/app.php so that it's registered in your Laravel application., (*5)

Mrtnsn\BackupManager\BackupManagerProvider::class,

Publish

If you need to change the default config you have to publish the config file., (*6)

php artisan vendor:publish --provider="Mrtnsn\BackupManager\BackupManagerProvider"

Usage

Commands

The package exposes two artisan commands, one for export and one for import., (*7)

Export

Export will use your current credentials and config to export the database to your desired location. This is done by creating a schema file from the database, then each table is inspected and split into chunks. Each chunk and the schema is uploaded to the desired location., (*8)

This command gives no feedback since it's meant to be run from the scheduler. This prevent filling up log files with unnecessary data., (*9)

The command can be execute manually with a custom tag, this can be useful if multiple developers are testing different databases on a staging server and need to quickly change between them., (*10)

Running it from schedule (app/Console/Kernel.php)
$schedule->command('backup-manager:export')
    ->daily();
Running it manually
php artisan backup-manager:export
Running it manually with custom tag
php artisan backup-manager:export --tag=newFeature

Import

Import will use your current credentials and config to import a selected backup., (*11)

This command is built to be run manually as it needs feedback to get the right backup., (*12)

You get to choose which subFolder and which version you want to restore. After this is selected it will loop through all files matching those parameteres and drop the table before importing it again., (*13)

This will cause minimal downtime as it only affects one table at a time., (*14)

Running it manually
php artisan backup-manager:import

Default config

Setting Default Description
disk local The Laravel filesystems disk to use
rootFolder backup-manager The root folder where all backups will be stored
subFolder date('Y-m-d') The sub folder all the backups for that instance will be stored in.
tag env('APP_ENV') Tag is added after the table name and before the version (e.g. {table}{tag}_1, {table}{tag}_2, etc.)
overwrite false If false the version will be incremented for each new save within the same sub folder. If true only version 1 will exist and each new save within the same sub folder will overwrite the content.
visibility private Visibility of the file, recommended to leave this as private. For more info take a look at the flysystem API: https://flysystem.thephpleague.com/api/
timestampFormat Y-m-d H:i:s This format is used for displaying the timestamps of imports
ignoreTables [] Tables you want to ignore from the backup.
chunkSize 50 How many MB each chunk of the data can be
mysqlGlobalSettings [] Here you can set global MySQL config if need, e.g. SET SQL_MODE="ALLOW_INVALID_DATES"

Roadmap

  • Tests
  • backup-manager:inspect to see files and info about a backup
  • Notification system for failed backups
  • Support for PostgreSQL

The Versions