Java中怎么備份和還原MySQL數(shù)據(jù)庫

這篇文章將為大家詳細講解有關Java中怎么備份和還原MySQL數(shù)據(jù)庫,文章內(nèi)容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

鳳慶網(wǎng)站建設公司成都創(chuàng)新互聯(lián)公司,鳳慶網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為鳳慶千余家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設要多少錢,請找那個售后服務好的鳳慶做網(wǎng)站的公司定做!

備份

上面的網(wǎng)頁提到mysqldump命令一共有三種形式,如下:

shell> mysqldump [options] db_name [tbl_name ...]
shell> mysqldump [options] --databases db_name ...
shell> mysqldump [options] --all-databases

該命令有很多的options,詳情可以查看上面的鏈接,我這里只需要備份一個數(shù)據(jù)庫,命令也比較簡單;如果在命令行窗口可以使用如下命令來實現(xiàn)備份:

mysqldump -umysql -pmysql --add-drop-database --skip-lock-tables -B tjfinal > d:/backup.sql

如果不加--add-drop-database參數(shù)并且用戶不是root用戶,有可能報下面的錯誤:

mysqldump: Got error: 1044: "Access denied for user 'mysql'@'localhost' to datab
ase 'tjfinal'" when using LOCK TABLES

Java示例代碼:

/**
 * 備份數(shù)據(jù)庫
 * @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("備份數(shù)據(jù)庫失敗.");
    }
}

還原

還原數(shù)據(jù)庫需要用到MySQL的source命令,該命令用來讀取一個文件并執(zhí)行其中的SQL語句;如果使用命令行工具,可以登錄MySQL客戶端,然后直接執(zhí)行source命令即可:

MariaDB [tjfinal]> source file_name 
-- 或者
MariaDB [tjfinal]> \. file_name

當然如果不登錄進客戶端也是可以的,這時就需要用到mysql客戶端命令的 --execute(或者-e)選項(option),如下:

--execute=statement
-- 或者
-e statement

其中--execute(或-e)選項表示要登錄客戶端然后執(zhí)行SQL命令后退出,而該選項的參數(shù) statement 就是要執(zhí)行的SQL命令,關于mysql命令選項的說明可以參考這里:http://dev.mysql.com/doc/refman/5.1/en/mysql-command-options.html#option_mysql_execute

因此在不登錄MySQL客戶端的情況下可以使用下面的命令還原數(shù)據(jù)庫:

mysql -umysql -pmysql -e source d:/backup.sql
-- 或者
mysql -umysql -pmysql --execute="source d:/backup.sql"

Java示例代碼:

/**
 * 還原數(shù)據(jù)庫
 * @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("還原數(shù)據(jù)庫失敗.");
    }

關于Java中怎么備份和還原MySQL數(shù)據(jù)庫就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

本文標題:Java中怎么備份和還原MySQL數(shù)據(jù)庫
網(wǎng)頁網(wǎng)址:http://bm7419.com/article10/pscodo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供虛擬主機、電子商務品牌網(wǎng)站建設、動態(tài)網(wǎng)站、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設計