kordian
9.03.2017, 20:05:24
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
9.03.2017, 21:05:16
kordian
10.03.2017, 08:50:16
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
10.03.2017, 09:13:52
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
10.03.2017, 13:19:55
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
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.
kordian
10.03.2017, 15:54:29
No ale jak to połączyć, bo albo mam handler do zdalnego, który nie działa lokalnie albo na odwrót
Pyton_000
10.03.2017, 21:17:09
W skrócie:
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$dbh2 = new PDO('mysql:host=123.123.123.123;dbname=test', $user2, $pass2);
kordian
12.03.2017, 17:44:34
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
12.03.2017, 17:58:08
Nie, musisz pobrać dane i wygenerować sobie Insert statement.
kordian
12.03.2017, 20:20:34
A no właśnie. Czyli albo do tablicy albo do pliku
borabora
12.03.2017, 20:30:47
kiedyś robiłem coś takiego:
https://dev.mysql.com/doc/refman/5.7/en/fed...escription.htmltrochę 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
14.03.2017, 07:16:16
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
14.03.2017, 08:39:05
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

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.