java通过mysqldump命令来备份mysql数据库
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
public class ProcessUtil {
public static void backupDB() throws IOException, InterruptedException {
// mysqldump -uemove -h xx.xxx.xx.xx -P 7996 -p --databases dbname
List<String> commands = new ArrayList<>();
commands.add("mysqldump");
commands.add("-u用户名");
commands.add("-h");
commands.add("127.0.0.1");
commands.add("-P");
commands.add("端口号");
commands.add("-p密码");
commands.add("-B");
commands.add("数据库名");
commands.add("--set-gtid-purged=off");
commands.add("--default-character-set=utf8");
commands.add("--skip-tz-utc");
commands.add("--lock-tables=false");
commands.add("--skip-add-locks");
String filePath = "/usr/local/backupDB.sql";
ProcessUtil.processSh(commands, filePath);
}
/**
* 输出需要生成文件的情况
* @param commands 命令分段,必须要分割,不能直接拼好一条add进来会报错,commands中的String不需要加空格
* @param filePath 输出到哪个文件中,全路径
*/
public static void processSh(List<String> commands, String filePath) throws IOException, InterruptedException {
ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.command(commands);
processBuilder.redirectOutput(new File(filePath));
Process process = processBuilder.start();
process.waitFor();
//执行命令的异常信息
InputStream errorStream = process.getErrorStream();
}
}