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.

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.


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.


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.


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.


właśnie to robię ...
mmattax
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.