This is a backup utility used to dump a database for backup. The backup file contains the queries to build the tables and insert the datas.
You can select some or all tables, compress the backup in ZIP or GZIP and start downloading automatically.
With Composer, add this line to your require section :
"phelium/mysql-backup": "dev-master"
Then run composer update
.
require 'vendor/autoload.php';
use Phelium\Component\MySQLBackup;
To initialize MySQLBackup, you must provide your database information :
$Dump = new MySQLBackup('server name', 'user name', 'password', 'db name', 'mysql port');
MySQL port default is 3306.
By default, all tables are saved. If you want to save one or more tables, the functions addTable
or addTables
must be used:
$Dump = new MySQLBackup('localhost', 'root', '', 'blog');
$Dump->addTable('posts'); // Add the posts table
$Dump->addTables(array('users', 'comments')); // Add the users and comments tables
You can exclude some tables of the backup. Use excludeTables
function. The parameter must be an array containing tables name to exclude.
$Dump = new MySQLBackup('localhost', 'root', '', 'blog');
$Dump->excludeTables(array(comments')); // Exclude comments table to the backup
By default, the name of the generated file is "dump_{database name}_{date}". With setFilename
method, you can specify a different file name:
$Dump = new MySQLBackup('localhost', 'root', '', 'blog');
$Dump->setFilename('bkp_'.time());
By default, the table schema (structure) and datas of each table are saved. However, it's possible not to save one or the other with setDumpStructure
and setDumpDatas
(default : true) :
$Dump = new MySQLBackup('localhost', 'root', '', 'blog');
$Dump->setDumpStructure(false); // Not the structure
$Dump->setDumpDatas(false); // Not the datas
By default, the CREATE DATABASE IF NOT EXISTS directive is added in top of the backup file. You can disable it with addCreateDatabaseIfNotExists
(default : true) :
$Dump = new MySQLBackup('localhost', 'root', '', 'blog');
$Dump->addCreateDatabaseIfNotExists(false); // Not add the CREATE DATABASE IF NOT EXISTS statment
By default, the DROP TABLE IF EXISTS directive is added before each CREATE TABLE. You can disable it with addDropTable
(default : true) :
$Dump = new MySQLBackup('localhost', 'root', '', 'blog');
$Dump->addDropTable(false); // Not add the DROP TABLE IF EXISTS statment
By default, the IF NOT EXISTS directive is added during a CREATE TABLE. You can disable it with addIfNotExists
(default : true) :
$Dump = new MySQLBackup('localhost', 'root', '', 'blog');
$Dump->addIfNotExists(false); // Not add the IF NOT EXISTS statment
To compress the output file, setCompress
allows to use ZIP or GZIP (default : no compression) :
$Dump = new MySQLBackup('localhost', 'root', '', 'blog');
$Dump->setCompress('zip'); // zip | gz | gzip
The generated file can be deleted automatically with setDelete
(default : false) :
$Dump = new MySQLBackup('localhost', 'root', '', 'blog');
$Dump->setDelete(true);
To download automatically the generated file, use setDownload
(default : false) :
$Dump = new MySQLBackup('localhost', 'root', '', 'blog');
$Dump->setDownload(true); // starts downloading
To start backing up your database, use dump
:
$Dump = new MySQLBackup('localhost', 'root', '', 'blog');
$Dump->dump();
Here is an example to backup the blog database. Only the tables posts, comments and users are kept. Then compressed in ZIP format. The generated file is deleted from the server and the download starts automatically:
<?php
require 'vendor/autoload.php';
use Phelium\Component\MySQLBackup;
$Dump = new MySQLBackup('localhost', 'root', '', 'blog');
$Dump->addTables(array('posts', 'comments', 'users'));
$Dump->setCompress('zip');
$Dump->setDelete(true);
$Dump->setDownload(true);
$Dump->dump();
// or
$Dump = new MySQLBackup('localhost', 'root', '', 'blog');
$Dump
->addTables(array('posts', 'comment', 'users'));
->setCompress('zip');
->setDelete(true);
->setDownload(true);
->dump();