Tudom, hogy van sok ehhez hasonlo tema, de ez kevesse elter a tobbitol. Adott egy kliens, aki hasznal ket web applikaciot ket kulonbozo VPS -en. Jelenleg nem egy eromu ( 1GB RAM ), de mivel nemreg vagyunk tul az implementalason ( legalabbis az elso fazison ) meg nagyon kis meretu az adatbazis, termeszetesen allandoan novekszik ( nehany MB jelenleg ). Ha szukseges akkor 8GB RAM -ig tudjuk boviteni pillanatok alatt.
A ket VPS -t ket kulonbozo cegnel helyeztem el, ha gond van akkor nagyobb a valoszinusege, hogy csak az egyik fog elszallni.
Arra gondoltam, hogy jo lenne az adatbazisokat tukrozni a szerverek kozott ( tehat az A szerver AB -at tarolni a B szerveren es forditva. A kerdes az lenne, hogy ez mennyire fogja vissza a gepeket? Jobb lenne beallitani egy harmadikat szervert is?
Pontos statisztikakat nem tudok mondani, mert meg folyamatban van a cegnel az atallas a software -re, de nagyreszt olvasas tortenne ( az esetek 80-90% -ban ). Van egy nehany munkaallomas is, azok naponta ketszer, kulonbozo idopontokban szinkronizalnak a szerverrel ( pontosabban feltoltenek dolgokat )
Arra az esetre, ha nem mukodik az egyik szerver az atiranyitas mar meg van oldva, kimondottan csak az adatbazis replikacionak a gepre gyakorolt hatasa erdekelne.
A replikacio NEM semi-synchronous lenne, mivel a ket gep kulonbozo varosokban lettek elhelyezve es igy SZVSZ nagyon erezheto lenne a hatasa.
Inkabb gyakorlati tapasztalat erdekelne, a Zinterneten talaltam nehany szintetikus merest meg elmeleti kalkulaciot, de az nem tulzottan erdekel foleg mivel itt ua. a szerver lenne master is es slave is.
Koszonom!
- 20459 megtekintés
Hozzászólások
Egy master mysql es ket slave, ami neked kell. A master-re mehet az osszes iras (esetleg web-es admin felulet az app-hoz), a ket slave-rol pedig olvasas.
De ez inkabb subscribe, en is kivancsi vagyok, hogy mas hogyan csinalja.
- A hozzászóláshoz be kell jelentkezni
Ezt én eddig csak papíron próbáltam és egy dolog nem tiszta!
Egyik eset: közvetlenül írnak adatbázis szerverre, és olvasnak is
Másik eset: másik szerverről történik írás a slavere, hálózaton keresztül, ami akár egy újabb hibaforrás is lehet és mellette ugyanúgy van olvasás.
Nem kötekedés, láttam, hogy többfelé használják illetve ajánlják ezt a felállást, csak nem értem, hogy mit nem értek: miért jobb terhelés szempontjából a második eset?
- A hozzászóláshoz be kell jelentkezni
Ha egy helyen megy az írás és olvasás is, nagyobb a valószínűsége, hogy lock-ra várás lesz. Terhelt szerver esetében biztosan elő fog fordulni.
Ha replikált adatbázissal dolgozol, akkor elég megbízható hálózattal rendelkezel, amely akár redundáns is lehet (kell lennie). Másrészt ha row-based-replication a replikáció típusa nem statement-based-replication, akkor lényegesen kevesebb ideig tart egy-egy módosítás érvényre juttatása a slave-eken, mert nem csinálja meg újra a masteren lefutott SQL-t, hanem csak a tényleges változás megy át a slave-re. Így a lekérdezéseknek nem kell várnia (annyit) egy-egy műveltre, mint az "egyik eset"-nél. Ha SBR a replikáció típusa, akkor annyiban nem mindegy, hogy a lekérdezés miatti lock nem akasztja le az egész szervert, a master teszi a dolgát, majd ha a slave befejezte, amit csinált, lock felszabadul, szépen beéri a mastert, ha közben volt változást okozó művelet. Ha több slave-ed van, és szétszóródnak köztük a lekérdezések, akkor az egymásra várás is egyértelműen csökkenni fog. Persze ez az RBR esetére is igaz.
- A hozzászóláshoz be kell jelentkezni
Köszi, így azért már világosabb! :)
- A hozzászóláshoz be kell jelentkezni
itt kérdeznék én is egy olyat, hogy:
volna egy master-slave (esetleg master-2slave)
van egy alkalmazás ami INSERT-et generál (mondjuk telefonos CDR). ez ír a master-be.
van egy GUI, ahol a user nézheti a saját CDR-t, és mindenféle bonyolult lekérdezések segítségével leterhelheti a szervert. Na, ez a query menjen inkább a slave-re.
Az se gáz, ha utolsó pár perc (óra?) még nincsen sync-elve.
Van arra vmi instant megoldás, mondjuk olyan proxy ami a read kérést a slave-re, write-t a master-re küldi? Ha igen, akkor az applikációban nem kéne vakargatni, csak egy másik IP-t és vagy portot kéne neki megadni.
- A hozzászóláshoz be kell jelentkezni
Bár soha nem használtam, de elvileg mysql-proxy:
http://dev.mysql.com/doc/refman/5.6/en/mysql-proxy-faq.html#qandaitem-1…
- A hozzászóláshoz be kell jelentkezni
En hasznaltam mysql-proxy-t, de nem tudtam, hogy tud szeparalni. Koszi a linket.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
akkor az applikációban nem kéne vakargatni, csak egy másik IP-t és vagy portot kéne neki megadni.
Azért az applikációk 99.99%-a nincs arra felkészítve, hogy ha nyom egy insertet, commitolja, majd rögtön ezután visszakeresi ugyanazt selecttel, akkor hopp, nem találja ott azt a sort. Szóval az ilyen architektúrákhoz, amit szeretnél, hozzá kell idomulnia az alkalmazásoknak, különben hasraesés lesz.
- A hozzászóláshoz be kell jelentkezni
Én hasonlót egy szolgáltatón belül csináltam, HAProxyval, és Perconával. (Két elszeparált szolgáltató/hálózat "közé" nem akartam csak úgy kiengedni MySQL-t. Akkor legyen egy VPN... Na igen, de mi és hogyan fogja figyelni, hogyha egyik node kiesik, az IP-nek változnia kellene a DNS rekordban és a többi, és a többi.
Virtualizált teszt környezetben próbálkoztam NDB Clusterrel, viszont annak idején a mi "szintünkön" túlzott erőforrásokat kért volna)
Úgyhogy leginkább ez is csak feliratkozás :)
- A hozzászóláshoz be kell jelentkezni
A helyzet a kovetkezo ( 1 db szerverrol lesz szo ): adott tehat egy VPS ami Apache,PHP,MySQL es VPN kiszolgalo, domain nincs rairanyitva, csak IP cimrol elerheto. Van egy harmadik szerver ( egyszeru, shared hosting ). Amikor az ugyfel csatlakozik akkor a domain.tld/app cimen kapcsolodik, ott egy script varja ami eldonti, hogy ra van csatlakozva a VPN -re, vagy nincs. Ha igen, akkor atiranyitja a 10.9..... cimre, ha nincs, akkor a publikus cimre ( https + .htpassword ). Ha egyik sem elerheto akkor a masik szerverre kuldi at. Amennyiben menet kozben hullik el a szerver, akkor csak ujra ra kell kattintson a bookmark -ra ( ami termeszetesen a domain/app ), ami eldonti, hogy hova lesz kuldve.
Nincs tulmisztifikalva a dolog, annyi lenne a kerdes, hogy mennyire lassul be a szerver a szinkronizalas hatasara / ajanlott lenne egy szerver ami slave lenne mindkettojuknek?
- A hozzászóláshoz be kell jelentkezni
Probáld meg ezt: http://www.severalnines.com/resources/configurator
- A hozzászóláshoz be kell jelentkezni
master-master replikacio jo erre, csak az autoincrementes trukk (2-esevel no, az egyiken paros a masik szerveren paratlan key-eket ad) is kell ha mindkettore akarsz irni, meg a kritikus dolgokat tranzakciokezelessel csinald.
a szoftvert kell ugy megcsinalni, hogyha esetleg elofordul split-brain (megall a replikacio, es a 2 szerver kulon eletet el, es mindkettore megy iras) akkor is ossze tudjon szinkronizalni, ne legyenek utkozesek.
A'rpi
- A hozzászóláshoz be kell jelentkezni
Nem szoktam, de +1 :)
- A hozzászóláshoz be kell jelentkezni
Lehet, hogy felreerthetoen fogalmaztam: a replikacio feladata csak back -up, a 2 szerveren ket kulon applikacio fut. Egyszeruen egy cross-back-up ot ( nem ugrik be mas kifejezes ) szeretnek. Annyit szeretnek tudni, hogy mennyira lassitja le a szervereket, ha egymas koztott szinkronizalnak? Jobb megoldas lenne egy harmadik szervert hasznalni back-up -ra, vagy pedig a terheles nem lenne nagyon erezheto?
Megegyszer: mindket szerveren van 1-1 db kulonallo adatbazis ( semmi kozuk egymashoz ), a szervereken letrehoznek 1-1 uj adatbazist ami a masik szerveren talahato adatbazis masolata lenne. :)
- A hozzászóláshoz be kell jelentkezni
elmeletileg ugyanannyira terheli a replikacios szervert amennyire a mastert az iras muveletek (ugyanazt hajtja vegre rajta). gyakorlatban ha mixed mode-t hasznalsz akkor akar meg kevesbe (mivel bonyolult statementek helyett csak az eredmenyt tolja at).
ha csak nincs valami szarra terhelt szervered akkor nem lesz gond.
viszont hogy ne vesszenek ossze a db-k, vagy futtass kulon mysql peldanyt a backupnak, vagy filterezd ki hogy mit replikaljon.
A'rpi
- A hozzászóláshoz be kell jelentkezni
Szerintem futtass két mysql szervert egy gépen, a backupot nem szabvány porton. Így külön adat könyvtárral nem tudnak egymásnak bekavarni és kész. Disztribuciótól függően támogatott ez a megoldás, Gentoon pl. szerencsére alapból megy.
- A hozzászóláshoz be kell jelentkezni
Valamiert ugy erzem, nem egeszten tisztaztad, hogy mire kell neked a replikacio. Ha mindenfele adatszinkronizalasra kell, akkor nem ez a megfelelo eszkoz, ezt alkalmazas szinten kell megoldani. Kulonosen ova intenelek a master-master konfiguraciotol, annak ugyanis van jopar buktatoja, amit szerintem igy elsore nem latsz.
Ezen felul klasszikus replikacio tevhiteket vegigveve:
Ha azert kell, hogy ne szalljon el az adat, akkor rossz helyen kapizsgalsz, mivel akkor Neked igazabol egy jol megtervezett mentes es visszaallitasi terv kell, nem pedig replikacio, mert azon bizony elofordulhat az, hogy a slave is korrupt lesz es elfogadja a zsebbe penzt. A helyes megoldas az, hogy csinalsz egy slavet es arrol csinalsz rendszeresen file mentest. Itt a slave akar ugyanazon a gepen is lehet.
Ha a rendelkezesre allast akarsz novelni, akkor elso sorban a kommersz VPS szolgaltatorol migralj valami komolyabbra, mert az arcsokkentes jegyeben ez lesz a legnagyobb korlatozo faktor.
Ha read IO problemaid vannak, akkor megint csak ugyanez a tanacs, migralj eloszor fizikai gepre, utana kezdd el elosztani.
Ha network latencyt akarsz csokkenteni, akkor megint csak nem sok ertelme van, mert Magyarorszagon belul (de meg EU-n belul is) elhanyagolhato.
Osszegezve: ha lehet, mindig torekedj az egyszerusegre, Ha tenyleg skalazodasi problemaid lesznek, majd megoldod. Jelenleg nemhogy ertelme nincs, de meg hatraltat is.
- A hozzászóláshoz be kell jelentkezni
Koszonom!
Amire szuksegem lenne az valos ideju back-up. Termeszetesen meg tudom oldani applikacio szinten is, de ez egyszerubbnek es kezenfekvobbnek tunt.
A sebesseggel - egyelore - semmi gond nincs. Termeszetesen ezzel - ha nem is ez a cel - novelhetem egyszeruen a rendelkezesre allast, mivel egyik szerver nagyon egyszeruen atveheti a masik helyet ( fentebb leirtam a megoldasom )
- A hozzászóláshoz be kell jelentkezni
Azert a valos ideju backup egy nagyon komoly kovetelemeny. Eleve force-olnod kell a statement-based replicationt, amit az alkalmazasnak tamogatnia is kell. Ha row-level replication van, akkor siman elcseszodhet a replikad. Ezen felul meg meg vagy egymillio buktato van a dologban.
Ami a rendelkezesre allast illeti, egy ilyen VPS-es setupnal ez kb olyan mint amikor kartyavarra akarsz lotornyot epiteni.
- A hozzászóláshoz be kell jelentkezni
Egyelore csak nehany Mb/nap novekedes lesz, ennel tobbre egyaltalan nem szamitunk, sot, meg ez is tulzas. A query -k nagy resze SELECT, INSERT/UPDATE/DELETE ritkabb. Ha jol tudom akkor nem a query -k lesznek atkuldve, csak a binlog.
Rendelkezesre allas: ertem, hogy nem a legjobb megoldas, de azert egy fizikai vas - egyelore - agyuval verebre esete.
Fizikai vas esetleg 1-2 ev mulva lesz, amikor egy 4Gb RAM -os VPS mar nem birja kiszolgalni. Meglehet, hogy akkor sem ez lesz a megoldas, hanem pl arhivum keszitese, ahol a regi, mar nem hasznalatos adatokat athelyezzuk valahova.
- A hozzászóláshoz be kell jelentkezni
Azért rendes backup mindenképp kelleni fog szerintem.
Ha véletlen becsúszik valahogy egy delete where nélkül (pl. sql injection, vagy csak véletlen valaki elereszti), az a replikán is végre lesz hajtva.
Célszerű ezért néhány korábbi backupot őrizni folyamatosan.
- A hozzászóláshoz be kell jelentkezni
Mysql már tud késleltetett replikálást. Ahol például a slave direkt le van maradva mondjuk 1-2 órával. Pont ilyen esetekre jó ;)
- A hozzászóláshoz be kell jelentkezni
Konkrétan _csak_ erre az esetre jó, semmi másra... minden más esetben meg éppenhogy káros a késleltetés.
- A hozzászóláshoz be kell jelentkezni
Ok, de erre nem kell VPS-t berelni, lehetetsz egy gepet a sarokba, ami replikal is, mentest is keszit.
- A hozzászóláshoz be kell jelentkezni
mi is pontosan erre hasznaljuk. annyira nem kritikusak az adatok hogy ha az elmult 1-2 percnyi elszall akkor belehaljunk, de a napi 1 vagy orankenti 1 mentes meg keves.
A'rpi
- A hozzászóláshoz be kell jelentkezni
Ti hogyan oldottatok meg?
- A hozzászóláshoz be kell jelentkezni
+1, és én replikációt használok erre. Master-master, de csak azért, hogy karbantartáskor, vagy leálláskor át lehessen állítani. Valójában csak az egyik master és a másik slave gyakorlatilag adott pillanatban. (Az átálláskor global read only, nehogy split brain legyen). Ezen kívül van 24 óránként dump és file szintű backup is. A binary log miatt ha az egyik megmarad, akkor gyakorlatilag valós idejű mentés van, (elméletileg nem, mert elveszhet néhány másodperc, de az nem gond)
Szerk: és ez helyi hálón több gép, de simán mehetne Interneten, ha nem túl nagy a tényleges írás sebessége, akkor ugyanúgy csak pár másodpercnyi elmaradás lenne, úgyhgoy ez nem probléma.
- A hozzászóláshoz be kell jelentkezni
na pontosan igy csinaljuk mi is. annyi hogy en nem allitok global readonlyt, de elveszem az ip cimet a slave-tol igy nem tudnak racsatlakozni se a kliensek
az ellenorzesre/ip cim allitgatasra irtam scriptet ami a 2 tuzfalon fut percenkent, fel perc eltolassal, igy az egyik kiesesekor is mukodik.
A'rpi
- A hozzászóláshoz be kell jelentkezni
innobackupex?
Amúgy én próbáltam az mmm-e és nekem tetszett, jó volt, nem volt gondja. Mondjuk az olvasást máshogy kezeltem (ldirectord vagy mostanság keepalived)
Vagy lehet az is, hogy multi-masterként a keepalived (vagy a ldirectord) kezeli mind az írást, mind az olvasást.
KAMI | 神
--
Támogatás | OxygenOffice | Fordításaim és SeaMonkey
- A hozzászóláshoz be kell jelentkezni
Replikacio kapcsan az MMM-mel mik a tapasztalatok? Raktam mar ossze demo kornyezetet, tetszett, napi szintu tapasztalatok erdekelnenek inkabb vele kapcsolatban.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Használtuk, működött.
- A hozzászóláshoz be kell jelentkezni
Szivas nem volt vele?
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Ha működik is, 3 éve nem nyúltak hozzá.
- A hozzászóláshoz be kell jelentkezni
Mukodik, de tenyleg harom eve nem nyultak hozza, viszont van helyette ez: http://www.mysqlperformanceblog.com/2011/11/29/percona-replication-mana…
- A hozzászóláshoz be kell jelentkezni
Mi se' nagyon nyúltunk hozzá, "csak" össze lett rakva, és ment, használtuk. (De jó is volt vele DB-t billegtetni hajnalban...)
- A hozzászóláshoz be kell jelentkezni
mer' nektek mar legalabb mukodott, ahogy emlekszem kb. egy hettel azelott lett beinditva, minthogy veget ert ott a palyafutasom :)
- A hozzászóláshoz be kell jelentkezni
Jó, egy kis wudu-mágia is kellett hozzá :-P
- A hozzászóláshoz be kell jelentkezni
Nekem pont az tetszett az MMM-ben, hogy olyan kis kompakt celszerszam, es nagyon egyszeruen managelheto...
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Jéé, ilyenem van. Teljesen jól működik :)
Ofkoz 3 node, ipmi, stb.
De a Percona res agent + pacemaker teljesen jó választás (igaz volt pár apró bug a scriptben, de reportoltam és kb. 2 óra múlva javították official)
- A hozzászóláshoz be kell jelentkezni
Nekem nem, bár én csak használtam, nem én raktam össze.
- A hozzászóláshoz be kell jelentkezni
Ebben az esetben nem kell neked replikacio. Eleg az, ha a backupot, es a binlogokat biztos helyre teszed, mert barmikor tudsz akkor point in time recoveryt csinalni a mysqlbinlog utilityvel. Arrol nem is beszelve, hogy biztonsagosabb, mert ameddig a masik gepet amolyan hotbackupnak akarod hasznalni, egy elszaladt query azt is ki tudja csinalni.
Arra az egyre figyelj oda, hogy ha a backupot mysqldumppal csinalod xtrabackup helyett, akkor add meg neki a --single-transaction kapcsolot, hogy az egesz mentes folyamatot egy tranzakcio alatt hajtsa vegre. Ezzel ugyan felnyomod az egbe az undo space-t, de valoszinuleg nem fog gondot okozni.
- A hozzászóláshoz be kell jelentkezni
Ez akkor működik, ha nincs myisam tábla egyáltalán, ugye? Mivel, hogy ott nincs tranzakció.
- A hozzászóláshoz be kell jelentkezni
igen. viszont nem malmoznak a kliensek percekig amig a mysqldump fut.
A'rpi
- A hozzászóláshoz be kell jelentkezni
Bar meg lehetne olni az utolso MyISAM alapu appot is... Nalam sajnos nem par percig allnak a kliensek amig fut a dump.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
+1, nem percekről van szó adott esetben, hanem egykét óráról is, főleg terhelés mellett. Én azt csinálom, hogy flush logs read lock, sleep, filerendszer szintű snapshot, és az adatbázias file szintű mentése a snapshotból, ami egy szabálytalanul leállított, de lockolt, és syncelt állapotnak felel meg, ami minimális kivételtől eltekintve tökéletesen működő szokott lenni. A replikációt is így szoktam helyreállítani dump helyett. Mondjuk ott utána mysqlcheck -A --repairt futtatok a biztonság kedvéért. Nálunk a többség tábla myisam.
- A hozzászóláshoz be kell jelentkezni
Az a baj, hogy en --skip-lock-tables -sal vagyok kenytelen dumpolni, nem allhat meg az app...
A filerendszer szintun mar gondolkodtam en is, meg van irva a mysqlhotcopy alternativaja, de valamiert nem valt be (mar nem emlekszem, mi volt a problema, reszben a lock, reszben meg valami).
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Mi a gond a lockolással? Lock, lvm snapshot, lock ki, aztán az lvm-es snapshot már menthető/másolható. Ha ügyesen csinálod, még kézzel mókolva is néhány másodperc maximum, amíg lockolva van a db.
- A hozzászóláshoz be kell jelentkezni
Ja, hat igen, akinek van lehetosege ilyen uri huncfutsagokra, mint LVM... Sajnos par gepem nem LVM volumeken ucsorog.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Speciel en btrfs snapshotot használok (korábban lvm), de ez részletkérdés, és gondolom neked ugyanúgy nem megfelelő.
- A hozzászóláshoz be kell jelentkezni
Miert igy csinalod?
1. lock
2. snapshot
3. unlock
4. masodpeldany inditasa a snapshotrol
5. dump a masodpeldanyrol
6. masodpeldany stop
7. snapshot destroy
Hol a problema?
Ill. latom, irod, h 1 lock sem lehet. Akkor miertnem dumpolsz a slave-rol.
Mindenesetre nem tudok elkepzelni realis esetet, h a dump idejere lehet lock, de a snapshot idejere nem.
t
- A hozzászóláshoz be kell jelentkezni
Az a nagy büdös igazság, hogy atomi snapshot esetén (1 fájlrendszeren belül az LVM snapshotnak bizony atominak kell lennie) lock nélkül is működnie kell a dolognak. Legfeljebb rollbackelni fog a frissen beindított másodpéldány.
Ha pedig valaki elkezdi magyarázni, hogy neki ez nem működött, akkor gyorsan kezdjen el gondolkodni, hogy egy áramszünet/táphiba esetén honnan fogja elővenni a mentését, mert a hirtelen elmúló 220 sem fog előtte kérni egy lockot, és akkor az sem fog működni...
- A hozzászóláshoz be kell jelentkezni
Nem a lock a lényeg, hanem a memóriában lévő táblák, változások lemezre írása (mindenféle app szintű bufferekből), és nem azért, hogy ne vesszen el adat, hanem, hogy a replikációt folytatni lehessen, pontosan attól az állapottól. Ezért:
FLUSH TABLES WITH READ LOCK
SHOW MASTER STATUS (ebből megvan a master pozicio)
sleep pár másodperc, (állítólag innodb a flush tables re se mindig írja ki egyből az adatot), snapshot, unlock tables, és a snapshot meg a master pozicio együtt alkalmas a replikáció indítására, és gyakorlatilag is szokott működni.
- A hozzászóláshoz be kell jelentkezni
Szerintem amire én reagáltam, abban a setupban szó nem volt replikációról.
A feladat - ha jól értettem - az volt, hogy van egy darab, szingli adatbázis, amit le akarunk menteni.
Ha lock nélkül nyomunk egy snapshotot, az így készült állapot nem különbözik attól, mint amikor a gép alól kiesik az áram, majd újraindul.
Egyébként a replikáció sem változtat a helyzeten: lock nélkül is beindulni képes mentésnek kell készülnie a snapshotból. Természetesen ha valaki egy replikált masterről mentést csinál, majd arra valamikor később vissza akar állni, akkor a történet úgy indul, hogy minden más replikát a frissen visszaállított masterről újra kell inicializálni.
- A hozzászóláshoz be kell jelentkezni
Értettem amit írtál, de mivel közben igencsak a replikációról is volt szó, úgy gondoltam kiegészítem, szerintem nem mondtam ellent. Az utolsó mondathoz annyit, hogy leállt master esetén nem feltétlen a mastert fogom indítani (és kukázni a slaveket), hanem az egyik slaveből lesz master és a mastert építem újra a slaveből. Ez azért lehet jó, mert a leállt masterről a slaveket csak akkor tudom újra építeni, ha előtte a mastert teljesen leellenőrzöm, elvégre a leállás okától függően lehet olyan sérülés, ami kifejezetten adatvesztéssel járt, ez ugyanis előfordulhat (igen, előfordulhat áramszünet esetén is). Ez az ellenőrzés, a leállás utáni indítással együtt már akkora kiesés, hogy célszerű lehet a korábbi slavet masternek kinevezni, hogy menjen tovább a rendszer.
- A hozzászóláshoz be kell jelentkezni
célszerű lehet a korábbi slavet masternek kinevezni, hogy menjen tovább a rendszer.
Akkor végülis mi értelme van annak, hogy a mentett adatokban a replikáció "rendben legyen"? Szerintem ugyanis semmi. Ez egy baromság. A mentést csak akkor veszed elő, amikor már semmi más nem segít, már egyik slave sincs menthető állapotban. Akkor meg kit érdekel, hogy a visszatöltött mentés után az összes slave-et amúgy is újra kell inicializálni? Amit egyébként visszatöltés esetén sehogyse tudnál elkerülni, akármennyire "rendben van" a replikáció állapota a mentésben:
"hanem, hogy a replikációt folytatni lehessen"
- A hozzászóláshoz be kell jelentkezni
Mert jelenleg nincs slave. Pont azert gondolkodok valamifele replikacion is, csak eleg sok irasom van, es nem tudom, mennyire lassit be. Van egy pocsek alkalmazasom, es app oldalrol nincs lehetoseg javitani rajta, azt kell uzemeltetni, ami van.
A masodpeldany inditasaval meg az a problemam, hogy ez egy Debian. Debiannal mig az inditaskori default mysqlcheck lefut egy 70G -s adatbazison, az nem rovid ido, es az I/O terhelest nem tudom meguszni.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Azért nehogymár ne bírd átírni az elcseszett init scriptet...
- A hozzászóláshoz be kell jelentkezni
Hogy a kovetkezo upgrade esetleg visszairja? Vannak aggodalmaim e teren.
Nezd, megertem, hogy jot akarsz, es en is vegigzongoraztam mar ilyen lehetosegeket, sajnos azonban nem tudom igy megoldani a dolgot. A host osszesen 1G memoriaval rendelkezik (nem hasznalok memory ballooningot, rossz tapasztalataim vannak vele), egy ilyen szolid 50-70G -s tabla szinte tutira kiakasztana. Es a dumpnak is van I/O terhelese, akar van mysqlcheck akar nincsen. 100 MBites management halon meg nem biztos, hogy at akarom vonszolni, csak azert, hogy utana kidumpolhassam. Akkor mar inkabb a fajl szintu backup.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Magyarul szarbol akarsz varat epiteni? Akkor erdemesebb lenni az alapoktol kezdeni es nem faragni.
A slave-n a replikalas meg annyira lassit be, mint amennyire egyebkent is az iras...csak masik gepen. Nem latom a problemad.
> A masodpeldany inditasaval meg az a problemam, hogy ez egy Debian.
Mi koze ennek a debianhoz? A masodpeldanyt nem official init scripttel inditod, de legalabbis egy custom, altalad irt akarmilyen cucc: mysqld -S /tmp/mysql-backup.sock ......
> A host osszesen 1G memoriaval rendelkezik (nem hasznalok memory ballooningot, rossz tapasztalataim vannak vele),
Adjal neki tobbet. Ha nem tudsz, akkor a meretezessel alapveto problemak vannak.
Mellesleg ha nincs penz erre, akkor ne akarjon a megrendelo jobb szolgaltatast a semmiert.
Egyebkent ezt a problemat korberohogi az LXC vagy barmleyik masik container alapu virtualizacio.
tompos
- A hozzászóláshoz be kell jelentkezni
- "a meretezessel alapveto problemak vannak": Nekem mondod?
- "A masodpeldanyt nem official init scripttel inditod": na ez az, amit inkabb szeretek elkerulni. Szivtam mar - mas szoftvernel - ilyesmivel, az epp eleg volt
- "Magyarul szarbol akarsz varat epiteni?": pontosan, es nem tudok (nincs lehetosegem ra) a gyokerekig lemenni. Sajnos azzal kell dolgozzak, ami van, max almodozhatok egy szep uj rendszerrol.
Nezd, nalad sokkal jobban tisztaban vagyok a mostani rendszer korlataival. Sajnos a korlatokat ledonteni nem tudom, a jelenlegi kereteken belul kell valamit csinalni. Lehet fikazni a mostnai kialakitast, csakhogy mindez nem az en erdemem, egy eve dolgozom itt, es probalok valami rend-felet kialakitani. Es en is rengeteget bosszankodom emiatt, meg almodok szep uj rendszereket, viszont akkor is a mostani rendszerbol kellene tovabblepni, es nem almokat kergetni. Nehez dolog ez, tudom, de nem mindig a konnyebb ut az egyszerubb.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Senki nem beszelt szepuj rendszerrol. Annyit irtunk (legalabbis en), hogy rakjal ala megfelelo HW-t, ha az SW-n nem modosithatsz.
Ez meg nem jelenti, h a gyokerekig kell lemenni.
tompos
- A hozzászóláshoz be kell jelentkezni
"rakj ala megfelelo HW-t" - nalam ez a szep uj rendszert jelenti. Nem veletlenul hangsulyozom, hogy abbol kell foznom, ami van.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Egyreszt:
> app oldalrol nincs lehetoseg javitani rajta, azt kell uzemeltetni, ami van
Itt HW-rol szo nincs.
OK, se HW-t nem lehet boviteni, se az alkalmazast nem modosithatod.
Ezen kivul meg peremfeltetel, h custom megoldasokkal nem foglalkozol (mint init script atirasa pl.).
De LVM vagy mas snapshot aware eszkoz nincs es nem is vagy hajlando arra atrakni a stuffot (a miert nem szamit).
Ezzel szemben:
> gondolkodok valamifele replikacion
Ezt akkor igy hogy? Ehhez is HW kell (pl.)
Nekem egyebkent tovabbra sem vilagos, miert allitod be a replikaciot es probalod ki, h mukodik v. nem, minthogy honapokig itt szenvedsz rajta?
tompos
- A hozzászóláshoz be kell jelentkezni
Sorban megyek:
- Replikacio: pont azert gondolkodom rajta, mert egy masik virtualis gepen lenne hely + szerver, hogy be lehetne loni egy replikaciot, de a "minden backupnal rangassuk at a 100MBites halon a 70G-s adatbazist" irrealis. A masik virtualis gep nem ugyanazon a hoston van, mint a fo applikacio DB-je, es nem is tudom atmigralni.
- LVM: nincs helyem. Alaraknam bakker, istenbizony alaraknam, de ki van maxolva a disk a gepen. Lehet hogy ez az indok neked invalid, es nem szamit, nekem meg igen. Bocs.
- Azert nem allitom be a replikaciot es probalom ki, mert nincs hol tesztelnem a dolgot, es - masokkal ellentetben - en nem szeretek eles alkalmazas alatt adatbazisszervert elloni. Azert gyujtogetek adatot, mert nincs lehetosegem tesztelni, viszont a lehetosegekhez kepest fel akarom merni, hogy mekkora kockazatot vallalok azzal, ha kiprobalom.
Nem egy multicegnel / banknal vagyok, ahol ma leszolok a beszerzesnek, hogy legyszi holnapra harom szervert hozzatok, es ott van, hanem egy kis cegnel, ahol meg a virtualis gepek telepiteset is le kell fightolnom. Tudom, hogy egy idiota fasz vagyok, hogy ilyen helyre mentem dolgozni - de ez az en dontesem volt, es kiallok mellette. Igen, szukek a lehetosgeim, igen, nagyon le vagyok korlatozva - de ezt tudtam es vallaltam.
Hidd el, ha valamire en azt mondom, hogy nincs lehetosegem ra, akkor az nem egyenerteku azzal, hogy egy onfeju makacs ember vagyok, aki nem akarja a jot, hanem azt jelenti, hogy nincs lehetosegem ra. Tekintve, hogy van cegtitok is a vilagon, nem feltetlen osztom meg minden ilyesminek az indoklasat, ha nem feltetlen muszaj.
Probalhatunk innen konstruktivabb vizekre evezni, vagy elkonyveltel egy remenytelen idiotanak?
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Nem konyveltelek semminek.
Viszont ha egy forumon segitseget kersz masoktol, tiszteld meg oket azzal, h megosztod a korulmenyeket, plane ha erdekli oket.
A replikaciot nem kell az elesen kiprobalnod. Eloveszed a laptopod, beallitasz egy mysql instance-ot meg egy masikat (akar ket VM-ben, akar a laptopodon kivul) es elinditod, kinyirod, teszteled. Nincs koze az eleshez.
> LVM: nincs helyem
Ugyanannyi helyet foglal az adat az LVM-en es anelkul is.
> be lehetne loni egy replikaciot, de a "minden backupnal rangassuk at a 100MBites halon a 70G-s adatbazist" irrealis.
Errol szol a replikacio, nem kell atrangatnod mindent. Mi a problema...?
Szamomra meg tovabbra sem vilagos a felallas. Akkor most milyen backup van? Semmilyen?
t
- A hozzászóláshoz be kell jelentkezni
Replikacio: az a baj, hogy terhelesmereshez pont nem igazan jo a laptopomon merni, mert nem fogok tudni valos korulmenyeket szimulalni. Nem a mysql replikacio beallitasaval van gondom, ha sokat nem is, de allitottam mar be ilyet, tudom, hogy hogy kell - a terhelesi vetuleteivel nincs tapasztalatom elsosorban.
LVM: Ugy ertem, az LVM VG-n nincs mar nagyon helyem. Ahol egyaltalan LVM van a virtualis gep alatt. Mert virtualis gepen belul sehol nem hasznalok LVM-et, ugyanis plusz hibalehetoseg
Jelenleg mysqldump van mindenutt, ami iszonyatos ideig fut ezen az egy DB-n, ezzel elhuzva a backup idoablakot, sok gep igy a ~ produktiv idoben kezd backupolodni, az ejszakai idopont helyett. Ezen a helyzeten szeretnek javitani, mert en eleve nem szeretem, ha egy eles gepen a backup valamikor reggel kilenc es deli tizenketto kozott kezodik meg. Es mivel sok helyen nincs innodb, igy maga a backup is meglatszik a terhelesen. Es sajnos a cucc ugy van megirva, hogy keveset tudok rajta parhuzamositani.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Igen, ezert kellene a dump-nak fenntartott helyet a VG-be raknod es akkor van hely a snapshot-nak. Bar azt eleve nem ertem, h miert nincs hely, hiszen azt allitod, sok az iras...es gondolom nemcsak update-ek.
snapshot -> backup az fs-rol -> snapshot destroy.
Persze ha nincs lvm, mert te nem szereted es ezert magad alatt vagod a fat, akkor elvagod magad a lehetosegektol. Meg nem szeretsz production geppel szarakodni, meg init scripttel meg semmive.
goto http://hup.hu/node/125549?comments_per_page=9999#comment-1624504
Szabad orszag, mindenki ugy hujiti magat meg generalja maganak a munkat, ahogy tetszik. Igy legalabb latszik, h mindig fut a backup job:)
tompos
- A hozzászóláshoz be kell jelentkezni
Jelenleg ugy vannak a virtualis gepek megcsinalva, hogy a VM-ek diskjei LVM LV-ken vannak. A virtualis gepen belul azert nem szeretnek meg kulon LVM-et, mert egyreszt annak IO impactja van, masreszt nagyon megneheziti a FS host oldali felcsatolasat ha arra szukseg van (recovery), harmadreszt meg a dupla LVM-mel nagyon-nagyon rossz tapasztalataim vannak (erthetetlen kernelpanikok, etc), igy inkabb nem kiserleteznek vele.
Ellenben a VM-ek diskjei maguk is LVM LV-k, igy elvben a host oldalrol tudnek snapshotot csinalni, es - szinten elvben - maga a snapshot a COW miatt nem foglal helyet, viszont egyreszt ez nem oldja meg a 100 MBites halo problemajat, masreszrol pedig nem tudom, hogy amig tart a backup, addig mennyi iras jon a DB-be - es hogy arra van-e eleg hely. A VG merete nincs tulsagosan tultervezve.
Lehet hogy rosszul fogalmaztam egyebkent: nekem az LVM alapu snapshot az eles gepen no-go, mert ott egyreszt nem nagyon van hely, masreszt barmit akarok kezdeni a snapshottal, az a disk I/O impact miatt gazos. Ezert akarok replikat - azon lehet backupolni mar akarhogy, akar file alapon is, ott nem erdekes, ha disk terheles van.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
> viszont egyreszt ez nem oldja meg a 100 MBites halo problemajat
Hogyne oldana meg?
snapshot -> mount snapshot lv -> rsync a hostrol a backup szerverre -> umount -> snapshot remove
> amig tart a backup, addig mennyi iras jon a DB-be - es hogy arra van-e eleg hely
Ha annyi ido alatt nem fut le egy incrementalis rsync, akkor baszhatod.
> Lehet hogy rosszul fogalmaztam egyebkent: nekem az LVM alapu snapshot az eles gepen no-go, mert ott egyreszt nem nagyon van hely, masreszt barmit akarok kezdeni a snapshottal, az a disk I/O impact miatt gazos.
Az a legkevesbe gazos megoldas ebbol a szempontbol. Csak rovid, tervezheto idore szol es szabalyozhato eppenseggel pont a disk IO terheles.
> Ezert akarok replikat - azon lehet backupolni mar akarhogy, akar file alapon is, ott nem erdekes, ha disk terheles van.
Igen, ezt magyarazom, akkor miert nem csinalod? Belovod, elindul es kiderul... Egy master-slave replikacio a master iranyaba read-only. Sokat nem tudsz rontani, akarmennyit is benazol.
tompos
ui.: Meg mindig nem irtad le, pedig nagyon erdekel: milyen backup van _most_?
- A hozzászóláshoz be kell jelentkezni
Jelenleg mysqldump van mindenutt, ami iszonyatos ideig fut ezen az egy DB-n, ezzel elhuzva a backup idoablakot, sok gep igy a ~ produktiv idoben kezd backupolodni, az ejszakai idopont helyett.
Khmm...
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Igen, de ezt is irtad:
http://hup.hu/node/125549?comments_per_page=9999#comment-1624256
Szoval mi az igazsag?
Dumpolsz es atmasolod, vagy dumpolsz es nem masolod.
tompos
- A hozzászóláshoz be kell jelentkezni
Jelenleg most a dump direktben halozaton at jon. Vagyis, van a backup szerveren egy script, ami ssh-n pubkeyjel belep a gepre, elnyomja a mysqldumpot a STDOUT-ra, es az a masik oldalon egy fajlba van iranyitva. Ez az, ami jelenleg baromi lassan dolgozik, mert maga a dump is lassu, plusz meg mindezt egy 100 MBites halon kell atvonszolni.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Igen es ennel gyorsabb meg egy egyszerub a file szintu backup. Ennyi erovel akar le is allithatod a db-t, rsync, aztan start.
Tizedannyit fog allni a service.
t
- A hozzászóláshoz be kell jelentkezni
A file szintu backuptol mindig azert felek, mert amennyire tudom, nincs garancia az adatformatum konstanssagara. Vagyis barmikor johet egy update, ami formatumot valt. Bar erre meg nem volt precedens, nem tudom, mennyire lehet ebben megbizni. Vegulis backuprol beszelgetunk.
De egyebkent pont ezert szeretnek replikat, mert ha az nem megy, akkor az nem erdekel senkit, de az eles db nem allhat le az rsync idejere, mert 70G az rengeteg. Ott meg lehetne mysqlhotcopyzni meg mysqldumpolni is akar.
Bar a replikacional meg felmerult bennem egy olyan, hogy ha all a slave, akkor hogy lehet utana ujra szinkronba hozni? Mert ugye ha tortenik iras a masteren, akkor a slave outdated lesz. Ha viszont csak lockolom a slavet, akkor viszont a master is lockolodik, hiszen a replikacio nem fut le (es myisamnal nincs row-lock csak table-lock).
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
> A file szintu backuptol mindig azert felek, mert amennyire tudom, nincs garancia az adatformatum konstanssagara. Vagyis barmikor johet egy update, ami formatumot valt. Bar erre meg nem volt precedens, nem tudom, mennyire lehet ebben megbizni. Vegulis backuprol beszelgetunk.
Igen, ezzel en is igy vagyok.
Epp ezert utana mar az athuzott anyagrol csinalhatsz dumpot. Ha a dump jo, akkor megbizhatsz benne.
Hovatovabb akar csinalhatod, h ez naponta, es egy original pedig hetente v. havonta.
> De egyebkent pont ezert szeretnek replikat, mert ha az nem megy, akkor az nem erdekel senkit, de az eles db nem allhat le az rsync idejere, mert 70G az rengeteg. Ott meg lehetne mysqlhotcopyzni meg mysqldumpolni is akar.
Ertem en, h miert akarsz replikat, de lathatoan az akarat nem eleg, tenned is kellene erte:)
Megjegyzem, en faznek a replikarol backuptol.
> Bar a replikacional meg felmerult bennem egy olyan, hogy ha all a slave, akkor hogy lehet utana ujra szinkronba hozni? Mert ugye ha tortenik iras a masteren, akkor a slave outdated lesz. Ha viszont csak lockolom a slavet, akkor viszont a master is lockolodik, hiszen a replikacio nem fut le (es myisamnal nincs row-lock csak table-lock).
Elvileg megcsinalja magatol, a gyakorlatban nekem van 1 olyan replikam, ami vmiert nem akar. Az az egynel a master debian, lehet, h az a gond, vagy csak verziokulonbseg.
Mindenesetre igen, vhogy el kell kezdened a replikalast is, vagy epp javitanod idonkent: goto 1.
tompos
- A hozzászóláshoz be kell jelentkezni
de mi tortenik, ha egyszeruen altereled a tablakat, hogy ne MyISAM tablak legyenek, hanem InnoDB-k? Vagy tolts vissza egy dumpot, ahol atirod sed-del.
Nem nagyon talalkoztam meg olyan alkalmazassal, amelyik myisammal mukodott, de innodb-vel nem. - Monjduk erre tudsz sajat laptopon tesztelni, mert ennek semmi koze nincs a teljesitmenyhez.
- A hozzászóláshoz be kell jelentkezni
Az a baj, hogy az innodb-ban nincs meg egy az egyben nehany olyan feature-t, amit aktivan kihasznalunk a myisamban (maskepp van megcsinalva vagy egyaltalan nincs benne, mindenkepp plusz fejlesztest igenyelne). Nem tudom alterelni a tablakat, mert nem fut le az alter. A ket engine nem csereszabatos egymassal.
Ezen felul allitolag (ezt csak hallomasbol tudom, keretik a helyen kezelni) volt mar egy kiserlet innodb-re valo atallasra meg regebben, es drasztikus sebessegcsokkenest tapasztaltak. Nem tudom, mennyi ebbol az igaz.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
elso korben csinalj egy dumpot, ird at benne a MyISAM szavakat InnoDB-re, toltsd be a gepedre, es nezd meg az alkalmazast. Nehezen hiszem, hogy tenyleg ne lehetne atallni.
Milyen featureket hasznaltok, ami MyISAM specifikus?
A teljesitmenyvesztest el tudom kepzelni, de azt nem, hogy ne lehetett volna bekonfiguralni olyanra, hogy jo legyen. :/
http://www.mysqlperformanceblog.com/2009/01/12/should-you-move-from-myi…
- A hozzászóláshoz be kell jelentkezni
InnoDB pl nem megy index alapjan fulltext search....
- A hozzászóláshoz be kell jelentkezni
Remlik nekem, h ujabban ez mar nem igaz.
tompos
- A hozzászóláshoz be kell jelentkezni
en 55 alatt meg kurvanagyokat szoptam vele... kb 1.5 eve
- A hozzászóláshoz be kell jelentkezni
Ott a pont, a fulltext indexeket nem konvertalja at az alter table.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
mondjuk aki fulltext searchet akar nem kulso indexelon keresztul az meg is erdemli (Xaphian, Sphinx, Lucene) de mintha az 5.6-s mysql verzioban valamit okositottak rajta. (Ezt nem keresem ki)
A masikhoz viszont:
http://www.percona.com/files/presentations/percona-live/nyc-2011/Percon…
(20. oldal)
- A hozzászóláshoz be kell jelentkezni
szarul megirt applikacio telekurva ajaxbol searchfield contentbol generalt like %lofasz% querykkel pl? :)
- A hozzászóláshoz be kell jelentkezni
Aminel raadasul gond, ha olyasvalakit keresunk mint Mr Robert'; DROP TABLE users; -- '
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
A harmadik kepen Robert van... IMHO.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Igazad van, én a becézős verziót jegyeztem meg :)
- A hozzászóláshoz be kell jelentkezni
Az alter table-t azert tudom, mert konkretan probaltam, kivancsisagbol. Most fejbol meg nem mondom, mi az, amin elhasal, de van 2-3 tabla, ahol az alter table hibat ad vissza, es nem konvertalja at. A turmixot meg csak tejjel es gyumolccsel szeretjuk nem MySQL engine-kkel.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
sub
- A hozzászóláshoz be kell jelentkezni
duplapost
- A hozzászóláshoz be kell jelentkezni