2012-09-13 18 views
5

Mam zapytanie. Mam dwie tabele na dwóch różnych serwerach. Oba stoły mają tę samą strukturę. Tabela główna na jednym serwerze jest aktualizowana codziennie, więc chcę, aby zadanie cron lub cron skryptu php aktualizowało drugą tabelę slave na innym serwerze. Widziałem wiele skryptów, ale żaden nie rozwiązał moich wymagań.mysql synchronizacja dwóch tabel z 2 baz danych

+0

Zaktualizowano w jaki sposób? Struktura, dane, ... jak należy je zaktualizować, dlaczego wiele skryptów nie rozwiązało twoich wymagań. Jakie są twoje wymagania. –

+0

jego mysql..its nie o strukturze ... to dane, które ciągle wzrastają ... i chcą wykonać zadanie php cron ... ale nie wiem jak to zrobić w najprostszy i najbardziej zoptymalizowany sposób. Nie chcę wybierać danych z tabeli głównej i zapętlać je, dopóki nie zostaną wstawione do tabeli slave. Zajęło to zbyt wiele czasu. – user1587161

+0

, więc byłbym wdzięczny, gdyby sugerowano iam z pewnym zoptymalizowanym sposobem wykonania tego. – user1587161

Odpowiedz

7

Nie mogę uwierzyć, że nie znalazłeś odpowiedniego skryptu, aby to zrobić. W zależności od serwera do serwera pasma i łączności oraz rozmiaru danych tabeli, można:

  • bezpośrednio przenieść całą tabelę:

    mysqldump [options] sourcedatabase tablename \ 
        | mysql [options] --host remoteserver --user username ... 
    
  • przeniesienie tabeli z kompresją danych MySQL

    # same as above, mysql has the "-C" flag 
    
  • transfer za pomocą szyfrowania SSH i kompresji; mysql wykonany zdalnie

    mysqldump [options] sourcedatabase tablename \ 
        | ssh -C [email protected] 'mysql [options]' 
    
  • przenoszenia za pomocą pośredniej plik SQL i rsync przenoszenia jedynie zmiany

    mysqldump [options] sourcedb tbl > dump.sql 
    rsync [-z] dump.sql [email protected]:/path/to/remote/dump.sql 
    ssh [email protected] "mysql [options] < /path/to/remote/dump.sql" 
    

Powyższy są proste tabeli zastępuje zdalne dane są tracone i zastąpione przez mastera Kopiuj. Program mysqldump-plus-rsync-plus-ssh działa w czasie w przybliżeniu proporcjonalnym do modyfikacji, co oznacza, że ​​jeśli posiadasz zrzut danych SQL o wielkości 10 GB i dodajesz tuzin INSERTS, etap transferu będzie wymagał co najwyżej kilku sekund, aby zsynchronizować dwa pliki SQL.

Aby zoptymalizować również etap wstawiania, należy przejść do pełnej replikacji MySQL lub potrzebny jest sposób identyfikacji operacji w tabeli w celu ich ręcznej replikacji w czasie synchronizacji. Może to wymagać zmian w strukturze tabeli, np. dodanie kolumn "ostatnia synchronizacja" i "usuwanie potrzeb", a nawet wprowadzenie pomocniczych tabel.

1

Możesz użyć jednego prostego rozwiązania - Data Synchronization tool w dbForge Studio for MySQL.

  1. Utwórz projekt porównywania danych, który umożliwia porównywanie i synchronizowanie dwóch tabel na dwóch różnych serwerach MySQL.
  2. Uruchom aplikację w trybie wiersza poleceń za pomocą utworzonego dokumentu projektu porównania danych (plik * .dcomp).
Powiązane problemy