MariaDB - Galera - multimaster

Re:MariaDB - Galera - multimaster
« Odpověď #15 kdy: 10. 04. 2021, 12:05:04 »
Možná mini doplnění galera má dvě použitelné metody synchronizace

rsync a mariabackup (fork xtrabackup) mariabackup je možná lehce pomalejší, ale má méně limitů a běh více připomíná single-MariaDB instanci.

Asi je dobré to zmiňovat, protože to je jak srovnávat MyISAM s InnoDB - takové diskuze v podstatě nedávají smysl. Jeden mluví o voze a druhý o koze.
„Řemeslo se naučí každý. Umění nikdo.“
„Jednoduchost je nejvyšší úroveň sofistikovanosti.“
- Leonardo Da Vinci


Re:MariaDB - Galera - multimaster
« Odpověď #16 kdy: 16. 04. 2021, 20:20:10 »
Používám 2 roky na produkci a bez problému (eshop, mód rsync). Problém s transakcemi jsem nezaznamenal a to jich mám v aplikaci spoustu. Mám otestováno, že commit a rollback fungují dle předpokladu.

S myisam to nefunguje, to je jasně dané v základních požadavcích, ale proč by měl někdo používat něco jiného než innodb? Rychlost myisam je komická.

Pro hodně zápisů je lepší vyhradit 1 node (typicky pravidelné aktualizace cen a skladů u velké části položek najednou). Nebo když php posílá požadavky na db, tak aby v rámci jedné session probíhaly jen na jednom node (to mi řeší haproxy).
Testoval jsem výkon na čtení/zápis, kde dojde ke zpomalení synchronizace při extrémním zatížení (asi 1000x vyšším než reálně na produkci a to nedovolí haproxy) a pak se to může třeba hodinu vzpamatovávat, ale k poškození dat nedošlo.
Zásadní problém je nutnost hlídat místo na disku, protože když dojde na jednom nodu, tak se zastaví celý cluster (když node restartuju natvrdo, tak se nic nestane a vše běží dál a i následná synchronizace je okamžitá). Ono je to dobré hlídat tak jako tak nějakou automatikou.
Se ztrátou dat jsem se zatím nesetkal nebo že by na jednom nodu byla jiná data než na druhém. Vzhledem k množství položek na eshopu (200 000+) by se jakákoli chyba rychle projevila (eshop trestá každou chybu, když jsou všechny produkty na srovnávačích a na straně databáze problém ještě nebyl).

Takové rady na začátek jsou asi:
-vyzkoušet různé scénáře pádu serverů - 1 node ze 3, 2 ze 3, 3 ze 3 a zapsat si, co dělat u každého scénáře (když se něco podělá, tak každý node má log transakcí mezi nody, takže ví, co se dělo naposled a do konzole vypíše, že má třeba starší data)
-vyzkoušet si zálohu/obnovu přes mysql/mysqldump
-vyzkoušet si obnovu ze snapshotu celého node (pokud je to na ZFS nebo BTRFS, kde se snapshot jeví pro db jako výpadek napájení, z čehož by se měla bez problému vzpamatovat)

Vzhledem k tomu, že se jiné než očekávané problémy neobjevily, tak jsem zatím nic dalšího řešit nemusel. Další projekty připravuji už jen pro galera cluster.