Inlägg taggade ‘MySQL’
Monitorera din MySQL slav
fredag, februari 29th, 2008Nagios är ett välbekant verktyg för många sysadmins och efter att en av servrarna konstant hade problem med utrymme på en hårddisk så beslutade jag mig för att monitorera saken så att jag kan sova bättre om nätterna.
Själva installationen och konfigurationen tog ca en arbetsdag i anspråk men då är det en fullödig övervakning av webservrar, cpu, disk, applikationsservrar, databaser mm på alla servrar. För att monitorera disk remote kan man antingen köra kommandona via ssh men det tar cpukraft från den övervakande servern. Då installerar man istället hellre NRPE på alla servrar som ska övervakas. Jag har alltid mer eller mindre haft strul med MySQL slavar och att de faller ur synk pga rena SQL fel. Vet inte hur de uppstår men ofta handlar den om foreign-key problem. Dvs att det replikerade insert kommandot saknar en referens i nån tabell. Man kan köra ett litet script som ett cronjobb som heter keepStartingSlave.pl. Slaven stoppar nämligen på första bästa SQL fel och detta script rullar fram loggen ett steg. Personligen tycker jag att det är läskigt att ignorera just databasfel eftersom det är hjärtat i själva modermodemet.
Nej då är det bättre att övervaka slaven med Nagios och blåsa om slaven med den senaste backupen om den stöter på ohanterliga fel eller exekvera keepStartingSlave.pl. Man får iaf en signal på att man borde göra nåt sen vad man gör är upp till var och en och vad man kan leva med för dataförluster.
Hur monitorerar man en slav med nagios då ? Enkelt, tanka ned check-mysql-slave.pl och följ instruktionerna. Nu har jag full koll på när slaven hamnar ur synk!
MyLVM backup
tisdag, februari 26th, 2008Hur utför du dina mysql backuper ? Gissningsvis med mysqldump. Problemet med mysqldump är den låser databasen under hela backupen, vilket är oacceptabelt för en databas som har stor datamängd och ligger under stor belastning.
Hur gör man då ?
Piece of a cake.
- Se till att den partition som databasen ligger på är LVM:ad och har 10-20% ledigt icke allokerat utrymme (minst 1 G iaf).
- Installera mylvmbackup eller följ guiden på mysqlperformanceblog
Skillnaden med denna typ är att den endast låser databasen under ett kort ögonblick (< 10s) för att kunna:
- Montera en LVM snapshot partition (Ex: lvcreate -L2G –snapshot –name dbbackup /srv/mysql)
- Köra “show master status”och spara den i en fil så att man lätt kan synka upp en slav.
LVM for dummies:
- apt-get install lvm2
- Gotcha: cp -r /lib/lvm-200/ /lib/lvm-0 (iaf på edgy och feisty).
- pvcreate /dev/sda4 (220 GB partition).
- vgcreate VolGroup00 /dev/sda4
- lvcreate -L200G -nsrv VolGroup00
- mkfs.ext3 -L/var /dev/VolGroup00/srv
- tune2fs -c 0 /dev/VolGroup00/srv
- tune2fs -i 0 /dev/VolGroup00/srv
Ska du använda denna partition som db, datalagring eller för webbappar ? Då optimerar vi för prestanda på en gång.
- fstab: /dev/VolGroup00/srv /srv ext3 auto,defaults,noatime,data=writeback 0 2
- /boot/grub/menu.lst
- # defoptions=quiet splash rootflags=data=writeback
- # altoptions=(recovery mode) single rootflags=data=writeback
- sudo update-grub
- sudo tune2fs -o journal_data_writeback /dev/VolGroup00/srv
Det var väl enkelt:) Kanske lite mer avancerat än man är van vid men ganska straighton när man fattat skillnaden på pv (volym), vg(grupp) och lv (logisk enhet).
Det andra mindre säkra sättet är att sätta upp ett master-slave par (eller master-master) där man tar backup på slaven. Dock så händer det mellan varven att slaven inte kan hantera den binära informationen som replikeras och därmed bara prompt stoppar. Peter Z. på mysqlperformanceblog tycker för övrigt att denna metod är för lekmän och att man ska köra på LVM metoden.
Tailsweep kombinerar de båda faktiskt, lite hänglsen och livrem.
Vill nån ha mer tips i denna fråga så är det bara att kommentera!
Spatial index
söndag, januari 20th, 2008Har precis börjat använda MySQLs “geometry” datatyp för att lagra besökarnas koordinater till våra partners hemsidor (lat/long). Med denna datamodell kommer vi att kunna plotta ut på en karta varifrån våra besökare kommer samt att göra smarta sökningar typ: Hitta alla sajter vars besökare till minst 80% är från Stockholm.
Det svåra är att skapa polygoner som matchar de regioner som man vill få träff i. Det blir en del manuellt nedskrivande av koordinater från tex denna karttjänst: då jag knappast tror nån har bemödat sig med att definiera polygoner för Malmö, Stockholm, Göteborg mfl.
För att börja med Spatiala index tycker jag att man ska förkovra sig i denna enkla artikel: http://jeremy.zawodny.com/blog/archives/000418.html
OBS! den gäller för mysql-4 och kommandona fungerar ej för mysql-5, dock fungerar principerna.
Läs mer om spatial databaser



