数据库一般备份命令:
- // 1.导出结构不导出数据
- // mysqldump --opt -d 数据库名 -u root -p > xxx.sql
- // 2.导出数据不导出结构
- // mysqldump -t 数据库名 -uroot -p > xxx.sql
- // 3.导出数据和表结构
- // mysqldump 数据库名 -uroot -p > xxx.sql
- // sql4.导出特定表的结构
- // mysqldump -uroot -p -B 数据库名 --table 表名 > xxx.sql
基本代码:
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import java.io.File;
- import java.io.IOException;
- /**
- * Created by user on 2015/8/7.
- */
- public class DbbackupTask {
- Log loger = LogFactory.getLog(this.getClass());
- @Value("${host_ip}")
- private String HOSTIP;//数据库服务器IP
- @Value("${user_name}")
- private String USERNAME;//数据库用户
- @Value("${password}")
- private String PASSWORD;//数据库密码
- @Value("${save_path}")
- private String SAVEPATH;//备份文件路径
- /**
- * 每隔xxx时间就执行,暂定每天0点
- */
- public void dbbackup() {
- loger.debug("数据库备份开始");
- String[] databaseName = {"common_db", "logistic_db", "operate_db", "order_db"};
- String dates = new java.text.SimpleDateFormat("yyyyMMddHHmmss").format(new java.util.Date());
- String dated = new java.text.SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date());
- System.out.println(dates);
- System.out.println(dated);
- for (Object o : databaseName) {
- String savePath=SAVEPATH + "/" + dated;
- String fileName = o.toString() + dates+".sql";
- System.out.println(SAVEPATH + "/" + dated + "/" + o.toString() + dates+".sql");
- exportDatabaseTool(HOSTIP, USERNAME, PASSWORD, savePath,fileName, o.toString());
- }
- }
- public void exportDatabaseTool(String hostIP, String userName, String password, String savePath,String fileName, String databaseName) {
- File saveFile = new File(savePath);
- if (!saveFile.exists()) {// 如果目录不存在
- saveFile.mkdirs();// 创建文件夹
- }
- if (!savePath.endsWith(File.separator)) {
- savePath = savePath + File.separator;
- }
- StringBuilder stringBuilder = new StringBuilder();
- stringBuilder.append("mysqldump")/*.append(" --opt")*/.append(" -h").append(hostIP);
- stringBuilder.append(" --user=").append(userName).append(" --password=").append(password).append(" --lock-all-tables=true");
- stringBuilder.append(" --result-file=").append(savePath+fileName).append(" --default-character-set=utf8 ").append(databaseName);
- try {
- Process process = Runtime.getRuntime().exec(stringBuilder.toString());
- if (process.waitFor() == 0) {// 0 表示线程正常终止。
- loger.info("数据库备份成功");
- }
- } catch (IOException e) {
- loger.info("数据库备份异常");
- e.printStackTrace();
- } catch (InterruptedException e) {
- loger.info("数据库备份异常");
- e.printStackTrace();
- }
- }
- }
再加一个定时任务quartz;
同学们可以学习java调用命名,重启tomcat 。