共計 2166 個字符,預計需要花費 6 分鐘才能閱讀完成。
這篇文章將為大家詳細講解有關 Java 中怎么備份和還原 MySQL 數據庫,文章內容質量較高,因此丸趣 TV 小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
備份
上面的網頁提到 mysqldump 命令一共有三種形式,如下:
shell mysqldump [options] db_name [tbl_name ...]
shell mysqldump [options] --databases db_name ...
shell mysqldump [options] --all-databases
該命令有很多的 options,詳情可以查看上面的鏈接,我這里只需要備份一個數據庫,命令也比較簡單;如果在命令行窗口可以使用如下命令來實現備份:
mysqldump -umysql -pmysql --add-drop-database --skip-lock-tables -B tjfinal d:/backup.sql
如果不加 –add-drop-database 參數并且用戶不是 root 用戶,有可能報下面的錯誤:
mysqldump: Got error: 1044: Access denied for user mysql @ localhost to datab
ase tjfinal when using LOCK TABLES
Java 示例代碼:
/**
* 備份數據庫
* @throws Exception
*/
public static void backup () throws Exception { String savePath = BACKUP_DIR + backup- + DateTimeTool.getDateByTime() + .sql
String[] execCMD = new String[] { mysqldump , -u + DB_USER, -p + DB_PWD, DB_NAME,
-r + savePath, --skip-lock-tables
Process process = Runtime.getRuntime().exec(execCMD);
int processComplete = process.waitFor();
if (processComplete == 0) {
System.out.println( 備份成功.
} else {
throw new RuntimeException( 備份數據庫失敗.
}
}
還原
還原數據庫需要用到 MySQL 的 source 命令,該命令用來讀取一個文件并執行其中的 SQL 語句;如果使用命令行工具,可以登錄 MySQL 客戶端,然后直接執行 source 命令即可:
MariaDB [tjfinal] source file_name
-- 或者
MariaDB [tjfinal] \. file_name
當然如果不登錄進客戶端也是可以的,這時就需要用到 mysql 客戶端命令的 –execute(或者 -e)選項(option),如下:
--execute=statement
-- 或者
-e statement
其中 –execute(或 -e)選項表示要登錄客戶端然后執行 SQL 命令后退出,而該選項的參數 statement 就是要執行的 SQL 命令,關于 mysql 命令選項的說明可以參考這里:http://dev.mysql.com/doc/refman/5.1/en/mysql-command-options.html#option_mysql_execute
因此在不登錄 MySQL 客戶端的情況下可以使用下面的命令還原數據庫:
mysql -umysql -pmysql -e source d:/backup.sql
-- 或者
mysql -umysql -pmysql --execute= source d:/backup.sql
Java 示例代碼:
/**
* 還原數據庫
* @param sql 要還的 SQL 文件
* @throws Exception
*/
public static void restore (String sql) throws Exception {
String targetFile = BACKUP_DIR + sql; // SQL 文件路徑
String[] execCMD = new String[]{mysql , DB_NAME, -u + DB_USER, -p + DB_PWD, -e source , targetFile};
Process process = Runtime.getRuntime().exec(execCMD);
int processComplete = process.waitFor();
if (processComplete == 0) {
System.out.println( 還原成功.
} else {
throw new RuntimeException( 還原數據庫失敗.
}
關于 Java 中怎么備份和還原 MySQL 數據庫就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。