2017-01-13 1 views
1

Ich versuche, eine große Menge von Daten (rund 200k Datensätze alle paar Minuten) von einer zu einer anderen Datenbank zu übertragen (auch auf zwei verschiedenen Servern). Das Tabellenschema auf beiden Tabellen ist dbs ist gleich.php PDO Übertragungsergebnis in Datenbank

Also, was ist der beste Weg, eine riesige Ergebnismenge in eine db zu übertragen, ohne einen Speicherlimit Fehler zu verursachen.

meine aktuelle Lösung sieht so aus. Aber das bedeutet, dass ich etwa 200k laufe. Füge Queries in writeToDB2() ein und das scheint mir nicht sehr effektiv zu sein.

$stmt = $this->db_1->query("SELECT foo from bar"); 
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
    writeToDB2($row); 
} 

Kennt jemand eine bessere Lösung für den Massentransfer der Daten?

+0

Replikation zu vergessen? Obwohl es einen eigenen Nachteil hat – frz3993

Antwort

1

Die andere Antwort funktioniert nur, wenn derselbe Benutzer Zugriff auf beide Datenbanken hat.

Ein Allzweck-Lösung ist über PHP und PDO überhaupt und verwenden Konsole mysql Shell und mysqldump wie

mysqldump -uuser1 -ppassword1 db1 tablename | mysql -uuser2 -ppassword2 db2 
1

Glücklicherweise unterstützt mysql INSERT SELECT-Spanning-Datenbanken.

$stmt = $this->db_1->query("INSERT INTO db2.bar(foo) SELECT foo from db1.bar"); 
$stmt->execute(); 
+0

Wäre eine saubere Lösung, aber leider laufen diese Datenbanken nicht auf dem gleichen Server. Also ich habe zwei db-handels – rockZ

+0

, dann ist Ihre einzige Option die Replikation. – e4c5