日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql blob hex_数据库的完整备份与恢复 quot;--hex-blobquot; - - ITeye博客

發布時間:2023/12/13 数据库 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql blob hex_数据库的完整备份与恢复 quot;--hex-blobquot; - - ITeye博客 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

閑言少絮,這個程序利用MySql數據庫自帶小程序進行數據庫的備份和還原。這兩個程序分別是:mysql.exe和mysqldump.exe。這兩個程序在您安裝Mysql數據庫的時候會自動安裝到數據庫的bin目錄。這兩個程序存在的目錄為:C:\Program File\MySQL\MySQL Server 5.5\bin這個目錄下。在這個目錄下您還可以看到很多MySql自帶的工具程序,他們都很方便和實用。

數據庫安裝程序信息:mysql- 5.5.25a-win32.msi。

安裝路徑:程序默認路徑。

應用程序:Navicat_for_Mysql.exe,默認安裝。

依賴項:mysql-connector-java-5.1.10-bin.jar

服務器地址:192.168.0.100

核心語句:

備份:"cmd.exe /C C:\\mysqldump -uroot -p123456 -h

192.168.0.100 "+ database +" >"+ path +"";

還原:"cmd.exe /C

C:\\mysql -uroot -p123456 -h 192.168.0.100 "+ database +"

其他說明:建立的數據庫名稱為:qqwe,數據庫建立在遠程服務器上。mysql.exe和mysqldump.exe從bin目錄下取出來,放入到

C:\\下。

這個程序通過讀取*.properties配置文件來獲取外界傳遞進來的信息。這個文件是自己定義的。其中定義的內容如下:

OK,簡要說明結束,看代碼!

package DatabaseRR;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.lang.Process;

import java.util.ArrayList;

import java.util.List;

import java.util.Properties;

import java.sql.Statement;

public class EasyRecovery

