disse1987
Goto Top

MySQL Backup mit Powershell Script

Hallo erstmal,

Ich habe die Ehrenvolle Aufgabe bekommen unsere Batch Scripte in die PS zu bringen.
Da ich aber von MySQL und vom Scripten bis jetzt wenig Ahnung habe tu ich mich etwas schwer damit.

Momentan stehen für das Backup Script 3 Fragen im Raum.

1. Habe ich mehrere Datenbanken oder handelt es sich "siehe Screenshot" nur um Tabellen oder was auch immer in der DB?

db

2. Wenn es sich um mehrere Datenbanken handel sollte, wie würde der PS Befehl aussehen (da sich Namen auch mal ändern würde ich gerne das alle DB's unabhänig vom Namen in einem DUMP gesichert werden)?!
Ich finde beim Googlen nur Beispiele bei der eine DB gesichert wird, bsp. im folgendem:


$mysqlpath =
$backuppath =
$7zippath =
$config =

$errorLog =


.\mysqldump.exe --defaults-extra-file=$config --log-error=$errorLog --result-file=$backupfile --databases $database /c

3. Unsere DB/DB's haben vershiedene Versionsstände... z.B v521, diese muss ich später mit in den Namen des DUMPs einbringen, wird das auch aus der DB selbst ausgelesen oder aus einer anderen Datei und wenn ja wie? Auch hier hilft Google nicht, finde nur Theman zum auslesen der MySQL Version jedoch nicht für die der DB.


Ich danke euch schonmal!

Content-Key: 541219

Url: https://administrator.de/contentid/541219

Printed on: April 24, 2024 at 14:04 o'clock

Member: Henere
Henere Jan 30, 2020 at 13:59:14 (UTC)
Goto Top
Servus, ich kann Dir nicht sagen ob "MYSQLBACKUP" für Windows verfügbar ist. Aber das ist derzeit das Mittel meiner Wahl.
Member: bloodstix
bloodstix Jan 30, 2020, updated at Feb 17, 2020 at 14:09:15 (UTC)
Goto Top
Member: SlainteMhath
SlainteMhath Jan 30, 2020 at 14:24:26 (UTC)
Goto Top
Moin,

Habe ich mehrere Datenbanken oder handelt es sich "siehe Screenshot" nur um Tabellen oder was auch immer in der DB?
Was meinst du denn zeigt dir der Befehl "show database;" an?!

Vielleicht solltet du dich erstmal GROB in die Materie einlesen. Z.b. auf der MySQL Homepage?

lg,
Slainte
Member: manuel-r
manuel-r Jan 30, 2020 at 15:19:05 (UTC)
Goto Top
Habe ich mehrere Datenbanken oder handelt es sich "siehe Screenshot" nur um Tabellen oder was auch immer in der DB

Der Befehl show databases wird wohl ... tataaa ... alle Datenbanken anzeigen. Dazu muss man doch nur Englisch können.

Wenn es sich um mehrere Datenbanken handel sollte, wie würde der PS Befehl aussehen

Ich wüsste nicht, dass die Powershell von Haus aus MySQL kann. Du kannst aber über die Powershell die MySQL-Tools ansteuern die mitgeliefert werden.

Unsere DB/DB's haben vershiedene Versionsstände... z.B v521, diese muss ich später mit in den Namen des DUMPs einbringen

Was meinst du mit Versionsstände? Unterschiedliche Versionen des Datenbankinhalts oder -modells eurer Applikation? Oder die Version unter der der MySQL-Server läuft?

Manuel
Member: bloodstix
bloodstix Jan 30, 2020 at 16:16:22 (UTC)
Goto Top
@manuel-r so wie ich das auf einer der Seiten gesehen habe, wenn man nach "backup all mysql databases with powershell" googelt, kann man die mysql.dll o.ä. in die Powershell laden und dann direkt mit MySQL in der PS arbeiten ohne die MySQL-Exen nutzen zu müssen.
Member: Disse1987
Disse1987 Jan 31, 2020 at 07:23:32 (UTC)
Goto Top
Danke, den Link hab ich schon, da ist eben das Problem das die "nur" eine DB sichern.
Member: Disse1987
Disse1987 Jan 31, 2020 at 07:56:27 (UTC)
Goto Top
Ja es müsste sich um den Datenbankinhalt handeln. Ich hab es glaub ich auch gerade herausgefunden, hab den Batch Befehl einfach völlig falsch interpretiert weil ich zugleich die PS Befehle im Kopf hatte um die Verbindung zur DB aufzubauen.

Auszug Batch:

for /f "tokens=1" %%a in ('%_mysql_exe% --batch -u backup railsys -e "select get_global_database_version() as version;" ^| findstr /v "version"') do (
set _database_version=%%a
)

set _database_version_label=
if defined _database_version (
set _database_version_label=-v%_database_version%
)


Der steuert die mysql_exe an und sucht dann ja (wo auch immer) nach der Version.
Der PS Befehl müsste bis auf die Ausführung der mysql_exe relativ ähnlich sein.

Anstatt /f "tokens=1" %%a müsste in der PS doch $= xyz reichen?!