Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak mogę zsynchronizować dwie tabele MySQL, które mają taką samą strukturę i inny serwer?

Jest kilka opcji. Jednym z nich jest skonfigurowanie replikacji w MySQL, który automatycznie kopiuje dane między serwerami i automatycznie je synchronizuje, z dokładnością do kilku sekund w miarę przesyłania danych. Minusem jest to, że musisz udostępnić w sieci przynajmniej serwer główny, aby zezwolić na połączenia TCP.

Zewnętrznie możesz wykonywać regularne mysqldumps na serwerze A, kopiować na serwer B, ładować do mysql i gotowe. Będzie to miało ziarnistość niezależnie od przedziału czasu, w którym uruchomisz sekwencję zrzutu/kopiowania/ładowania. Wadą jest to, że mysqldump blokuje tabele podczas pracy. Jeśli masz dużą bazę danych, zostaniesz zablokowany w tabelach serwera A podczas postępu zrzutu, a serwer B zostanie zablokowany podczas ładowania danych. A ładowanie zrzutu jest znacznie wolniejsze niż robienie zrzutu w pierwszej kolejności, ponieważ mysql wykonuje wszelkiego rodzaju wewnętrzne porządki (aktualizacje kluczy, aktualizacje metadanych tabeli itp.) podczas ładowania.

W przypadku trzeciej opcji możesz napisać synchronizator, który porównuje wiersze między dwiema bazami danych i w razie potrzeby dokonuje aktualizacji. Jednak wtedy przerzucasz zawartość jednego serwera na drugi i wykonujesz operacje wiersz po wierszu. Plus konieczność obsługi wszelkich zależnych aktualizacji klucza obcego / relacji podrzędnych, a to się komplikuje w pośpiechu. W tym momencie może być lepiej, jeśli użyjesz opcji mysqldump.

Oczywiście powinieneś zaktualizować swój MySQL do czegoś bardziej nowoczesnego. v4.x jest bardzo przestarzały. Powinieneś używać przynajmniej wersji 5.0, najlepiej 5.1.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Która wersja to mój serwer MySQL?

  2. Jak połączyć MySQL z programem Java

  3. Przeglądarka Neo4j

  4. InnoDB wstawia się bardzo wolno i zwalnia

  5. MySQL otrzymuje ciąg(i) między dwoma # / wieloma parami #