Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przesłanie danych między 2 bazami na różnych serwerach
Forum PHP.pl > Forum > PHP
kordian
Witam,

Chciałbym synchronizować dane między dwiema tabelami na 2 różnych serwerach. Jedyne, co mi przychodzi do głowy, to podłączenie się do zdalnej bazy, select na bazie, zapisanie wyników do pliku CSV, rozłaczenie się i podłaczenie do lokalnej bazy danych i zassanie danych z pliku do bazki. Czy ma ktoś inny pomysł na bezpośrednie pisanie z bazy do bazy (MySQL)?
Pyton_000
Może replikacja Master-slave z opcją "replicate-do-table"
https://dev.mysql.com/doc/refman/5.7/en/rep...licate-do-table
kordian
Też myślałem o replikacji ale niestety nie ma dostępu do SSH na hostingu, nie mówiąc już o rootcie
Pyton_000
No to napisz sobie jakiś skrypcik który zrobi Ci dump porcji, i połączy się z drugą bazą (tworzysz usera z dostępem tylko z tego 1 IP), i robisz inserty.
kordian
No dokładnie tak chce zrobić, podłączenie od zdalnej, zrzucenie do pliku, podłączenie do lokalnej, zassanie. Pytam się, bo myślałem, że można to zrobić lepiej (bez dostępu do shella i bez roota)
Pyton_000
No toć mówię że na serwerze źródłowym ustanowić 2 połączenia i przepychać. bez żadnych plików.
kordian
No ale jak to połączyć, bo albo mam handler do zdalnego, który nie działa lokalnie albo na odwrót
Pyton_000
W skrócie:

  1. $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
  2. $dbh2 = new PDO('mysql:host=123.123.123.123;dbname=test', $user2, $pass2);
kordian
Tyle, to ja wiem. Tylko powiedzmy, że loguje się do zdalnej bazy i jak mam zrobić INSERT into local table SELECT from remote table?
Pyton_000
Nie, musisz pobrać dane i wygenerować sobie Insert statement.
kordian
A no właśnie. Czyli albo do tablicy albo do pliku smile.gif
borabora
kiedyś robiłem coś takiego:
https://dev.mysql.com/doc/refman/5.7/en/fed...escription.html

trochę czasu minęło, więc dokładnie nie pamiętam jakie były z tym problemy i wymagania tego rozwiązania, poza tym że wolno działało z joinami pomiędzy dwoma serwerami. Ale do sciągania całej tabeli może by wystarczyło
phpion
Cytat(Pyton_000 @ 10.03.2017, 13:35:41 ) *
No toć mówię że na serwerze źródłowym ustanowić 2 połączenia i przepychać. bez żadnych plików.

Powodzenia przy przenoszeniu dużej ilości rekordów.

My w pracy stosujemy myk z wykorzystaniem podmontowqnego katalogu. Obie maszyny mogą do niego zarówno pisać jak i z niego czytać. Generalnie cały myk polega na select into outfile oraz load data infile. Działa to mega szybko. Jeśli nie możesz mieć sztuczki z katalogiem to sadze ze i tak szybciej będzie zrzucać dane z tabeli źródłowej do pliku, przesyłać go po ftp, po czym ładować do tabeli docelowej.
kordian
Jedna maszyna jest za granicą na jakimś hostingu więc może być ciężko.

Generalnie nie mam dużej ilości danych do przeniesienia, poza tym zawsze sprawdzam po id, co jest już u mnie i przenoszę tylko to, czego jeszcze nie mam. pliki mają co najwyżej kilkadziesiąt kilobajtów smile.gif

Dzięki za pomoc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.