coco-project / sqldump
v1.0.0
2026-08-07 08:23 UTC
Requires
- php: >=8.0
Requires (Dev)
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^9.6
- squizlabs/php_codesniffer: ^3.8
README
PHP MySQL backup helper for dumping local MySQL databases with mysql and mysqldump.
Requirements
- PHP >= 8.0
mysqlcommandmysqldumpcommandgzipcommand whengzipis 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
.sqlfile. - Saves backups to
/windows/debug/backup_mysql. - Keeps the latest 50 backup batches.
- Removes older backups generated by this package only.
- Throws
RuntimeExceptionwhen 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