Replikace MySQL mezi různými verzemi

rusty333

Replikace MySQL mezi různými verzemi
« kdy: 19. 07. 2018, 09:31:54 »
Zdravím,
je problém když budu mít na mysql master-master replikace na rozdílných verzích? Konkrétně 5.7.16 a 5.7.22.
Je mi jasný že major release 5.6 a 5.7 kombinovat nelze, ale u tohoto jsem si říkal že by to nemuselo vadit.
« Poslední změna: 19. 07. 2018, 12:55:23 od Petr Krčmář »


Re:mysql replikace verze
« Odpověď #1 kdy: 19. 07. 2018, 10:47:07 »
I mezi různými verzemi to jednosměrně funguje - tedy typicky ze starší na novější. Někde v dokumentaci to je popsané. Ale master-master ne. Nicméně mrkněte na tu matici s kompatibilitou v dokumentaci.

Minor verze nevadí, ale changelogy bych před případným upgradem četl hodně důsledně. Best practice je samozřejmě mít tu verzi stejnou.

Docela by mě zajímal use-case. Zápis na oba nody stejně nebude fungovat dobře, na distribuci čtení stačí master-slave. A pokud je to failover, tak při switchnutí se stejně jedna ta replika většinou rozpadne.
« Poslední změna: 19. 07. 2018, 10:53:33 od Pavel Rauš »

rusty333

Re:mysql replikace verze
« Odpověď #2 kdy: 19. 07. 2018, 12:05:37 »
Jde o failover. Zatím jsem to zkoušel v testovacím prostředí a replikace se nerozpadly, ale nevygeneroval jsem tam takový provoz jaký bude v produkci.


dustin

Re:mysql replikace verze
« Odpověď #3 kdy: 19. 07. 2018, 12:24:44 »
Replikaci také používáme pro failover, ale master/slave a ještě si slave při přehození přepneme do read-only režimu, aby byla jistota, že do něj někdo/něco nedopatřením nezapíše.

dustin

Re:mysql replikace verze
« Odpověď #4 kdy: 19. 07. 2018, 12:30:06 »
Vlastně je replikace  nakonfigurovaná master/master (vzájemně se aktualizují), aby se to nemuselo řešit při přehození, ale jeden je vždy zamčený na read-only.

Třetí instance pro zálohování/klonování dat pro vývoj/testování je slave, ale má dva mastery - při přehození se to samo začne replikovat z druhého stroje.

Používáme MariaDB, která má v GTID identifikaci stroje, takže se případné duplicitní transakce z obou strojů na zálohovacím slavu ignorují. To asi dělá mysql taky.


Re:mysql replikace verze
« Odpověď #5 kdy: 19. 07. 2018, 16:41:50 »
Jde o failover. Zatím jsem to zkoušel v testovacím prostředí a replikace se nerozpadly, ale nevygeneroval jsem tam takový provoz jaký bude v produkci.


Funguje to přesně do okamžiku, než to přepnete v situaci, kdy nemáte ty repliky synchronní ( což se u asynchronní replikace může stát poměrně snadno ). Když k tomu dojde, tak sice proběhne korektne failover, ale na serveru nebudete mít zcela aktuální data. První zápisovou operací nad tímto úložištěm to pak rozbijete a nebude možné udělat giveback -> bude nejprve potřeba udělat obnovu repliky.

Je to standardní problém, který ale nemá moc řešení a je nejjednodušší to prostě přijmout jako vlastnost. Doporučuju si ale tenhle scénář nacvičit nanečisto - dělat první pokus nad ostrými daty je řekněme hodně optimistické.

Robusnější řešení nabídne galera cluster, ale to chce 3 nody a mnohem víc zkušeností a znalostí. Pro Vaši potřebu asi zbytečný overkill.

rusty333

Re:Replikace MySQL mezi různými verzemi
« Odpověď #6 kdy: 23. 07. 2018, 13:22:36 »
Rozbitou synchronizaci a obnovu jsem již podstoupil. Ok beru to jako vlastnost, ono přepínat se to nebude jednou do měsíce žejo...

Jak porostou požadavky na výkon databáze, přejdu na galera cluster. Počítám že mám tak rok čas na potřebnou přípravu. Děkuji