Mysql Datenbank kopieren bzw. duplizieren

Möchte man in Mysql eine Datenbank kopieren bzw. duplizieren kann man das leider nicht in einem Schritt. Dies muss man in MySQL in drei Schritten vornehmen. Dazu muss zunächst die Quelldatenbank exportiert werden, dann wird die neue Datenbank erzeugt um abschließend die im ersten Schritt erzeugten Daten in die neue Datenbank zu importieren.

Vorgehensweise im Detail

1. Schritt: Exportieren der vorhandenen Daten aus der Quelldatebank auf der Konsole

[vader@deathstar ~]$ mysqldump SOURCE_DB > dump_db.sql

2. Schritt: Erzeugen der neuen Datenbank im SQL-Client

MariaDB [(none)]> create database TARGET_DB;

3. Schritt: Importieren der im ersten Schritt exportierten Daten in das neue Ziel – ebenfalls auf der Konsole

[vader@deathstar ~]$ mysql TARGET_DB < dump_db.sql

Mit dieser Schritt-für-Schritt-Anleitung kann man nun ganz einfach die Datenbank klonen.

Hat Dir das Tutorial geholfen? Hinterlass mir doch einen Kommentar

Weiterführende Literatur

Unterschiede der SQL Datenbank nach beliebiger Operation betrachten

Ich möchte in einer mir unbekannten MySQL Datenbank Veränderungen nach einer bestimmten Operation beobachten ohne diese im Detail zu kennen und auch nicht den Programmfluss zu debuggen oder SQL INSERTs oder UPDATEs nachzuverfolgen.

Dafür werde ich in vier Schritten vorgehen. Zunächst wird ein Dump des Datenbestandes vorgenommen:

mysqldump my_db > vorher.sql

Dann wird als zweites die Operation durchgeführt. Dies kann ein Skriptstart oder auch z.B. ein Seitenabruf oder Formularversand sein.

Danach wird erneut ein Dump in eine zweite Datei geschrieben:

mysqldump my_db > nachher.sql

Zu guter letzt werden nun diese beiden Dateien miteinander verglichen.

diff -I RE vorher.sql nachher.sql

Es werden hiermit nur die Veränderungen aufgezeigt, die auch tatsächlich angefallen sind, die man nun mit einem guten Editor wie z.B. dem Notepad++ gut untersuchen kann.

Es sollte natürlich sichergestellt werden, dass keinerlei andere Prozesse den Datenbestand verändern um das Ergebnis nicht zu verfälschen.

Pagination in mysql-client

Unterwegs auf der Linuxkonsole habe ich oft eine Verbindung zum MySQL-Server offen um SQL-Abfragen abzusetzen und mit den Ergebnissen zu agieren.

Nun ist es jedoch oftmals so, dass das dieses Ergebnis länger als die gegenwärtigen Bildschirmgröße ist und die Konsole zu scrollen beginnt. Dies stört mich aus diversen Gründen und schränkt mich in meiner Arbeit ein. Mittels Pagination im mysql-client kann man das jedoch simpel und zugleich pfiffig lösen:

pager more;

Hiermit kann man nun Zeilen- oder Seitenweise – wie man es von more gewohnt ist – durch das Ergebnis vorwärts scrollen sowie auch mittels STRG+C unterbrechen.

Man kann das Ergebnis auch in andere Programme pipen wie z.B. mit less durch das Ergebnis beliebig vor- und zurücknavigieren oder gar eine übergreifende Volltextsuche tätigen.

pager less;

Um das Paging wieder zu deaktivieren genügt der pager Befehl ohne Argument:

pager;

Die hier aufgeführten Befehle sind nur für die Dauer der gegenwärtigen Sitzung gültig. Will man das Paging dauerhaft einrichten so ist dies in der my.cnf mit den o.g. Befehlen in der client Sektion einzutragen und wird sodann mit jedem Programmstart standardmäßig verfügbar.

[client]
pager=more

Umstellung mysql auf mysqli

Mit PHP 5.5.0 werden die alten mysql-Funktionen als deprecated markiert und in einer künftigeren – mit dem heutigen Stand jedoch nicht näher spezifizierten Version – gänzlich entfernt. Daher sollte eine Umstellung dessen in den eigenen Projekten mittelfristig eingeplant werden. Dafür habe ich an dieser Stelle eine Umfängliche Schritt-für-Schritt Anleitung zusammengestellt.

MySQL: Das umfassende HandbuchDie Umstellung der mysql_*-Funktionen auf mysqli_*-Funktionen geht relativ reibungslos vonstatten, sofern man eine zentrale Verarbeitung der Datenbankabfragen implementiert hat. Ist dies nicht der Fall so wird sich der hier aufgeführte Aufwand um die Anzahl der zu behandelnden Stellen zuzüglich der notwendigen Tests in ungefähr multiplizieren. Umstellung mysql auf mysqli weiterlesen