davmixcool/php-dbcloud

简单地将PostgreSql或MySql数据库备份到云端

0.8.2 2018-11-22 07:01 UTC

This package is auto-updated.

Last update: 2024-09-22 20:39:54 UTC


README

PHP-DBCLOUD 是一个 PHP 库,用于备份您的 PostgreSql / MySql 数据库并将其上传到云端。它还支持从云端恢复已备份的数据库。

GitHub license GitHub issues StyleCI Coverage Status

特性

  • 创建备份

    • MySQL
    • PostgreSQL
  • 压缩备份

    • gZip
  • 同步备份到其他位置

    • Amazon s3
    • Dropbox
    • Google Cloud Storage
    • FTP
    • SFTP

要求

  • PHP 5.5
  • MySQL 支持 需要 mysqldumpmysql 命令行二进制文件
  • PostgreSQL 支持 需要 pg_dumppsql 命令行二进制文件
  • Gzip 支持 需要 gzipgunzip 命令行二进制文件

步骤

安装

Composer

运行以下命令通过 Composer 包含此内容

composer require davmixcool/php-dbcloud

然后,您需要选择您想要使用的适配器的适当包。

# 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

配置

配置您的数据库

//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']
        // https://dev.mysqlserver.cn/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',
    ],
]

配置您的文件系统

// 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' => '',
    ],
]

使用方法

安装完成后,必须在初始配置后启动包才能使用。

启动包

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);

备份到配置的数据库

将开发数据库备份到 Dropbox Api V2。最终,当对它完成 gzip 后,Dropbox 备份路径将为 test/backup.sql.gz

use PhpDbCloud\Filesystems\Destination;

$sync = require 'bootstrap.php';
$sync->makeBackup()->run('development', [new Destination('dropbox-v2', 'test/backup.sql')], 'gzip');

从配置的数据库恢复

Dropbox Api V2 将数据库文件 test/backup.sql.gz 恢复到 development 数据库。

$sync = require 'bootstrap.php';
$sync->makeRestore()->run('dropbox-v2', 'test/backup.sql.gz', 'development', 'gzip');

此包不允许您从一种数据库类型备份并恢复到另一种类型。MySQL 备份与 PostgreSQL 不兼容。

示例

在这里查看示例 here

维护者

此包由 David Oti 和您维护!

许可证

此包根据 MIT 许可证 许可。