MySQL-Backup-Tabellenvorgang basierend auf Java

MySQL-Backup-Tabellenvorgang basierend auf Java

Der Kern ist mysqldump und Runtime
Der Vorgang ist eigentlich nicht sehr schwierig. Erstellen Sie eine Klasse, um den Sicherungsvorgang durchzuführen. Markieren Sie die Tabelle nach dem Empfang des Sicherungsaufrufs als gesichert und erstellen Sie dann einen untergeordneten Thread, um den Sicherungsvorgang durchzuführen. Die benötigten Konfigurationsinformationen werden aus der Konfigurationsdatei ausgelesen, wobei auch auf Pfadprobleme unter Windows und Linux zu achten ist.


Die Konfigurationsdateien lauten wie folgt:

Java-Codesammlungscode
# Datenbankadresse
dbAddress=lokaler Host
# Name der zu sichernden Datenbank
Datenbankname=nms
# Datenbank-Benutzername
Benutzername = root
# Datenbankkennwort
Passwort = root
#mysqldump-PfadLinux
mysqlpath = /usr/bin/
# Speicherort der Sicherungsdatei Linux
sqlFilePath = /MySQlBack/
#mysqldump-Pfad Windows
#mysqlpath = C\://Programme//MySQL//MySQL Server 5.5//bin//
# Speicherort der Sicherungsdatei Windows
#sqlFilePath =C\://MySQl//

Die Codeklasse, die die Funktion ausführt, ist wie folgt:

Java-Codesammlungscode
Paket com.nms.common.db;
importiere java.io.File;
importiere java.io.IOException;
importiere java.io.InputStream;
importiere java.util.Map;
importiere java.util.Properties;
importiere java.util.concurrent.ConcurrentHashMap;
importiere org.apache.commons.logging.Log;
importiere org.apache.commons.logging.LogFactory;
/**
* Für Datenbanksicherungsvorgänge
*/
öffentliche Klasse DbBackUpMethod {
privater statischer Loglogger = LogFactory.getLog(DbBackUpMethod.class);
private statische Eigenschaften pros = getPprVue("db.properties");
öffentliche statische Map<String, String> backUpTableList = neue ConcurrentHashMap<String, String>();
private statische DbBackUpMethod backObj = neue DbBackUpMethod();
öffentliche statische DbBackUpMethod getDbBackUpMethod(){
gib BackObj zurück;
}
öffentliche void Backup (String Tabellenname) {
wenn(null != backUpTableList.get(tableName)) return;
backUpTableList.put(tableName, tableName); // Als bereits für Backup verwendet markieren
neuer Thread(neuer DbBackUpThread(Tabellenname)).start();
}
/**
* Wird verwendet, um eine Sicherung einer Tabelle durchzuführen
*/
Klasse DbBackUpThread implementiert Runnable {
Zeichenfolge Tabellenname = null;
öffentliche DbBackUpThread(String tableName){
this.tableName = Tabellenname;
}
@Überschreiben
öffentliche Leere ausführen() {
versuchen {
String-Benutzername = pros.getProperty("Benutzername");
String-Passwort = pros.getProperty("Passwort");
Zeichenfolge mysqlpaths = pros.getProperty("mysqlpath");
Zeichenfolgeadresse = pros.getProperty("dbAddress");
String Datenbankname = pros.getProperty("Datenbankname");
Zeichenfolge sqlpath = pros.getProperty("sqlFilePath");
Datei Backupath = neue Datei (SQL-Pfad);
wenn (!backupath.exists()) {
Backupath.mkdir();
}
StringBuffer sb = neuer StringBuffer();
sb.append(mysqlpfade);
sb.append("mysqldump ");
sb.anhängen("--opt ");
sb.append("-h ");
sb.anhängen(Adresse);
sb.anhängen(" ");
sb.anhängen("--user=");
sb.append(Benutzername);
sb.anhängen(" ");
sb.append("--password=");
sb.append(Passwort);
sb.anhängen(" ");
sb.append("--lock-all-tables=true");
sb.append("--result-file=");
sb.append(sqlpfad);
sb.append(Tabellenname+".sql");
sb.anhängen(" ");
sb.append("--default-character-set=utf8");
sb.append(Datenbankname);
sb.anhängen(" ");
sb.append(Tabellenname);
Laufzeit cmd = Runtime.getRuntime();
Prozess p = cmd.exec(sb.toString());
p.waitFor(); // Mit dieser Anweisung wird markiert, dass der Thread weiter wartet, wenn die Sicherung nicht abgeschlossen ist
} Fang (Ausnahme e) {
logger.error("Beim Sicherungsvorgang ist ein Problem aufgetreten", e);
}Endlich{
backUpTableList.remove(tableName); // wird eventuell entfernt
}
}
}
öffentliche statische Eigenschaften getPprVue(String propertyName) {
InputStream inputStream = DbBackUpMethod.class.getClassLoader().getResourceAsStream(properName);
Eigenschaften p = neue Eigenschaften();
versuchen {
p.load(Eingabestream);
inputStream.schließen();
} Fang (IOException e) {
logger.error("Konfigurationsdatei für Sicherungsdaten konnte nicht gelesen werden", e);
}
Rückgabe p;
}
}

