Author image Dmytro Nikolayev


MySQL::Backup - Perl extension for making backups of mysql DBs.


  use MySQL::Backup;
  my $mb = new MySQL::Backup('database','','user','password',{'USE_REPLACE' => 1, 'SHOW_TABLE_NAMES' => 1});
  print $mb->create_structure();
  print $mb->data_backup();


MySQL::Backup should be useful for people, who needed in backuping mysql DBs by perl script and doesn't want to use mysqldump or doesn't able to do this.

Main Methods

  • $mb->create_structure() - returns structure of current database

  • $mb->data_backup() returns a full DATA backup of current database

  • $mb->table_data($tablename) - get all data from the table with $tablename

  • $mb->table_desc($tablename) - get a structure of inputed table

  • $mb->new_from_DBH($dbh) - if you have already DBI connection, you can use this

  • $mb->run_restore_script($filename) - Just DROPs all from current DB and run all sql from the specified file (param is filepath to needed file)

  • $mb->run_upgrade_script($filename) - opens file by set filepath, then analyzes differencies in proposed and current structures and tries to fix differencies in DB. For instance: you have 1 table in DB with 3 columns, and one string CREATE TABLE ... with same name in the file, but CREATE TABLE describes 4 columns,.. after running this you should have 4 columns in table in DB. Also, all INSERTs/REPLACEs from file will be executed(also, please be careful on execute stage all INSERTs will be changed to REPLACE)


Params could be set on creating, like shown in example, or/and set/changed as you should see below:

  • $mb->{'param'}->{'USE_REPLACE'} - '1' means using REPLACE instead of INSERT

  • $mb->{'param'}->{'SHOW_TABLE_NAMES'} - '1' means outputing a string in data_backup that marks actions on which table should be done

  • $mb->{'param'}->{'tables'} - this param is a link to array with table names,.. can be used if you're needed to backup only few tables from DB (used by create_structure/data_backup)


DBI, DBD::mysql and


Dmitry Nikolayev <>,


Thanks for DotHost Hosting Provider: for their Tech. support.

Also, Thanks to Dree <> for his comments and suggestions.


Copyright (C) 2006 by Dmitry Nikolayev

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.