第一步 # 掌握sql备份语句
指定数据库:
mysqldump -h 数据库ip -u 用户名 -p --databases 数据库名称 --set-gtid-purged=off>/home/test.sql
指定数据库的某表:
mysqldump -h 数据库ip -u 用户名 -p --databases 数据库名 表名 --set-gtid-purged=off>/home/test.sql
示例:
mysqldump -h 127.0.0.1 -u root -p zhiye area >D:\test\tes.sql
第二步 # 写一个执行 mysqldump sql 语句的java工具类
以下是备份工具类MySQLBacupUtil
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.zhiyeit.controllerm.MAuthenticationController;
public class MysqlBackupUtil {
static final Logger log = LoggerFactory.getLogger(MAuthenticationController.class);
public static boolean backupData(String host,String dbName,String account,String pass,String savaPath){
Long starttime=System.currentTimeMillis();
Runtime rt=Runtime.getRuntime();
Process process;
try {
String command="mysqldump -h "+host+" -u "+account+" -p"+pass+" "+dbName+" --result-file "+savaPath+DateUtil.getDate(null, new Date())+".sql";
log.info("mysqldump running this comman-->"+command);
process = rt.exec(command);
if(process.waitFor()==0){
log.info("mysqldump backup successfully");
Long endtime=System.currentTimeMillis();
Long distance=starttime-endtime;
log.info("mysqldump备份花"+distance/1000+"秒");
return true;
}else{
log.info("process.waitFor()!=0");
InputStream is=process.getErrorStream();
if(is!=null){
BufferedReader in=new BufferedReader(new InputStreamReader(is,"utf-8"));
String line;
while((line=in.readLine())!=null){
log.error("mysqldump错误日志>"+line);
}
}
}
}catch (Exception e) {
log.info("mysqldump backup failed");
e.printStackTrace();
return false;
}
return false;
}
}
第三步 # 在定时任务中直接执行写好的备份工具类 MySQLBackupUtil
MysqlBackupUtil.backupData(Config.get("host"),Config.get("dbName"), Config.get("account"), Config.get("pass"), Config.get("savaPath"))