Zsynchronizuj dwie bazy danych MySQL w dwóch różnych lokalizacjach

19

Mam dwie identyczne bazy danych MySQL, jedną na serwerze wewnętrznym, a drugą na serwerze hostingowym. Chcę codziennie aktualizować bazę danych na hoście internetowym o bazę danych na serwerze wewnętrznym. Czy istnieje sposób na zautomatyzowanie tego procesu, jak mogę to zrobić ręcznie? Jeśli mam to zrobić ręcznie, czy wymaga ode mnie zrzutu SQL bazy danych na serwerze wewnętrznym, a następnie zaimportowania go do bazy danych na hoście internetowym? Czy ktoś może poradzić.

ry12
źródło
Możesz odnieść się do istniejącej odpowiedzi opublikowanej tutaj w StackOverflow stackoverflow.com/questions/52583/…
Mahesh Patil
około 2 jeśli zrobię pełny zrzut z wewnętrznego i zaimportuję na produkcję, to zastąpi on bazę danych online, to znaczy mam hostów online w bazie danych i chcę przeprowadzić migrację wewnętrznej bazy danych do kupienia na żywo, czy możesz wyjaśnić BTW, co będzie zdarza się, że auto narasta między dwoma, jeśli obaj rezerwują ten sam identyfikator, to będzie bałagan!
shareef

Odpowiedzi:

20

Masz kilka opcji:

  1. Skonfiguruj replikację MySQL między serwerami. Twój serwer wewnętrzny może działać jako Master, a serwer hosta jako slave. Wszelkie aktualizacje wykonywane na urządzeniu głównym zostaną natychmiast zreplikowane do urządzenia podrzędnego (przy założeniu działającego połączenia). Najprawdopodobniej będzie to najłatwiejsza i najskuteczniejsza opcja do wyboru. Aby korzystać z replikacji, wewnętrzna baza danych musi być dostępna przez sieć z hosta internetowego.

    Możesz przeczytać więcej o replikacji tutaj .

  2. Każdego dnia możesz wykonać mysqldump na serwerze wewnętrznym, przesłać plik zrzutu do hosta internetowego i zaimportować dane. Ponieważ jest to pełny zrzut, jeśli masz bardzo dużą bazę danych, może to nie być możliwe. Jeśli chcesz, ta procedura może potencjalnie zostać skryptowana, aby uniknąć konieczności ręcznego wykonywania tej czynności.

  3. Można skonfigurować rejestrowanie binarne na serwerze wewnętrznym. Następnie możesz wysłać dzienniki binarne do hosta internetowego i zastosować je do bazy danych, skutecznie odtwarzając wszystkie transakcje, które miały miejsce tego dnia na serwerze WWW. W rzeczywistości dzieje się tak zresztą z replikacją, więc prawie zawsze wybrałbyś konfigurację replikacji zamiast tej opcji.

Jeśli nie ma połączenia między dwiema bazami danych, najłatwiejszym sposobem jest zrobienie mysqldumps każdego dnia.

Matt Healy
źródło
około 2 jeśli zrobię pełny zrzut z wewnętrznego i zaimportuję na produkcję, to zastąpi on bazę danych online, to znaczy mam hostów online w bazie danych i chcę przeprowadzić migrację wewnętrznej bazy danych do kupienia na żywo, czy możesz wyjaśnić BTW, co będzie zdarza się, że auto narasta między dwoma, jeśli obaj rezerwują ten sam identyfikator, to będzie bałagan!
shareef
4

Możesz także użyć opcji takich jak symmetricDS, które mogą pomóc w synchronizacji dwóch baz danych. Dzięki temu będziesz mógł wybrać tabele, które chcesz zsynchronizować, aby zaoszczędzić przepustowość Internetu. Byłoby to również odpowiednie w scenariuszu, w którym brak jest łączności między dwiema lokalizacjami.

Siva Karthikeyan
źródło
2

Jak skonfigurować replikację bazy danych za pomocą MariaDB: https://www.techrepublic.com/article/how-to-set-up-database-replication-with-mariadb/

Dylan B.
źródło
1
Witamy w DBA.SE. Dziękujemy za Twój wkład / udział. Społeczność oczekuje jednak pewnej jakości w opublikowanych odpowiedziach. Przeczytaj proszę następujący artykuł: Jak napisać dobrą odpowiedź? (Centrum pomocy) W sekcji Odpowiedz na pytanie znajduje się krótkie zdanie o następującej treści: Zachęcamy do dodawania linków do zasobów zewnętrznych, ale dodaj kontekst wokół linku, aby inni użytkownicy mieli pojęcie, co to jest i dlaczego
John aka hot2use,
0

Możesz użyć Navicat . Jest to przede wszystkim menedżer db, ale ma funkcje przesyłania danych i synchronizacji danych, a także harmonogram, dzięki czemu można zautomatyzować. Nie jest darmowy, ale jest 30 próbnych pełnych funkcji.

Josh A.
źródło