Backing up Mysql with Java and PHP
mysqldump is an effective tool to backup MySQL databases. In normal cases, it’s done trough a command line commando but it can be used programmatically.
It’s a very easy script and it could be useful. (don’t have to log in into console to take a backup, create an auto backup on deployment, …)
It will work on Windows and Linux as long as mysql is in your PATH.
package be.eek.test.mysql;
import java.io.IOException;
import java.io.InputStream;
public class MysqlBackup {
/**
main method is just to create a working example
**/
public static void main(String[] args) throws IOException {
new MysqlBackup().MakeBackup();
}
public void MakeBackup() throws IOException {
String dump = "mysqldump " //Path to mysql
+ "--host=localhost " //Mysql hostname
+ "--port=3306 " //Mysql portnumber
+ "--user=root " //Mysql username
+ "--password=test " //Mysql password
+ "--add-drop-table " //Add a DROP TABLE statement before each CREATE TABLE statement
+ "--add-drop-database " //Add a DROP DATABASE statement before each CREATE DATABASE statement
+ "--complete-insert " //Use complete INSERT statements that include column names.
+ "--extended-insert " //Use multiple-row INSERT syntax that include several VALUES lists
+ "test"; //Mysql databasename
Process run = Runtime.getRuntime().exec(dump);
InputStream in = run.getInputStream();
int nextChar;
StringBuffer sb = new StringBuffer();
while ((nextChar = in.read()) != -1) {
sb.append((char) nextChar);
}
//Here, you can for example write it to a file and save it
System.out.println(sb);
}
}
The same thing is also possible in php:
$dump = "mysqldump "
. "--host=localhost " //Mysql hostname
. "--port=3306 " //Mysql portnumber
. "--user=root " //Mysql username
. "--password=test " //Mysql password
. "--add-drop-table " //Add a DROP TABLE statement before each CREATE TABLE statement
. "--add-drop-database " //Add a DROP DATABASE statement before each CREATE DATABASE statement
. "--complete-insert " //Use complete INSERT statements that include column names.
. "--extended-insert " //Use multiple-row INSERT syntax that include several VALUES lists
. "test"; //databasename
$backup = system($dump);
echo $backup;
die();