MySql資料備份

來源:互聯網
上載者:User

標籤: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資料備份

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.