Avatar billede sollie Nybegynder
24. oktober 2009 - 12:47 Der er 4 kommentarer og
1 løsning

split en database over flere maskiner.

Jeg sidder i øjeblikket og arbejder på et system til mig selv, som gør brug af en mysql database som køre på en NAS (4 harddiske i raid). NAS'en gør brug af filsystemet ext3 med en blok size på 4 KiB.

Mit system gør brug af en logging funktion som jeg bruger til at se den alm. aktivitet på systemet.

Efter min viden så gemmer MySQL en tabel i 2 eller 3 filer hvoraf det kun er en af disse filer som indeholder de indsatte data og de andre filer bruges til at indeholde andre relaterede informationer til tabellen.

Ud over dette så har jeg læst mig frem til at ext3 filsystemet med en blok size på 4 KiB har en maksimum grænse for en enkelt fil's størrelse på 2 TeraBytes hvilket jeg efter nogen tids kørsel kan overskride i den log tabel jeg har i databasen.

Jeg har en enhed mere som er planen også skal køre med en MySQL database som også skal bruges til systemet.

Jeg vil gerne vide om min forståelse af at MySQL gemmer informationer på den måde, eller om den vil splitte de informationer ud i flere filer og undgå problemet med en maks fil størrelses grænse?

Jeg vil også gerne vide om det er muligt at sætte en MySQL server op til at dele de informationer som den skal gemme ud til andre MySQL servere når den evt. overgår en grænse så man kan bruge 2 eller flere MySQL servere som en enkelt.
Et eksempel på det jeg mener her kunne f.eks. være:

Server 1 får informationer den skal gæmme i tabellen log i databasen a. Server 1 har f.eks. ikke mere harddisk plads eller en anden grænse er overskredet eller andet, så server 1 sender informationerne videre til server 2 hvor server 2 så gemmer disse informationer i dens log tabel i server 2's a database.

Grunden til at jeg spørger efter det herinde er fordi jeg har forsøgt at lede efter det på google, men i stedet for at finde det jeg leder efter så får jeg reslutater på hvordan man bygger et MySQL cluster for redundanc og evt. hurtigere læsning. Som man f.eks. gør med raid hvor man enten spejler informationerne for at have backup og/eller hurtigere læse/skrive hastighed.
Avatar billede arne_v Ekspert
24. oktober 2009 - 18:14 #1
MySQL 5.1 har en partition features som løser problemet.

Generelt: når du når op på TB databaser, så:
1) skal du overveje om MySQL er det rette værktøj til opgaven
2) ansætte en med forstand på fysiske database organisering, fordi det kræver noget at få den slags databaser til at performe ordentligt
Avatar billede sollie Nybegynder
24. oktober 2009 - 18:33 #2
Ok, det skal jeg gøre.
Hvis du lægger et svar så får du dine points. :-)
Avatar billede arne_v Ekspert
24. oktober 2009 - 18:53 #3
Bemærk iøvrigt at en tabel = en data fil plus fil med beskrivelse gælder for MyISAM tabeller - InnoDB tabeller er anderledes.

Partitionering løser max. fil størrelse problemet.

Men der er mange andre problemer med så store database. Noget så simpelt som backup er ikke helt nemt længere.

MySQL Cluster er en HA feature.

Men langt de fleste med store MySQL databaser bruger traditionel replikering og lader eventuelt slave'erne tage en del af readonly adgang (queries).

Og et svar.
Avatar billede sollie Nybegynder
24. oktober 2009 - 19:02 #4
Angående at splitte databasen over på flere maskiner så fandt jeg endelig med lidt hjælp fra nogen jeg kender, en mulig løsning.

Løsningen vil være at gøre brug af FEDERATED Storage Engine. Selvføldig inden jeg går igang med at bruge dette samlet skal jeg inden da læse mere op på det for at undgå evt. problemer.

Hvis dette dog ikke fungere sammen så har jeg en nødløsning i baghånden.

Men jeg siger mange tak for hjælpen. :-)
Avatar billede arne_v Ekspert
24. oktober 2009 - 19:19 #5
Federated i MySQL mapper 1 lokal tabel til 1 remote tabel.

Den løser ikke fil systems begrænsninger.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester