2017-07-17 3 views
0

Ich versuche eine MySQL-Datenbank einzurichten, die Daten von 3 anderen MySQL-Datenbanken übernimmt. Die Daten, die kopiert werden würden, wären eine Abfrage, die das Datenformat standardisiert. Die Methode müsste entweder täglich als Skript ausgeführt oder in Echtzeit synchronisiert werden, eine der Methoden wäre für dieses Projekt in Ordnung.Wie haben Sie eine zentralisierte MySQL-Datenbank?

Zum Beispiel: Die Abfrage von der Quelle DB: SELECT order_id , Preis, Menge WHERE date_order_placed = CUR_DATE() FROM orders

Dann möchte ich die Ergebnisse dieser Abfrage nehmen, die in eine einge Ziel-DB

Die Datenbanken befinden sich auf separaten Hosts.

Ich habe versucht, Skripts zu erstellen, die CSV- und SQL-Exporte/Importe ohne Erfolg ausführen. Ich habe auch versucht, mit Python Pymysql-Bibliothek, aber schien übertrieben. Ich bin ziemlich verloren, haha.

Thanks :)

+0

Es gibt entweder zu viele mögliche Antworten, oder gute Antworten wären zu lang für dieses Format. Bitte fügen Sie Details hinzu, um die Antwortgruppe einzuschränken oder ein Problem zu isolieren, das in einigen Absätzen beantwortet werden kann. Ich würde vorschlagen, dass Sie ein Entwicklungsforum finden (vielleicht [Quora] (http://www.quora.com/Computer-Programming)?), Um Verallgemeinerungen zu erarbeiten. Dann, wenn Sie spezielle Codierprobleme haben, kommen Sie zurück zu Stack Overflow und wir helfen Ihnen gerne weiter. –

+0

Was Sie meinen, heißt ETL (extract, transform, load). Dafür gibt es viele Tools, sowohl kostenpflichtig als auch kostenlos. Ihr Job ist einfach, so dass Sie mit dem Scripting durchkommen können, wenn Sie das wollten. Werfen Sie einen Blick auf das Laden von Massen, so dass Sie einen Chunk aus der Quelle abrufen, alles tun und den Chunk in das Ziel einfügen können. – Brian

+0

@Brian genau das, was ich gesucht habe! Vielen Dank. –

Antwort

0

Plan A:

Verbindung zu Quelle. WÄHLEN SIE ... IN OUTFILE.
Verbindung zum Ziel herstellen. LOAD DATA INFILE vom obigen Ausgang.

Plan B (beide MySQL):

Replikation von der Quelle einrichten (als Master) und das Ziel (als Slave)

Plan C (3 MySQL-Server):

Replikation mit mehreren Quellen, um das Sammeln von Daten aus zwei Quellen zu einem einzigen kombinierten Ziel zu ermöglichen.

Ich denke, MariaDB 10.0 ist, wenn sie Multi-Source-Repl eingeführt. Achtung: Die GTIDs von MariaDB sind anders als die von MySQL. Aber ich denke, es gibt einen Weg, die Replikation, die Sie suchen, zu machen. (Es kann so einfach sein wie GTIDs ausschalten ??)

Plan D (wie erwähnt):

Einige ETL-Software.

Bitte denken Sie darüber nach, welchen Plan Sie verfolgen möchten, und bitten Sie um Hilfe, um sich auf einen zu konzentrieren. Inzwischen ist deine Frage zu weit gefasst.

+0

Danke, dass Sie mir meine Optionen klar gemacht haben. Plan C, Multi-Source-Replikation, scheint die beste Option zu sein, ist aber nur für die neueste Version von MySQL (5.7) verfügbar. Meine Versionen sind bei 5.5 und 5.6. Ich bin also auf diese Option gestoßen. –

+0

Leider. MariaDB und Galera (zusätzlich zu MySQL oder MariaDB) hatten eine Multi-Source-Replikation vor Oracle MySQL 5.7. –

+0

Danke, versuchen Sie MariaDB als Multi-Source-Slave für die 5.5 und 5.6-Versionen von MySQL. –

Verwandte Themen