coco-project/sqldump

Maintainers

Package info

github.com/coco-projects/sqldump

pkg:composer/coco-project/sqldump

Transparency log

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-08-07 08:23 UTC

This package is auto-updated.

Last update: 2026-08-07 08:28:15 UTC


README

PHP MySQL backup helper for dumping local MySQL databases with mysql and mysqldump.

Requirements

  • PHP >= 8.0
  • mysql command
  • mysqldump command
  • gzip command when gzip is enabled

Basic Usage

<?php

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

use Coco\sqldump\Sqldumper;

$dumper = new Sqldumper([
    'username' => 'root',
    'password' => 'root',
    'savePath' => '/windows/debug/backup_mysql',
]);

$result = $dumper->backup();

print_r($result);

Default behavior:

  • Dumps all non-system databases into one .sql file.
  • Saves backups to /windows/debug/backup_mysql.
  • Keeps the latest 50 backup batches.
  • Removes older backups generated by this package only.
  • Throws RuntimeException when backup or cleanup fails.

Configuration

[
    'username' => 'root',
    'password' => 'root',
    'host' => null,
    'port' => null,
    'savePath' => '/windows/debug/backup_mysql',
    'backupCount' => 50,
    'mysqlBinPath' => '/usr/bin',
    'filenamePrefix' => 'sqldump-',
    'gzip' => false,
    'ignoreCleanupErrors' => false,
    'outputMode' => Sqldumper::OUTPUT_MODE_SINGLE,
    'includeDatabases' => [],
    'excludeDatabases' => [
        'information_schema',
        'mysql',
        'performance_schema',
        'sys',
        'test',
    ],
    'verbose' => false,
    'extraDumpOptions' => [],
]

Output Modes

Single file mode:

'outputMode' => Sqldumper::OUTPUT_MODE_SINGLE

Output:

sqldump-2026-07-10_12-30-00.sql

Separate database mode:

'outputMode' => Sqldumper::OUTPUT_MODE_SEPARATE

Output:

sqldump-2026-07-10_12-30-00/
  app.sql
  blog.sql

Gzip

'gzip' => true

Single file output:

sqldump-2026-07-10_12-30-00.sql.gz

Separate database output:

sqldump-2026-07-10_12-30-00/
  app.sql.gz
  blog.sql.gz

Selecting Databases

Back up only selected databases:

$dumper = new Sqldumper([
    'includeDatabases' => ['app', 'blog'],
]);

Exclude extra databases:

$dumper = new Sqldumper([
    'excludeDatabases' => [
        'information_schema',
        'mysql',
        'performance_schema',
        'sys',
        'test',
        'tmp_database',
    ],
]);

Extra mysqldump Options

$dumper = new Sqldumper([
    'extraDumpOptions' => ['--hex-blob'],
]);

Default dump options:

--default-character-set=utf8mb4
--single-transaction
--quick
--routines
--triggers
--events
--add-drop-database
--add-drop-table
--databases

Cron Example

*/50 * * * * cd /var/www/6026/coco-sqldump && /usr/bin/php82 examples/demo1.php

*/50 * * * * runs at minute 0 and minute 50 of each hour. The intervals alternate between 50 minutes and 10 minutes.

Security Note

This package passes the MySQL password through the command line by design. It is suitable for local personal tooling. Do not use this password-passing mode on shared production servers.

License

MIT