In Aktion können Sie die Methode für den Sicherungsvorgang direkt aufrufen:

Java-Codesammlungscode
DbBackUpMethod.getDbBackUpMethod().backup(tableName); // Backup aufrufen

Wenn die Seite über eine Operation zum Löschen der Tabelle verfügt, sollten Sie gleichzeitig feststellen, ob die Tabelle vor der Operation gesichert wird.

Java-Codesammlungscode
wenn(null != DbBackUpMethod.backUpTableList.get(tableName))

Wenn dann die Seiten-JSP aufgerufen wird, kann eine Antwortaufforderung ausgegeben werden. Meiner Einschätzung nach kann nur eine Tabelle gelöscht werden:

Funktion deleteTableByTableName(){
	var pk = table.getSelectedKeys();
	wenn(""==pk){
		alert("Bitte wählen Sie einen Datensatz aus!");
		gibt false zurück;
	}
	wenn(pk.length > 1){
		alert("Bitte wählen Sie einen Datensatz aus!");
		gibt false zurück;
	}
	var Zeilen = Tabelle.get(pk);
	var Tabellenname = Zeilen.Tabellenname;
	if(confirm("Möchten Sie diese Tabelle wirklich löschen?")) {
		if(confirm("Müssen Sie die Tabelle vor dem Löschen sichern?\n\nNachdem Sie die Sicherung ausgewählt haben, führt das System entsprechende Vorgänge im Hintergrund aus!\nWährend dieser Zeit können Sie die Tabelle nicht löschen!\nDer Sicherungsvorgang kann mehrere Stunden dauern! Bitte beachten Sie!"")) {
			document.form1.action="backUpTable.action?tableName=" + Tabellenname;
			Dokument.form1.submit();
		}anders{
			if(confirm("Sind Sie sicher, dass Sie den Vorgang absenden möchten? Die Tabelle wird gelöscht!")) {
				document.form1.action="del.action?tableName=" + Tabellenname;
				Dokument.form1.submit();
			}
		}
	}
}

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Lösung für die Fehlermeldung "java.sql.SQLException: Incorrect string value:'\xF0\x9F\x92\xA9\x0D\x0A...'" beim Speichern von Emoticons in MySQL
  • Ein Beispiel für die Verwendung der Java+MySQL-Rekursion zum Verketten baumförmiger JSON-Listen
  • So aktivieren Sie die Java-Backend-MySQL-Datenbank zur Unterstützung von Emoji-Ausdrücken
  • Vergleichstabelle zwischen Java-Datentypen und MySql-Datentypen
  • Java implementiert eine praktikable Methode, um die Gesamtzahl der Datensätze aller Tabellen in der MySQL-Datenbank zu erhalten
  • Implementierungscode zum Wiederherstellen einer MySQL-Datenbank durch Java-Backup
  • Detailliertes Tutorial zum Herstellen einer Verbindung zu einer MySQL-Datenbank mithilfe von Java (empfohlen)
  • Detaillierte Erläuterung des Downloadvorgangs des Pakets mysql-connector-java.jar
  • Detaillierte Erklärung des MySQL-Zeitzonenproblems in Java

<<:  Lösung für das Fehlerproblem bei der Remote-Verbindung von Vscode zu Ubuntu

>>:  Vue verwendet Element-UI, um die Menünavigation zu implementieren

Artikel empfehlen

Was tun, wenn der Auto-Increment-Primärschlüssel in MySQL aufgebraucht ist?

Im Vorstellungsgespräch sollten Sie folgende Szen...

Über die Kontrolle und Verschönerung von Eingabedateien

Beim Hochladen auf einigen Websites wird nach dem...

Dieser Artikel entführt Sie in die Welt der js-Datentypen und Datenstrukturen

Inhaltsverzeichnis 1. Was ist dynamische Typisier...

So überwachen Sie die Linux-Speichernutzung mit einem Bash-Skript

Vorwort Auf dem Markt sind zahlreiche Open-Source...

Über Front-End JavaScript ES6 Details

Inhaltsverzeichnis 1. Einleitung 1.1 Babel-Transc...

js, um eine einfache Lotteriefunktion zu erreichen

In diesem Artikel wird der spezifische Code von j...

So konfigurieren Sie Openbox für den Linux-Desktop (empfohlen)

Dieser Artikel ist Teil einer Sonderserie zu den ...

So verwenden Sie Docker Swarm zum Erstellen von WordPress

Ursache Ich habe WordPress einst auf Vultr einger...

So ändern Sie Port 3389 des Remotedesktops von Windows Server 2008 R2

Die Standardportnummer des Remotedesktops des Win...

Implementierungsprozess des Lupeneffekts im Javascript-Beispielprojekt

Inhaltsverzeichnis Vorwort Fall: Nachahmung des L...