2017-10-12 8 views
1

Moi et mon équipe travaille sur la correction des choses que notre prédécesseur, ce qui est en train de ruiner la structure de nos serveurs. Notre prédécesseur met beaucoup de serveurs avec la même base de données dessus (nom de base de données, tables etc), et chaque serveur contient des données qui ne sont pas disponibles pour l'autre.Importer deux fichier de vidage mysql différent avec le même schéma (nom de base de données) sur le même serveur

Exemple:

Server 1 contient des informations client, mais aucune transaction client

Server 2 n'a pas d'informations de client, mais a transaction client

et ainsi de suite ...

Maintenant, nous travaillons à corriger ces choses. Mettez toutes les données de 2 serveurs à un seul serveur.

En revanche, nous avons deux dump mysql différents et un serveur.

Question: Est-il acceptable d'importer ces deux dump mysql avec le même nom de base de données, tables, etc, mais contient des données différentes sur un serveur qui ont déjà ladite base de données?

Je l'ai déjà importé le gros de dump mysql, donc je suis en attente de votre confirmation à ce sujet.

Mon serveur est Ubuntu Server 16.04.3 (avec un minimum IUG)

serveur Mysql 5.7 avec Mysql Workbench

Merci beaucoup ...

MISE À JOUR

Depuis la mysql dump contient seulement la partie CREATE TABLE tablename et INSERT INTO et NO DROP TABLE IF IT EXIST tablename. Je procède tout simplement l'exécution de la décharge de MySQL avec l'option d'ignorer les erreurs (mais pas souhaitable, bien sûr, cela dépend de votre situation), étant donné que mon seul souci est d'ajouter que les données manquantes des deux dump mysql, le seul les erreurs que j'ai rencontrées étaient les "entrées en double", et c'est parfait pour mon cas.

Merci.

Répondre

1

Un fichier de vidage, par défaut, est rien d'autre qu'un tas d'instructions SQL comme ceci:

-- 
-- Table structure for table `foo` 
-- 

DROP TABLE IF EXISTS `foo`; 

CREATE TABLE `foo` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    ...other columns... 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 

-- 
-- Dumping data for table `foo` 
-- 

INSERT INTO `foo` VALUES (...lots of rows of data...); 

Notez que la première chose qu'il fera pour chaque table est DROP TABLE, puis recréez TABLE.

Ne faites pas cela!

Si vos tables ont les mêmes noms, il effacera les données que vous avez chargé jusqu'à présent.

Je vous suggère de créer une nouvelle base de données et de charger le fichier de vidage dans ce. Ensuite, même si les tables portent les mêmes noms, vous aurez accès à toutes les données dans une instance MySQL. Vous pouvez ensuite utiliser SQL pour exécuter des requêtes multi-bases pour fusionner les données de quelque manière que vous voulez (comme avec UPDATE multi-tables se joindre à chaque table du même nom dans chaque base de données).Je me demande pourquoi votre ancien développeur de base de données a séparé les données ... pourrait-il avoir quelque chose à voir avec la conformité Sarbanes-Oxley? Vous pourriez vouloir examiner cela avant de fusionner les données.

+0

merci pour votre réponse. Je vais examiner votre suggestion, même si je ne suis pas familier à ce sujet. Ce que je sais en ce qui concerne la raison est, ils éprouvent une mauvaise performance, comme, le chargement a pris beaucoup de temps. mais selon mon évaluation, une mauvaise performance est le résultat de mauvaises spécifications et configuration du serveur. Mais nous allons encore tester cela juste pour combiner toutes les données, en raison des pertes de données, certaines transactions ne peuvent pas être trouvées. – Markmeplease

+0

Salut Bill Karwin, question, Que faire si le vidage mysql n'a pas 'DROP TABLE SI EXISTS foo;' 'CREATE TABLE foo' - Puis-je exécuter ce vidage mysql sur le serveur? Merci beaucoup. – Markmeplease

+1

@Markmeplease, oui, il y a même des options que vous pouvez utiliser pour mysqldump pour omettre les instructions DROP et CREATE. Je vous encourage à lire la documentation et à l'essayer! –