Baza de date în clustering

  • MySQL
  • clustering
Am citit pe web că VKontakte folosește MySQL ca spațiu de stocare principal. Și multe alte proiecte utilizează MySQL. Întrebarea este interesantă în modul în care este implementată din punct de vedere tehnic?
Nu exact ca ei, ci cum poate fi proiectat deloc, principalele cerințe:
  1. Utilizarea bazelor de date libere
  2. Lucrarea transparentă cu baza de date (adică scripturile nu trebuie să știe cum și ce este aranjat acolo și să se conecteze fie la un server întotdeauna, fie la un server aleator în cluster)
  3. Dacă un server nu reușește, astfel încât lucrările să continue și datele să nu se piardă
  4. Performanță excelentă (un număr foarte mare de cereri au fost procesate)
  5. Extensibilitate bună (fără a dezactiva sistemul, puteți adăuga sau elimina serverul)


Restricțiile sunt următoarele:
  1. Baza este relativ mică (maximum 8 concerte, deși nu este un fapt că poate deveni mai mare)
  2. Aproape toate mesele sunt legate prin chei străine
  3. Interogările sunt relativ simple (cel mai mare număr de SELECT, puțin mai puțin Insert și foarte puțin Update)
  4. Interogările sunt primitive și, cel mai adesea, afectează 1-2 mese

Întrebarea este: Care sunt cele mai bune modalități de a implementa acest lucru?

Era înclinat să memcached + MySQL (InnoDB) + NDB, dar cu NDB ceva nu este clar, dar mulți scuipat fără a explica ce si cum, dar de multe ori fulgeră informația că în cazul în care baza va fi mai mult decât RAM-ul de pe orice server, toate îndoit (în afară, nu a înțeles modul în care este implementat sistemul de stocare, pentru că judecând după toată documentația este stocată în memorie), și nu există nici un suport pentru chei străine, și fără a le va fi dificil de a trăi. Cu replicarea, de asemenea, nu este deosebit de ușor de înțeles (există dublare de date, dar referințele merg doar la comandant).
Sarcina principală: depozitare fiabilă + toleranță la defecte și o viteză acceptabilă sub sarcină mare (aproximativ 10k solicitări pe secundă). Cine poate recomanda sau oferi un link la un articol sau documentare.

La gruparea, administratorul vine cu una din cele două probleme
1. Butelii care nu pot / nu pot fi compensate prin creșterea capacității unui singur server
2. Crearea unui serviciu de înaltă disponibilitate (disponibilitate înaltă)

În consecință, prima va fi foarte costisitoare și hemoroidă. Am întâmpinat sincer sarcini foarte mari, dar odată cu organizarea corectă a structurii bazei de date, fierul a păstrat totul. Este mai simplu să optimizăm structura în acest caz, decât să rupem toate tipurile de NDB-uri și master master replication.

Al doilea este de a construi un cluster master / slave, care schimbă automat rolurile în caz de eșec. Nu recomand replicarea. Poți să te uiți la DRBD || GFS || GPFS + Heartbeat || pacemaker

Răspunsul dvs. la întrebare

Conectați-vă pentru a scrie un răspuns

  • MySQL
  • MySQL
  • Moscova
  • Cu normă întreagă
  • de la 150 000 la 600 000 de ruble.
  • Moscova
  • Cu normă întreagă
  • Până la 160 000 de ruble.
  • Moscova
  • Cu normă întreagă
  • Până la 160 000 de ruble.
  • Nakhabino, sat
  • Muncă cu timp parțial
  • de la 50 000 la 80 000 de ruble.

70000 RUR / pe proiect

500 ruble pe proiect

Conectați-vă la site

Pentru a pune o întrebare și pentru a primi un răspuns calificat la aceasta.

Articole similare