コアはmysqldumpとランタイムです 操作は実際にはそれほど難しくありません。バックアップ操作を実行するクラスを作成します。バックアップ呼び出しを受信した後、テーブルをバックアップ中としてマークし、バックアップ操作を実行する子スレッドを作成します。必要な構成情報は構成ファイルから読み取られ、Windows および Linux でのパスの問題にも注意してください。 設定ファイルは次のとおりです。
Javaコードコレクションコード # データベースアドレス dbアドレス=ローカルホスト # バックアップするデータベースの名前 データベース名=nms # データベースユーザー名 ユーザー名 = ルート # データベースパスワード パスワード = ルート #mysqldump パスLinux mysqlpath = /usr/bin/ # バックアップファイルの保存場所 Linux sqlFilePath = /MySQlBack/ #mysqldump パス Windows #mysqlpath = C\://Program Files//MySQL//MySQL Server 5.5//bin// # バックアップファイルの保存場所 Windows #sqlFilePath =C\://MySQl//
この機能を実行するコード クラスは次のとおりです。 Javaコードコレクションコード パッケージ com.nms.common.db; java.io.File をインポートします。 java.io.IOException をインポートします。 java.io.InputStream をインポートします。 java.util.Map をインポートします。 java.util.Properties をインポートします。 java.util.concurrent.ConcurrentHashMap をインポートします。 org.apache.commons.logging.Log をインポートします。 org.apache.commons.logging.LogFactory をインポートします。 /** * データベースのバックアップ操作の場合 */ パブリッククラスDbBackUpMethod{ プライベート静的ログロガー = LogFactory.getLog(DbBackUpMethod.class); プライベート静的プロパティ pros = getPprVue("db.properties"); パブリック静的 Map<String, String> backUpTableList = 新しい ConcurrentHashMap<String, String>(); プライベート静的 DbBackUpMethod backObj = 新しい DbBackUpMethod(); パブリック静的DbBackUpMethod getDbBackUpMethod(){ 戻り値: } パブリック void バックアップ(文字列テーブル名) { if(null != backUpTableList.get(tableName)) が返されます。 backUpTableList.put(tableName, tableName); // バックアップに既に使用されているものとしてマークする 新しいスレッド(新しいDbBackUpThread(tableName))を開始します。 } /** * テーブルのバックアップを実行するために使用します */ クラスDbBackUpThreadはRunnableを実装します{ 文字列 tableName = null; パブリックDbBackUpThread(文字列テーブル名){ this.tableName = テーブル名; } @オーバーライド パブリックボイド実行() { 試す { 文字列 username = pros.getProperty("username"); 文字列パスワード = pros.getProperty("password"); 文字列 mysqlpaths = pros.getProperty("mysqlpath"); 文字列アドレス = pros.getProperty("dbAddress"); 文字列 databaseName = pros.getProperty("databaseName"); 文字列 sqlpath = pros.getProperty("sqlFilePath"); ファイルbackupath = new File(sqlpath); バックアップパスが存在する場合(){ バックアップディレクトリをmkdir()でバックアップします。 } StringBuffer sb = 新しいStringBuffer(); sb.append(mysqlpaths); sb.append("mysqldump "); sb.append("--opt "); sb.append("-h "); sb.append(アドレス); sb.append(" "); sb.append("--user="); sb.append(ユーザー名); sb.append(" "); sb.append("--password="); sb.append(パスワード); sb.append(" "); sb.append("--lock-all-tables=true"); sb.append("--result-file="); sb.append(sqlpath); sb.append(テーブル名+".sql"); sb.append(" "); sb.append("--default-character-set=utf8"); sb.append(データベース名); sb.append(" "); sb.append(テーブル名); ランタイム cmd = Runtime.getRuntime(); プロセス p = cmd.exec(sb.toString()); p.waitFor(); // このステートメントは、バックアップが完了していない場合、スレッドが待機し続けることを示すために使用されます。 } キャッチ (例外 e) { logger.error("バックアップ操作で問題が発生しました", e); }ついに{ backUpTableList.remove(tableName); // 最終的には削除されます } } } パブリック静的プロパティ getPprVue(String propertyName) { 入力ストリーム inputStream = DbBackUpMethod.class.getClassLoader().getResourceAsStream(properName); プロパティ p = new Properties(); 試す { p.load(入力ストリーム); 入力ストリームを閉じます。 } キャッチ (IOException e) { logger.error("バックアップデータの構成ファイルを読み取ることができません", e); } p を返します。 } }
Action では、バックアップ操作メソッドを直接呼び出すことができます。 Javaコードコレクションコード DbBackUpMethod.getDbBackUpMethod().backup(tableName); // バックアップを呼び出す
同時に、ページにテーブルを削除する操作がある場合は、操作の前にテーブルがバックアップされているかどうかを確認する必要があります。 Javaコードコレクションコード if(null != DbBackUpMethod.backUpTableList.get(テーブル名))
次に、ページ JSP が呼び出されると、応答プロンプトが表示されます。削除できるテーブルは 1 つだけであると私は判断します。
関数deleteTableByTableName(){
var pk = table.getSelectedKeys();
if(""==pk){
alert("レコードを選択してください!");
false を返します。
}
pk.length > 1の場合{
alert("レコードを選択してください!");
false を返します。
}
var 行 = table.get(pk);
var テーブル名 = 行.テーブル名;
if(confirm("このテーブルを削除してもよろしいですか?")) {
if(confirm("テーブルを削除する前にバックアップする必要がありますか?\n\nバックアップを選択すると、システムはバックグラウンドで関連する操作を実行します!\nこの間、テーブルを削除することはできません!\nバックアップ操作は数時間かかる場合があります!ご注意ください!"")) {
document.form1.action="backUpTable.action?tableName=" + テーブル名;
ドキュメントフォーム1を送信します。
}それ以外{
if(confirm("送信してもよろしいですか? テーブルは削除されます!")) {
document.form1.action="del.action?tableName=" + テーブル名;
ドキュメントフォーム1を送信します。
}
}
}
} 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:- MySQL に絵文字を保存するときに表示されるエラー メッセージ「java.sql.SQLException: 文字列値が正しくありません:'\xF0\x9F\x92\xA9\x0D\x0A...'」の解決方法
- Java+MySQLの再帰を使用してツリー型のJSONリストを連結する方法の例
- Java バックエンド MySQL データベースを有効にして絵文字表現をサポートする方法
- Java データ型と MySql データ型の比較表
- JavaはMySQLデータベース内のすべてのテーブルのレコードの合計数を取得するための実行可能なメソッドを実装します
- Java バックアップを介して MySQL データベースを復元するための実装コード
- Java を使用して MySQL データベースに接続する方法の詳細なチュートリアル (推奨)
- mysql-connector-java.jar パッケージのダウンロード プロセスの詳細な説明
- Java における MySQL タイムゾーン問題の詳細な説明
|