標籤:base pre 檔案名稱 path bool sub stringbu substr als
MySql資料備份1.
cmd 環境下備份
在cmd環境下備份mysql資料庫可用到如下命令:
1、備份某表
mysqldump -u username -p dbname table1 table2 ...-> BackupName.sql
參數說明:
dbname:表示資料庫的名稱;
table1和table2:表示需要備份的表的名稱,為空白則整個Database Backup;
BackupName.sql:表示備份檔案的名稱,檔案名稱前面可以加上一個絕對路徑。
2、備份多個資料庫
mysqldump -u username -p --databases dbname2 dbname2 > BackupName.sql
3、備份所有資料庫
mysqldump -u username -p -all-databases > BackupName.sql
4、資料還原
mysql -u root -p [dbname] < backup.sq
2.
調用mysqldump.exe備份
有時候在java代碼中需要定時作業備份,實現自動備份。這時候可採用如下方式進行資料備份。大致流程是:
1、建立bat檔案
2、調用bat檔案,擷取輸入資料流寫入備份檔案中
程式碼範例如下:
package com.hymake.xmq;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.util.Calendar;import java.util.Date;/** * MySql資料備份工具類 * @author xiongmq * */public class MySqlBackup { public static void main(String[] args) { doBackup(); } //mySql資料備份 public static boolean doBackup(){ boolean flag=false; //設定備份資訊 String databaseName="weixin";//資料庫名字 String mysqldumpUrl="C:\\Program Files\\MySQL\\MySQL Server 5.5";//mysql安裝位置 String savePath="d:\\資料備份"; //備份檔案儲存位置 String host="127.0.0.1";//主機ip String port="3306";//連接埠 String userName="root";//登入名稱 String password="123456";//登入密碼 //初始化bat檔案 String dataBackupBatPath = System.getProperty("java.io.tmpdir")+ "\\dataBackup.bat"; //建立bat檔案,好做調用 getBackupBat(dataBackupBatPath); //拼湊備份命令 StringBuilder cmdStr=new StringBuilder(); cmdStr.append(dataBackupBatPath); Calendar cal = Calendar.getInstance(); Date now =new Date(); cal.setTime(now); String year=String.valueOf(cal.get(Calendar.YEAR)); String month=cal.get(Calendar.MONTH)+1<10?"0"+String.valueOf(cal.get(Calendar.MONTH)+1):String.valueOf(cal.get(Calendar.MONTH)+1); String date=cal.get(Calendar.DATE)<10?"0"+String.valueOf(cal.get(Calendar.DATE)):String.valueOf(cal.get(Calendar.DATE)); String hour=cal.get(Calendar.HOUR_OF_DAY)<10?"0"+String.valueOf(cal.get(Calendar.HOUR_OF_DAY)):String.valueOf(cal.get(Calendar.HOUR_OF_DAY)); String minute=cal.get(Calendar.MINUTE)<10?"0"+String.valueOf(cal.get(Calendar.MINUTE)):String.valueOf(cal.get(Calendar.MINUTE)); String sec=cal.get(Calendar.SECOND)<10?"0"+String.valueOf(cal.get(Calendar.SECOND)):String.valueOf(cal.get(Calendar.SECOND)); String sqlFielName=databaseName+"_"+year+month+date+hour+minute+sec; String sqlFielPath=year+"\\"+month; cmdStr.append(" \""+savePath+"\""); cmdStr.append(" \""+sqlFielPath+"\""); //擷取資料庫位置 cmdStr.append(" \""+mysqldumpUrl+"\""); cmdStr.append(" "+host); cmdStr.append(" "+port); cmdStr.append(" "+userName); cmdStr.append(" "+password); cmdStr.append(" "+databaseName); cmdStr.append(" "+sqlFielName); try { //執行命令 Process p = Runtime.getRuntime().exec(cmdStr.toString()); InputStream fis=p.getInputStream(); InputStreamReader isr=new InputStreamReader(fis); BufferedReader br=new BufferedReader(isr); while((br.readLine())!=null) { flag=true; } } catch (IOException e) { e.printStackTrace(); } return flag; } /** * 建立bat檔案 * @param tempPath */ public static boolean getBackupBat(String tempPath){ boolean flag=false; StringBuilder content=new StringBuilder(); content.append("SET BACK_DIR=%1"); content.append("\r\n"); content.append("md %BACK_DIR%\\%2"); content.append("\r\n"); content.append("SET BACK_PATH=%BACK_DIR%\\%2"); content.append("\r\n"); content.append("SET MYSQL_PATH=%3"); content.append("\r\n"); content.append("%MYSQL_PATH%\\bin\\mysqldump.exe --opt -h%4 -P%5 -u%6 -p%7 %8> %BACK_PATH%\\%9.sql "); content.append("\r\n"); content.append("echo 資料備份完畢!"); String directoryPath = tempPath.substring(0, tempPath.lastIndexOf("\\")); String fileName = tempPath.substring(tempPath.lastIndexOf("\\") + 1, tempPath.length()); boolean checkDirectoryIsExist = new File(directoryPath).exists(); if(!checkDirectoryIsExist){ new File(directoryPath).mkdirs(); } try{ File file = new File(directoryPath + File.separator + fileName); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8")); bw.write(content.toString()); flag = true; bw.close(); } catch (IOException e) { e.printStackTrace(); } return flag; }}
MySql資料備份