Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Przesłanie danych między 2 bazami na różnych serwerach
kordian
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 9.10.2009

Ostrzeżenie: (0%)
-----


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)?
Go to the top of the page
+Quote Post
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Może replikacja Master-slave z opcją "replicate-do-table"
https://dev.mysql.com/doc/refman/5.7/en/rep...licate-do-table
Go to the top of the page
+Quote Post
kordian
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 9.10.2009

Ostrzeżenie: (0%)
-----


Też myślałem o replikacji ale niestety nie ma dostępu do SSH na hostingu, nie mówiąc już o rootcie
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
kordian
post
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 9.10.2009

Ostrzeżenie: (0%)
-----


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)
Go to the top of the page
+Quote Post
Pyton_000
post
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


No toć mówię że na serwerze źródłowym ustanowić 2 połączenia i przepychać. bez żadnych plików.
Go to the top of the page
+Quote Post
kordian
post
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 9.10.2009

Ostrzeżenie: (0%)
-----


No ale jak to połączyć, bo albo mam handler do zdalnego, który nie działa lokalnie albo na odwrót
Go to the top of the page
+Quote Post
Pyton_000
post
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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);
Go to the top of the page
+Quote Post
kordian
post
Post #9





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 9.10.2009

Ostrzeżenie: (0%)
-----


Tyle, to ja wiem. Tylko powiedzmy, że loguje się do zdalnej bazy i jak mam zrobić INSERT into local table SELECT from remote table?
Go to the top of the page
+Quote Post
Pyton_000
post
Post #10





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Nie, musisz pobrać dane i wygenerować sobie Insert statement.
Go to the top of the page
+Quote Post
kordian
post
Post #11





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 9.10.2009

Ostrzeżenie: (0%)
-----


A no właśnie. Czyli albo do tablicy albo do pliku (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
borabora
post
Post #12





Grupa: Zarejestrowani
Postów: 116
Pomógł: 33
Dołączył: 8.09.2014

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
phpion
post
Post #13





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.
Go to the top of the page
+Quote Post
kordian
post
Post #14





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 9.10.2009

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/smile.gif)

Dzięki za pomoc.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.08.2025 - 03:34