dbrisinajumi/dbbackup

Sheduled MySQL database backups

dev-master 2022-04-15 09:32 UTC

This package is auto-updated.

Last update: 2024-12-15 15:36:35 UTC


README

##Install

Add the repository to composer.json

    "repositories": [
    {
      "type": "git",
      "url": "https://github.com/DBRisinajumi/db-backup.git"
    }
  ],

Add to require section

"require": {
   "dbrisinajumi/dbbackup": "dev-master"
},

##Database dumper

Usage via Yii2 console command and .env

Set the DB access variables in .env file

DB_ENV_MYSQL_DATABASE=dbname
DB_ENV_MYSQL_USER=dbname_php
DB_ENV_MYSQL_PASSWORD=secret
BACKUP_DUMP_FILE_NAME_FORMAT=weekday-number

//Optional - set dumper engine to mydumper instead default mysqldump 
BACKUP_DUMP_ENGINE=mydumper

Add the controller to config/console.php

'controllerMap' => [
        'backup' => [
            'class' => 'DbBackup\controllers\yii2\BackupController',
        ],

Example cron command

0 4 * * *  /usr/bin/php [SITE PATH]/yii backup/dump -i=daily >> [SITE PATH]/vendor/dbrisinajumi/dbbackup/runtime/log/db-dump-daily.log 2>&1

Usage via custom script

use DbBackup\Dumper;

// include your own config files with access constants and autoload;
require dirname(__FILE__, 2) . '/config.inc';
require CMS_VENDOR_PATH . 'autoload.php';

// Run the Dumper with necessary params
$dumper = new Dumper(
    [
        'dbUser' => CMS_DBUSER,               // Database user
        'dbPassword' => CMS_DBPASS,           // Database password
        'dbName' => CMS_DBASE,                // Database name
        'dbHost' => CMS_DBSERVER,             // Database host
        'interval' => Dumper::INTERVAL_DAILY, // Interval name (used for dump file and backup folder naming)
        'cronPath' => __FILE__,               // Path for cron (used for generated cron command example)  
        
        // Optional params
        'dumpFileName' => Dumper::FILE_NAME_WEEKDAY_NUMBER, // Set the dump file names to rewritable (weekday numbers like 1.sql, 2.sql) to reduce disk space
        'dumperApp' => parent::DUMPER_MYDUMPER,             // Set mydumper as alternative (may not work correctly yet)
    ]
);
echo $dumper->run();

Upload Backups to remote server

Usage via Yii2 console command and .env

Set the backup server access variables in .env file

BACKUP_DUMP_FILE_NAME_FORMAT = weekday-number
BACKUP_SERVER_HOST=backups.example.com
BACKUP_SERVER_USERNAME=backupuser
BACKUP_SERVER_PASSWORD=secretpassword
BACKUP_SERVER_PATH=my.website.com

Add the controller to config/console.php

'controllerMap' => [
        'backup' => [
            'class' => 'DbBackup\controllers\yii2\BackupController',
        ],

Example cron command

0 4 * * *  /usr/bin/php [SITE PATH]/yii backup/sync -i=daily >> [SITE PATH]/vendor/dbrisinajumi/dbbackup/runtime/log/backup-sync-daily.log 2>&1

Usage via custom script

use DbBackup\Sync;

// include your own config files with access constants and autoload;
require dirname(__FILE__, 2) . '/config.inc';
require CMS_VENDOR_PATH . 'autoload.php';

$sync = new Sync([
    'host' => BACKUP_SERVER_HOST,
    'user' => BACKUP_SERVER_USERNAME,
    'password' => BACKUP_SERVER_PASSWORD,
    'remotePath' => BACKUP_SERVER_PATH,
    'cronPath' => __FILE__,
]);
echo $sync->run();