Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Mysqldump / Mysql import in Testdatenbank

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von HaubenTaucher, 29 März 2021.

  1. HaubenTaucher

    HaubenTaucher Benutzer

    Hallo zusammen,
    ich beschäftige mich zwar schon ein wenig länger mit Maria 10 unter phpMyadmin, aber jetzt benötige ich doch euer Expertenwissen.
    Folgendes möchte ich erreichen:
    Ein erstelltes Dump soll in eine Testdatenbank eingelesen werden und nicht beim Import die vorhandene originale Datenbank überschreiben.

    Ich habe eine Datenbank in Maria 10.3.x. Diese sichere ich aktuell mit dem "Export" über phpMyadmin von Hand.
    Die Einstellungen dazu habe ich 2021-03-29_13-15-55.png 2021-03-29_13-16-31.png
    hier mal angehängt.

    Dann habe ich über "Mysql create testrestoredb" eine Testdatenbank -in diese möchte ich den Dump zurück einlesen um mit der Originalen DB vergleichen zu können- erstellt.
    Wenn ich nun auf Kommandozeilenebene über MYSQL --host=127.0.0.1 --user=root --password=mypasswort testrestoredb < mytestrestoredump.sql zurück importiere, dann wird der Datenbankinhalt in die "testrestoredb" importiert.... Alles so wie gewünscht.

    Nun sollen aber die Dumps zukünftig per Zeitplan bzw. Cronjob über mysqldump erstellt werden.
    Und da fängt das Problem an.... Ich bekomme sozusagen die Einstellungen aus dem händischen Export unter phpmyadmin nicht auf die Kommandozeile umgesetzt.
    Die Konsequenz dabei ist, dass der Dump zwar erzeugt wird, aber wenn ich diesen Dump - wie oben beschrieben importiere - dann wird dieser Dump nicht in die TestrestoredB geladen, sondern überschreibt die Originaldatenbank. Die TestrestoreDB ist zwar vorhanden, aber nach dem Import komplett leer. Dafür sind die Daten der Originaldb überschrieben worden.

    Momentan erfolgt mein Aufruf für den Dump so:
    MYSQLDUMP --host=127.0.0.1 --user=root --password=mypasswort --databases mytestdb --flush-privileges --triggers --routines --events --hex-blob --quick > mytestrestoredump.sql

    Also irgendein Befehl scheint gegenüber der händischen Variante aus phpmyAdmin nicht im Mysqldump-Aufruf umgesetzt zu sein.....

    Kann mir bitte dazu jemand hilfreiche Tipps geben?

    Ich danke Euch im Voraus...

    HG
    Rolf
     
  2. Walter

    Walter Administrator Mitarbeiter

    Zieldatenbank und -User wird beim restore angegeben, nicht beim durchführen des Dumps.
     
    HaubenTaucher gefällt das.
  3. akretschmer

    akretschmer Datenbank-Guru

    ich nix MySQL, aber die man-page von mysqldump erwähnt eine Option

    Code:
    --no-create-db, -n Suppress the CREATE DATABASE statements that are otherwise included in the output if the --databases or --all-databases option is given.
    
     
    HaubenTaucher gefällt das.
  4. HaubenTaucher

    HaubenTaucher Benutzer

    Hallo Walter,
    vielen Dank für Deine schnelle Antwort....
    Aber ich muss da noch einmal nachhaken... mit mysqldump und der Angabe --databases mytestdb gebe ich doch an, dass ich von den vorhandenen DB´s diese "mytestdb" in das angegebene File.sql sichere... oder bin ich da falsch unterwegs?
    und dann lese ich dieses File wieder ein über mysql. Da gebe ich ja an, dass das mytestrestoredump.sql in die Datenbank "testrestoredb < mytestrestoredump.sql" importiert werden soll???

    Oder ist da meine Denkweise völlig falsch?
     
  5. HaubenTaucher

    HaubenTaucher Benutzer

    das versuche ich gleich mal umzusetzen.... Danke vorerst, ich melde mich so oder so dazu.... Vielen lieben Dank
     
  6. akretschmer

    akretschmer Datenbank-Guru

    nein, nur die Wahl der Datenbank ;-)
     
    HaubenTaucher gefällt das.
  7. HaubenTaucher

    HaubenTaucher Benutzer

    Hej,
    so...
    habe folgenden Aufruf: MYSQLDUMP --host=127.0.0.1 --user=root --password=mypasswort --databases mytestdb --flush-privileges --quick --no-create-db -n --routines --events --hex-blob > mytestrestoredump.sql ausgeführt.
    Der Dump wird ohne Fehlermeldungen erstellt.
    Dann habe ich diesen Dump mit folgendem Aufruf versucht in die Testdatenbank einzulesen:

    MYSQL --host=127.0.0.1 --user=root --password=mypasswort testrestoredb < mytestrestoredump.sql

    Leider war die Testdatenbank leer und die originale wurde überschrieben....

    Habt Ihr noch einen Tipp auf Lager?
     
  8. akretschmer

    akretschmer Datenbank-Guru

    schauen, was im Dump steht. Ich nutze kein MySQL, aus Gründen ...
     
  9. HaubenTaucher

    HaubenTaucher Benutzer

    Hilft das ein wenig weiter?


    -- MySQL dump 10.17 Distrib 10.3.21-MariaDB, for Linux ()

    --

    -- Host: 127.0.0.1 Database: feeds_br

    -- ------------------------------------------------------

    -- Server version 10.3.21-MariaDB



    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

    /*!40101 SET NAMES utf8mb4 */;

    /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;

    /*!40103 SET TIME_ZONE='+00:00' */;

    /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;

    /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

    /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

    /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;



    --

    -- Current Database: `feeds_br`

    --



    USE `feeds_br`;



    --

    -- Table structure for table `feedsbr_FeedsBL_category`

    --



    DROP TABLE IF EXISTS `feedsbr_FeedsBL_category`;

    /*!40101 SET @saved_cs_client = @@character_set_client */;

    /*!40101 SET character_set_client = utf8 */;

    CREATE TABLE `feedsbr_FeedsBL_category` (

    `id` smallint(6) NOT NULL AUTO_INCREMENT,

    `name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,

    `attributes` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,

    PRIMARY KEY (`id`),

    UNIQUE KEY `name` (`name`)

    ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

    /*!40101 SET character_set_client = @saved_cs_client */;



    --

    -- Dumping data for table `feedsbr_FeedsBL_category`

    --



    LOCK TABLES `feedsbr_FeedsBL_category` WRITE;

    /*!40000 ALTER TABLE `feedsbr_FeedsBL_category` DISABLE KEYS */;

    INSERT INTO `feedsbr_FeedsBL_category` VALUES (1,'Uncategorized',NULL),(2,'Einkauf','[]'),(3,'Finanzen','[]'),(4,'Gesundheit','[]'),(5,'iPhone','[]'),(6,'nachrichten','[]'),(7,'Unkategorisiert','[]');

    /*!40000 ALTER TABLE `feedsbr_FeedsBL_category` ENABLE KEYS */;

    UNLOCK TABLES;



    --

    -- Table structure for table `feedsbr_FeedsBL_entry`

    --



    DROP TABLE IF EXISTS `feedsbr_FeedsBL_entry`;

    /*!40101 SET @saved_cs_client = @@character_set_client */;

    /*!40101 SET character_set_client = utf8 */;

    CREATE TABLE `feedsbr_FeedsBL_entry` (

    `id` bigint(20) NOT NULL,

    `guid` varchar(760) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,

    `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,

    `author` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

    `content_bin` mediumblob DEFAULT NULL,

    `link` varchar(1023) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,

    `date` int(11) DEFAULT NULL,

    `lastSeen` int(11) DEFAULT 0,

    `hash` binary(16) DEFAULT NULL,

    `is_read` tinyint(1) NOT NULL DEFAULT 0,

    `is_favorite` tinyint(1) NOT NULL DEFAULT 0,

    `id_feed` smallint(6) DEFAULT NULL,

    `tags` varchar(1023) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

    PRIMARY KEY (`id`),

    UNIQUE KEY `id_feed` (`id_feed`,`guid`),

    KEY `is_favorite` (`is_favorite`),

    KEY `is_read` (`is_read`),

    KEY `entry_lastSeen_index` (`lastSeen`),

    KEY `entry_feed_read_index` (`id_feed`,`is_read`),

    CONSTRAINT `feedsbr_FeedsBL_entry_ibfk_1` FOREIGN KEY (`id_feed`) REFERENCES `feedsbr_FeedsBL_feed` (`id`) ON DELETE CASCADE ON UPDATE CASCADE

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

    /*!40101 SET character_set_client = @saved_cs_client */;



    --

    -- Dumping data for table `feedsbr_FeedsBL_entry`

    --
     
  10. akretschmer

    akretschmer Datenbank-Guru

  11. HaubenTaucher

    HaubenTaucher Benutzer

    Hej again ;-)
    Danke für den Link...

    Mittlerweile habe ich "rausgefingert", dass es am USE Statement im Dump liegt. Wenn ich das händisch aus dem Dump entferne, dann kann ich die DB ohne Probleme in eine Testdatenbank meiner Wahl einlesen.
    Leider werde ich aber diese "USE" im Dump nicht los... Leider sind die Tipps im Link nicht von Erfolg "gekrönt"...
    Mein Aufruf MYSQLDUMP --host=127.0.0.1 --user=root --password=mypasswort --flush-privileges > mytestrestoredump.sql erzeugt mir noch immer den "USE" im Dump....
    Eigentlich sollte "USE" ja raus sein, wenn man "-B" bzw. "--database" rauslässt... zumindest lt. dem Link....
     
  12. akretschmer

    akretschmer Datenbank-Guru

    Nun ja - MySQL ist halt eine Ansammlung von Bugs. You get what you paid for.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden