Mysqldump / Mysql import in Testdatenbank

HaubenTaucher

Benutzer
Beiträge
6
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.png2021-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
 
Werbung:
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.
 
Zieldatenbank und -User wird beim restore angegeben, nicht beim durchführen des Dumps.
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?
 
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?
 
schauen, was im Dump steht. Ich nutze kein MySQL, aus Gründen ...

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`

--
 
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....
 
Werbung:
Zurück
Oben