MySQL Replication = Master-Slave

Kiváncsiságból tesztelem a replication-t.
Gyorsan felhúztam 2 Centos-t, ráraktam lampot, beállítottam, működik jól :)

Tapasztalatok érdekelnének, mire érdemes (kell) figyelni ebben a témában.
A teszt alatt minden patent, Wordpressel teszteltem:
-hozzászólás felvisz
-ahogy kiírja hogy hozzászólás felkerült offolom a mastert
-slaven ott a tartalom :)

idáig szép és jó, de sejtem hogy vannak buktatók ... :\

Akinek vannak gyakorlati tapasztalatai, ne tartsa magában plz. :)

Köszi előre is :)

Hozzászólások

Nem vagyok expert, ezért is érdekelne:

Eddig azt hallottam, hogy MySQL-ből két gépen master-master replikációt lehet csak csinálni, master-slavehez több kell. Mivel keverem?
Master-master replikációnak vannak olyan buktatói, hogy AUTO_INCREMENT értékek nem elosztottan számolódnak, és meg kell piszkálni a konfigot, hogy az egyik gép pl. mindig csak páros a másik mindig csak páratlan ID-t generáljon. Master-slavenél ilyen nem áll fenn? Vagy a slaven keresztül lehet egyáltalán írni a db-t?

--
The Net is indeed vast and infinite...
http://gablog.eu

M-S és S-S is megy szépen. Ez valami félreértés lehetett.
Az M-M esetében tényleg bele kell nyúlni a konfigba, hogy az auto increment ne produkáljon azonos értékeket két node-on. Viszont ez nem is bonyolult, és egy nagyon elegáns és olcsó mechanizmussal működik - ellentétben az "elosztott számolódással".

M-S-nél is bele lehet írni a slave adatbázisába is, de hiba volna. Nem arra való.

Mi most egy 7 szerverből álló gyűrűt üzemeltetünk (13-14 lesz a végén), tehát mindegyik master és slave is egyben. Alapvetően működik, de van egy két furcsaság:

- a temp táblákkal vigyázni kell, mert érdekes módon a tábla létrehozások nem mennek át a többi szerverre, de a rájuk kiadott update/insert/delete-ek igen. Na ettől megáll hibával a replikáció és kézzel kell továbblökni. Ha kitiltod a replikációból a temp táblákat, akkor jó, csak nagyon kell figyelni az alkalmazások verzióváltásainál, hogy az összes táblanevet beleírd a my.cnf-be.

- Bizonytalan, lassú összeköttetés esetén láttunk már olyat, hogy félig érkezett meg a slave-re az SQL parancs, amit az nem vett észre és megpróbálta végrehajtani. Eddig szerencsére mindig leállt hibaüzenettel mert nem volt értelmes a részlegesen átjött update. De mi van akkor, ha egy where-ből hiányzik néhány feltétel és értelmezhető a maradék? Na ettől azért rettegek.

- Az auto_increment értékeket ilyenkor nem egyesével adják a szerverek. Nálunk 20 a növekmény és mindegyik szerver más-más kezdőérték alapján adja, tehát az 1-es szerveren beszúrt rekord id-k mindig 1-re végződnek, a 2-es szerveren mindig 2-re, stb. Ez néha nagyon hasznos, amikor szoftver hibakereséskor meg kell állapítani egy adat származási helyét.

- Érdekes kérdés a db mentés is. Hol és mikor csinálhatod, hogyan állítod vissza, stb.

Ha lekapcsolod a master-t mitől fog a wordpressed a slave-től kérdezni?