Czy MySQL slave może być jednocześnie masterem?

17

Jestem w trakcie migracji 2 serwerów DB (Master i Slave) do dwóch nowych serwerów DB (Master i Slave)

DB1 - Master (produkcja)

DB2 - Slave (produkcja)

DB3 - Nowy Master

DB4 - New Slave

Obecnie mam skonfigurowaną replikację jako:

DB1 -> DB2
DB3 -> DB4

Aby replikować dane produkcyjne na nowych serwerach, chciałbym, aby były „połączone łańcuchowo”, tak aby wyglądało tak:

DB1 -> DB2 -> DB3 -> DB4

czy to możliwe? Gdy uruchamiam show master status;na DB2 (slave produkcyjny), opcja binlog nigdy nie wydaje się zmieniać:

+ ------------------ + ---------- + -------------- + ---- -------------- +
| Plik | Pozycja | Binlog_Do_DB | Binlog_Ignore_DB |
+ ------------------ + ---------- + -------------- + ---- -------------- +
| mysql-bin.000020 | 98 | | |
+ ------------------ + ---------- + -------------- + ---- -------------- +

Jestem trochę zdezorientowany, dlaczego pozycja binlog nie zmienia się w DB2, idealnie będzie to master do DB3.

mmattax
źródło

Odpowiedzi:

9

Tak, jest to możliwe :) Nazywa się to replikacją „Master with Relay Slave” i jest wiele dokumentów na ten temat w sieci.

Polecam zapoznać się z oficjalną dokumentacją tutaj .

Przy okazji, spójrz także na te slajdy . Mają kilka wskazówek na temat topologii replikacji.

Mam nadzieję że to pomoże.

Marco Ramos
źródło
3

tak - możesz połączyć łańcuchowo serwery mysql, możesz nawet wykonać cykliczną replikację z dwoma lub więcej komputerami. pamiętaj tylko o włączeniu binlogowania na slave, który działa również jako master.

pQd
źródło
1
Replikacja kołowa jest niezwykle delikatna. W większości przypadków jest to niewskazane.
Warner
@ Warner - był to tylko przykład bardziej skomplikowanej konfiguracji replikacji.
pQd
Znajomi nie pozwalają serwerom mysql na połączenia łańcuchowe.
sjas
@sjas, chyba że mają bardzo konkretny powód, aby to zrobić i zrozumieć potencjalne konsekwencje zerwania łańcucha.
pQd
Przepraszamy, ale wciąż nie. Złożoność zawsze prześladuje cię później.
sjas
0

Tak to mozliwe. Realistycznie potrzebujesz nowej migawki DB2, aby zbudować DB3. W tym momencie, jeśli masz dobrą pozycję, możesz użyć albo dla DB4, albo zrobić kolejną migawkę DB3.

Nie zapomnij ustawić unikatowego server_iddla każdego serwera.

High Performance MySQL to świetna książka do odwoływania się do bardziej zaawansowanej administracji MySQL.

Warner
źródło
DB2 jest obecnie tylko niewolnikiem, ale jego pozycja binlog się nie zmienia ... Czy wiesz, czy to normalne?
mmattax
Slave (DB2) jest na bieżąco z urządzeniem głównym, ale pozycja binlog się nie zmienia, co powinienem sprawdzić?
mmattax
Tak, potwierdziłem, że mogę zmienić dane na DB1 i jest on zreplikowany na DB2, ale pozycja binlogu DB2 jest taka sama.
mmattax
Myślę, że DB @ nie rejestruje aktualizacji slave, dlatego dlaczego pozycja się nie zmienia: dev.mysql.com/doc/refman/5.1/en/...
mmattax
0

Dlaczego po prostu nie dodać DB3 jako nowego urządzenia podrzędnego, a następnie promować go do opanowania, gdy będziesz gotowy na zmianę? Dałoby to tymczasową dodatkową korzyść posiadania wielu niewolników i skraca lub eliminuje przestoje.

fuzja
źródło
właśnie to robię ...
mmattax