davmixcool / php-dbcloud
Easily backup PostgreSql or MySql database to the cloud
Installs: 1 488
Dependents: 0
Suggesters: 0
Security: 0
Stars: 11
Watchers: 4
Forks: 4
Open Issues: 0
Requires
- php: ^5.5.9 || ^7.0
- league/flysystem: ^1.0
- symfony/process: ^2.1 || ^3.0 || ^4.0
Requires (Dev)
- aws/aws-sdk-php: ~3.0
- dropbox/dropbox-sdk: ~1.1
- league/flysystem-aws-s3-v3: ~1.0
- league/flysystem-dropbox: ~1.0
- league/flysystem-sftp: ~1.0
- phpspec/phpspec: ~2.1
- srmklive/flysystem-dropbox-v2: ~1.0
Suggests
- league/flysystem-aws-s3-v2: GoogleCS adapter support.
- league/flysystem-aws-s3-v3: AwsS3 adapter support.
- league/flysystem-dropbox: Dropbox API adapter support.
- league/flysystem-sftp: Sftp adapter support.
- srmklive/flysystem-dropbox-v2: Dropbox API v2 adapter support.
This package is auto-updated.
Last update: 2024-10-22 20:54:33 UTC
README
PHP-DBCLOUD is a php library that creates backup of your PostgreSql / MySql database and uploads it to the cloud. It also support restoring of the backedup database from the cloud.
Features
-
Creating backups
- MySQL
- PostgreSQL
-
Compress backups
- gZip
-
Sync backups to other locations
- Amazon s3
- Dropbox
- Google Cloud Storage
- FTP
- SFTP
Requirements
- PHP 5.5
- MySQL support requires
mysqldump
andmysql
command-line binaries - PostgreSQL support requires
pg_dump
andpsql
command-line binaries - Gzip support requires
gzip
andgunzip
command-line binaries
Steps:
Install
Composer
Run the following to include this via Composer
composer require davmixcool/php-dbcloud
Then, you'll need to select the appropriate packages for the adapters that you want to use.
# to support Amazon s3 composer require league/flysystem-aws-s3-v3 # to support Dropbox (api v1) composer require srmklive/flysystem-dropbox # to support Dropbox (api v2) composer require srmklive/flysystem-dropbox-v2 # to support Google Cloud Storage composer require league/flysystem-aws-s3-v2 # to support Sftp composer require league/flysystem-sftp
Configuration
Configure your databases
//config/database.php return [ 'development' => [ 'type' => 'mysql', 'host' => 'localhost', 'port' => '3306', 'user' => 'root', 'pass' => 'password', 'database' => 'test', // If singleTransaction is set to true, the --single-transcation flag will be set. 'singleTransaction' => false, // Do not dump the given tables // Set only table names, without database name // Example: ['table1', 'table2'] // http://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_ignore-table 'ignoreTables' => [], // using ssl to connect to your database - active ssl-support (mysql only): 'ssl'=>false, // add additional options to dump-command (like '--max-allowed-packet') 'extraParams'=>null, ], 'production' => [ 'type' => 'postgresql', 'host' => 'localhost', 'port' => '5432', 'user' => 'postgres', 'pass' => 'password', 'database' => 'test', ], ]
Configure your filesystems
// config/storage.php return [ 'local' => [ 'type' => 'Local', 'root' => '/path/to/working/directory', ], 's3' => [ 'type' => 'AwsS3', 'key' => '', 'secret' => '', 'region' => 'us-east-1', 'version' => 'latest', 'bucket' => '', 'root' => '', ], 'gcs' => [ 'type' => 'Gcs', 'key' => '', 'secret' => '', 'version' => 'latest', 'bucket' => '', 'root' => '', ], 'dropbox-v2' => [ 'type' => 'DropboxV2', 'token' => '', 'key' => '', 'secret' => '', 'app' => '', 'root' => '', ], 'dropbox-v1' => [ 'type' => 'DropboxV1', 'token' => '', 'key' => '', 'secret' => '', 'app' => '', 'root' => '', ], 'ftp' => [ 'type' => 'Ftp', 'host' => '', 'username' => '', 'password' => '', 'root' => '', 'port' => 21, 'passive' => true, 'ssl' => true, 'timeout' => 30, ], 'sftp' => [ 'type' => 'Sftp', 'host' => '', 'username' => '', 'password' => '', 'root' => '', 'port' => 21, 'timeout' => 10, 'privateKey' => '', ], ]
Usage
Once installed, the package must be bootstrapped with initial configurations before it can be used.
Bootstrap the package
use PhpDbCloud\Config\Config; use PhpDbCloud\Filesystems; use PhpDbCloud\Databases; use PhpDbCloud\Compressors; use PhpDbCloud\Sync; // build providers $filesystems = new Filesystems\FilesystemProvider(Config::fromPhpFile('config/storage.php')); $filesystems->add(new Filesystems\Awss3Filesystem); $filesystems->add(new Filesystems\GcsFilesystem); $filesystems->add(new Filesystems\DropboxV1Filesystem); $filesystems->add(new Filesystems\DropboxV2Filesystem); $filesystems->add(new Filesystems\FtpFilesystem); $filesystems->add(new Filesystems\LocalFilesystem); $filesystems->add(new Filesystems\SftpFilesystem); $databases = new Databases\DatabaseProvider(Config::fromPhpFile('config/database.php')); $databases->add(new Databases\MysqlDatabase); $databases->add(new Databases\PostgresqlDatabase); $compressors = new Compressors\CompressorProvider; $compressors->add(new Compressors\GzipCompressor); $compressors->add(new Compressors\NullCompressor); // build sync return new Sync($filesystems, $databases, $compressors);
Backup to configured database
Backup the development database to Dropbox Api V2
. The Dropbox backup path will be test/backup.sql.gz
in the end, when gzip
is done with it.
use PhpDbCloud\Filesystems\Destination; $sync = require 'bootstrap.php'; $sync->makeBackup()->run('development', [new Destination('dropbox-v2', 'test/backup.sql')], 'gzip');
Restore from configured database
Restore the database file test/backup.sql.gz
from Dropbox Api V2
to the development
database.
$sync = require 'bootstrap.php'; $sync->makeRestore()->run('dropbox-v2', 'test/backup.sql.gz', 'development', 'gzip');
This package does not allow you to backup from one database type and restore to another. A MySQL dump is not compatible with PostgreSQL.
Example
See Example here.
Maintainers
This package is maintained by David Oti and you!
License
This package is licensed under the MIT license.