Datenbank aus MySQL-Backup entfernen (mysql dump database exclude)

26. Mai 2014

Mit folgendem kleinen Skript können einzelne Datenbanken aus dem mysqldump entfernt werden. 

Die Benutzung auf der Kommandozeile erfolgt beispielsweise wie folgt:

mysqldump -A | mysqldump-cleaner.php test > dump.sql


Das Skript:

#!/usr/bin/php
<?php
/*
The MIT License (MIT)
Copyright (c) 2014 Explicatis GmbH
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
if ($argc != 2)
{
 echo "usage: dump-cleaner.php < database to delete >\n";
 exit;
}
$stdin=fopen('php://stdin','r');
$stdout = fopen('php://stdout', 'w');
$nameOfDatabase = $argv[1];
$writeFlag = true;
while(!feof($stdin))
{
 $currentLine = fgets($stdin);
if (preg_match('/^\-{2}\sCurrent\sDatabase: `(.*?)`/', $currentLine, $treffer))
 $writeFlag = $treffer[1] != $nameOfDatabase;
if ($writeFlag)
 fputs($stdout, $currentLine);
}
fclose($stdin);
fclose($stdout);


Das Skript kann hier als ZIP-Datei heruntergeladen werden: mysqldump-cleaner

Ähnlicher Beitrag: Datenbank aus MySQL-Backup extrahieren

Vaadin: Integrierte Entwicklung von Front- und Backend in Webanwendungen

24. Februar 2013

Lebhafte Diskussionen beim dritten „Wissensdurst“-Vortrag

Wenn bei der Entwicklung von Informationssystemen (z.B. betriebsinterne Web-Anwendungen) Front- und Backend getrennt entwickelt werden, ist dies sehr ineffizient. Problematisch sind beispielsweise

– sehr wenig Code-Wiederverwendung
– Einsatz verschiedener Programmiersprachen
– unübersichtliche Anzahl von verschiedenen Libraries

In seinem Vortrag beschäftigte sich Frederik Hausberg, Software-Entwickler bei Explicatis, mit dieser Problematik. Er hat sich intensiv wissenschaftlich mit der integrierten Entwicklung von Front- und Backend beschäftigt und verschiedene Lösungsansätze verglichen.
Insbesondere der Einsatz von AJAX-GUI Frameworks (AJAX=Asynchronous JavaScript und XML) verbessert die Effizienz der Entwicklung entscheidend, durch den Einsatz nur einer Programmiersprache und einen einheitlichen Entwicklungsprozess.

Folie VaadinDabei sprechen vor allem die folgenden Punkte für den Einsatz des Vaadin-Frameworks, was Frederik Hausberg an einigen live gezeigten Codebeispielen eindrucksvoll belegte:

  • Schnelligkeit (schnelle Reaktion der Benutzeroberflächenelemente, schnelles Speichern und Laden)
  • Benutzbarkeit (einheitliches Design und Benutzung wie eine Desktopanwendung)
  • Entwicklung (komplett in Java, aber auch eigene Add-Ons mit JavaScript oder GWT möglich, klares Datenmodell, schnell verständlich, weite Verbreitung, Open Source)
  • Funktionalität (fast alle funktionalen Anforderungen umsetzbar, viele Add-Ons, basiert auf GWT)

Der Kreis von rund 25 Teilnehmern setzte sich aus Software-Entwicklern verschiedener Unternehmen und thematisch Interessierten aus dem Startup-Umfeld des Gastgebers STARTPLATZ zusammen. Es entwickelte sich eine rege und lebhafte, teils kontroverse Diskussion über die Paradigmen hinter Vaadin und dessen Einsatzmöglichkeiten in Unternehmen sowie die Integration in Projekten.

Vortrag zu Vaadin in der Wissensdurst-Reihe der Explicatis GmbH
Vortrag zu Vaadin in der Wissensdurst-Reihe der Explicatis GmbH

Der Erfahrungsaustausch der Entwickler war gespickt mit teilweise heiteren Anekdoten, drehte sich dabei aber insbesondere um die Vor- und Nachteile des Einsatzes von Frameworks – vor allem Vaadin – in Praxisprojekten. Unterschiedliche Lösungsansätze wurden diskutiert und einige sehr konkrete Herausforderungen konnten gelöst werden.
Erstmals war der STARTPLATZ Veranstaltungsort für einen Vortrag in der Reihe „Wissensdurst“. Teilnehmer und Veranstalter waren rundum zufrieden, die Location entwickelt sich immer mehr zu einem Nukleus der Internet-Pioniere und Entwickler im Kölner Raum.

 
 

Nächste Themen und Termine von Wissensdurst-Vorträgen werden angekündigt unter www.explicatis.com/wissensdurst sowie auf Facebook unter http://fb.com/groups/wissensdurst/

Datenbank aus MySQL-Backup extrahieren (mysql dump splitter)

11. Januar 2011

Backups von großen Datenbankservern erreichen oftmals mehrere GigaByte. Ist die Anforderung, eine einzelne Datenbank aus einer sehr großen Datei zu extrahieren, scheitern Editoren an der Verarbeitung der Datenmengen. Alleine das Öffnen und Speichern dauern auf schnellen Rechnern jeweils dutzende Minuten.

Da sich auf Anhieb kein Skript für das Extrahieren einer einzelnen Datenbank aus einem kompletten Server-Backup finden ließ, habe ich selbst Hand angelegt und folgendes PHP-Skript für die Kommando-Zeile zusammen geschustert.

<?php
/*
The MIT License (MIT)

Copyright (c) 2011 Explicatis GmbH

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
if ($argc != 4)
{
  echo "usage: split.php < file source dump > < file target dump > < name of database >\n";
  exit;
}
$completeFile = fopen($argv[1], "r") or exit("Unable to open source file!");
$newFile = fopen($argv[2], "w") or exit("Unable to create target file!");
$nameOfDatabase = $argv[3];

$writeFlag = true;

while(!feof($completeFile))
{
  $currentLine = fgets($completeFile);

  if (preg_match('/^\-{2}\sCurrent\sDatabase: `(.*?)`/', $currentLine, $treffer))
    $writeFlag = $treffer[1] == $nameOfDatabase;

  if ($writeFlag)
    fputs($newFile, $currentLine);

  echo (($writeFlag) ? '.' : '-');
}
fclose($completeFile);
fclose($newFile);

 

Vielleicht hilft es ja dem ein oder anderen.

Download als ZIP-Datei: mysqldump-split

Ähnlicher Beitrag: Datenbank aus MySQL-Backup entfernen