{

Connection conn = null;

public Connection getConnection(String fileNameAndURL)

{

Properties prop = new Properties();

FileInputStream fis;

try{

fis = new FileInputStream(fileNameAndURL);

prop.load(fis);

fis.close();

String userName = prop.getProperty("userName");

String password = prop.getProperty("password");

String localHost = prop.getProperty("localHost");//主機名或主機地址IP,如 192.168.0.100

String database = prop.getProperty("database");//數據庫名稱

String jdbcDriver = prop.getProperty("jdbcDriver");//加載數據庫驅動的名稱

String port = prop.getProperty("port");//端口

String dataBaseCompany = prop.getProperty("dataBaseCompany");

String pathUrl = "jdbc:"+dataBaseCompany+"://"+localHost+":"+port+"/"+database;

Class.forName(jdbcDriver); // 加載MySQL數據庫驅動

String url = pathUrl; // 定義與連接數據庫的url

String user = userName; // 定義連接數據庫的用戶名

String passWord = password; // 定義連接數據庫的密碼

conn = DriverManager.getConnection(url, user, passWord); // 連接連接

}

catch (Exception e)

{

e.printStackTrace();

}

return conn;

}

/**

* 獲取MySQL所有數據庫方法

SCHEMATA 這是MySql記錄數據庫中一共建立了多少個數據庫,并保存他們表名的一個數據庫表

* @param fileNameAndURL

* @return list

*/

public List getDatabase(String fileNameAndURL)

{

List list = new ArrayList(); // 定義List集合對象

Connection con = getConnection(fileNameAndURL); // 獲取數據庫連接

Statement st; // 定義Statement對象

try

{

st = con.createStatement(); // 實例化Statement對象

ResultSet rs = st.executeQuery("select schema_name from SCHEMATA");// 指定查詢所有數據庫方法

while (rs.next()) // 循環遍歷查詢結果集

{

list.add(rs.getString(1)); // 將查詢數據添加到List集合中

}

}

catch (Exception e)

{

e.printStackTrace();

}

return list; // 返回查詢結果

}

/**

* 備份數據庫

*

* @param fileNameAndURL 配置文件和他的路徑

*

* @param database 數據庫名

* @param path文件保存路徑

* @param userName創建數據庫時設定的用戶名

* @param password數據庫用戶密碼

* @param localHost主機名或主機地址IP,如 192.168.0.100

* @param CmdDiskmysql.exe、mysqldump.exe這兩個文件存放的目錄

*/

private void mysqldump(String fileNameAndURL)

{

Connection con = getConnection(fileNameAndURL);

Properties prop = new Properties();

try {

FileInputStream fis = new FileInputStream(fileNameAndURL);

prop.load(fis);

fis.close();

String userName = prop.getProperty("userName");

String password = prop.getProperty("password");

String localHost = prop.getProperty("localHost");//主機名或主機地址IP,如 192.168.0.100

String database = prop.getProperty("database");//數據庫名稱

String saveDisk = prop.getProperty("saveDisk");//要保存的盤符

String fileName = prop.getProperty("fileName");//要保存成的文件名稱

String fileType = prop.getProperty("fileType");//要保存成的文件格式

String CmdDisk = prop.getProperty("CmdDisk");//

String path = saveDisk + fileName + fileType;//構成了完整路徑

String Cmd = "cmd.exe /C " + CmdDisk + "mysqldump --hex-blob -u" + userName + " -p" + password + " -h " + localHost + " " + database + " >" + path + "";

//String asd = "cmd.exe /C C:\\mysqldump -uroot -p123456 -h 192.168.0.100 " + database + " >" + path + ""; 原始格式,不要刪除該語句

Process p = Runtime.getRuntime().exec(Cmd);//定義進行數據備份的語句

StringBuffer out1 = new StringBuffer(); //定義字符串緩沖對象

byte[] b = new byte[1024]; //定義字節數組

for (int i; ((i = p.getInputStream().read(b)) != -1);) // 將數據寫入到指定文件中 mysqldump.exe

{

out1.append(new String(b, 0, i)); //向流中追加數據

}

}

catch (IOException e)

{

e.printStackTrace();

}

}

/**

* 恢復數據庫

*

* @param fileNameAndURL 配置文件和他的路徑

*

* @param database 數據庫名

* @param path文件保存路徑

* @param userName創建數據庫時設定的用戶名

* @param password數據庫用戶密碼

* @param localHost主機名或主機地址IP,如 192.168.0.100

* @param CmdDiskmysql.exe、mysqldump.exe這兩個文件存放的目錄

*/

private void mysqlresume(String fileNameAndURL)

{

Connection con = getConnection(fileNameAndURL);

Properties prop = new Properties();

try

{

FileInputStream fis = new FileInputStream(fileNameAndURL);

prop.load(fis);

fis.close();

String userName = prop.getProperty("userName");

String password = prop.getProperty("password");

String localHost = prop.getProperty("localHost");//主機名或主機地址IP,如 192.168.0.100

String database = prop.getProperty("database");//數據庫名稱

String saveDisk = prop.getProperty("saveDisk");//要保存的盤符

String fileName = prop.getProperty("fileName");//要保存成的文件名稱

String fileType = prop.getProperty("fileType");//要保存成的文件格式

String CmdDisk = prop.getProperty("CmdDisk");//mysql.exe、mysqldump.exe這兩個文件存放的目錄

String path = saveDisk + fileName + fileType;//構成了完整路徑

String Cmd = "cmd.exe /C " + CmdDisk + "mysql -u" + userName + " -p" + password + " -h " + localHost + " " + database + "

Process p = Runtime.getRuntime().exec(Cmd);

StringBuffer out1 = new StringBuffer(); // 定義字符串緩沖對象

byte[] b = new byte[1024]; // 定義字節數組

for (int i; ((i = p.getInputStream().read(b)) != -1);) // 將數據寫入到指定文件中

{

out1.append(new String(b, 0, i)); // 向流中追加數據

}

}

catch (IOException e)

{

e.printStackTrace();

}

}

/**

* 編輯屬性文件,向配置文件中寫入新的信息

* @param fileNameAndURL

* @param Key

* @param Value

*/

public void propertyEditor(String fileNameAndURL , String Key , String Value)

{

Properties prop = new Properties();

try

{

InputStream fis = new FileInputStream(fileNameAndURL);

prop.load(fis);

prop.setProperty(Key, Value);

OutputStream fos = new FileOutputStream(fileNameAndURL);

prop.store(fos , Key);

fos.flush();

fis.close();

}

catch(IOException e)

{

e.getStackTrace();

}

}

//################################################//

/**

* 備份 可供外界調用的方法

* @param fileNameAndURL

*/

public void dataBaseReserve(String fileNameAndURL)

{

EasyRecovery mc = new EasyRecovery();

mc.mysqldump(fileNameAndURL);

}

/**

* 恢復 可供外界調用的方法

* @param fileNameAndURL

*/

public void dataBaseRecovery(String fileNameAndURL)

{

EasyRecovery mc = new EasyRecovery();

mc.mysqlresume(fileNameAndURL);

}

public static void main(String args[])

{

EasyRecovery mc = new EasyRecovery();

String fileNameAndURL = "E:\\propertiesConfig\\EasyRecoveryConfig.properties";

mc.dataBaseReserve(fileNameAndURL);

mc.propertyEditor(fileNameAndURL, "userName", "Doctor Lee");

mc.dataBaseRecovery(fileNameAndURL);

}

}

--hex-blob;這個命令是用于將導出的內容處理成為2進制流的形式。因為有些時候你會發現,導出的數據庫文件大小與數據庫本身真實內容的大小存在沖突,往往是小于真實的大小。加入這個命令你就可以解決這個問題了。這個命令加在備份數據庫的時候。

這個程序適用于任何Mis系統、ERP系統等,在您的界面中只需要添加兩個按鈕然后完成相應的事件即可。這個程序也可以將他改成一個Action(EasyRecoveryAction.java),幫助您完成相應的后臺請求。初學者,不足之處請您多多指點。相應的項目工程和依賴程序在下面,您可以拿來直接運行。希望對您有所幫助。開源萬歲!轉載請您注明出處。

分享到:

2012-11-27 19:39

瀏覽 4870

分類:數據庫

評論

總結

以上是生活随笔為你收集整理的mysql blob hex_数据库的完整备份与恢复 quot;--hex-blobquot; - - ITeye博客的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。