通常のMySQLデータベースのバックアップとリカバリの時間で、主に達成するためにCMDにmysqlコマンドを使用して実行。
例えば:
mysqldumpを-h127.0.0.1 -uroot -p123456テスト> D:ディスクDに/test.sql ---テストデータベースのバックアップ
mysqlの-h127.0.0.1 -uroot -p123456テスト<test.sql内--- Dスクリプトのデータベースのバックアップ、データベースへのリストア(データベースが存在するように!)
実際には、作業を完了するためにmsqldump.exeとmysql.exe下の次のコールのMySQL binディレクトリのインストールパスで、コマンドラインcmdを呼び出します
だから、Javaコードで、我々はまた、mysqldump.exeとmysql.exeを呼び出すことで、バックアップと復旧作業を完了する必要があります
Runtime.getRuntime()のexec(String型の引数);. Javaコールexeファイルの外部ソフトウェアを実行するには、APIコマンド。
RunTime.getRuntime()。Execは、()実行スクリプトコマンドについて説明します
- データベースのバックアップ特定のコード
パッケージcom.cxx.backupdb; インポート java.io. * ; 輸入java.text.SimpleDateFormatの; インポートjava.util.Date; / ** * @author:CXX *データベースのバックアップと復元 * @Date:2018年4月28日を午後七時56 * / パブリック クラスDbOperate { / ** *バックアップデータベースDB * @param ルート *の@paramのPWD * @param DBNAME * @param backPath * @param backName * / パブリック 静的 ボイドDBBACKUPは、(文字列のルートは、文字列のPWDは、文字列DBNAME、文字backPath、列backName)をスロー例外{ 文字列pathSql = backPath + backName。 fileSqlファイル = 新しいファイル(pathSql)。 // 创建备份SQL文件 場合(!{fileSql.exists()) fileSql.createNewFile(); } // mysqldumpを-hlocalhost -uroot -p123456 DB> /home/back.sql StringBufferのSB = 新規のStringBuffer(); sb.append( "mysqldumpを" ); sb.append( "-h127.0.0.1" ); sb.append("-u" + ルート)。 sb.append( "-p" + PWD)。 sb.append( " "+ DBNAME +">" ); sb.append(pathSql)。 System.out.println( "CMD命令为:" + sb.toString()); ランタイムランタイム = Runtime.getRuntime()。 System.out.println( "开始备份:" + DBNAME)。 プロセス処理 =のRuntime.exec( "CMD / C" + sb.toString())。 System.out.println( "备份成功!" ); @param DBNAME * @param filePathに * MySQLの-hlocalhost -uroot -p123456 DB </home/back.sql * / パブリック 静的 ボイドDBRESTORE(文字列ルート、文字列PWD、文字列dbnameは、文字列filePathに){ StringBuilderのSB = 新規のStringBuilder() ; sb.append( "mysqlの" ); sb.append( "-h127.0.0.1" ); sb.append( "-u" + ルート)。 sb.append( "-p" + PWD)。 sb.append( " "+ DBNAME +"<" )。 SB。 System.out.println( "){sb.toString())。 ランタイムランタイム = Runtime.getRuntime()。 System.out.println( "开始还原数据" ); 試す{ プロセスプロセス =のRuntime.exec( "CMD / C" + sb.toString())。 入力ストリームは、 = )(process.getInputStream。 BufferedReaderのをBF = 新しい BufferedReaderの(新しい InputStreamReaderの( "UTF8"、です))。 文字列の行 = nullを。 しばらく((ライン= bf.readLine())!= nullで のSystem.out.println(ライン); } is.close()。 bf.close(); } キャッチ(IOExceptionを電子){ e.printStackTrace(); } のSystem.out.println( "还原成功!" ); } パブリック 静的 ボイドメイン(文字列[]引数)スロー例外{ 文字列backName = 新しいてSimpleDateFormat( "YYYY-MM-DD-HH-MM-SS")フォーマット(新しい日付())+ "SQL"を、 DbOperate.dbBackUp( "ルート"、 "123456"、 "KS"、 "F:/" 、backName)。 DBRESTORE("ルート"、 "123456"、 "DB"、 "F://2018-04-30-19-28-28.sql" )。 } }