[MySQL] Database locatie wijzigen

Pagina: 1
Acties:
  • 148 views sinds 30-01-2008
  • Reageer

  • wustenveld
  • Registratie: Februari 2002
  • Laatst online: 30-03 16:26
Hallo, ik heb op dit moment een mysql database draaien op een cobalt cube 3 server. De database staat in de /VAR partitie (/var/lib/mysql/). Nu loopt die partitie alleen een beetje vol omdat de databases steeds groter worden (er draaien applicaties met BLOB velden waar PDF bestanden in opgeslagen worden).

Op dit moment heeft de /VAR partitie nog 42 vrije MB's. In totaal zou het 484 MB kunnen bevatten. Ik vind het zo ie zo vreemd dat dit maar zo weinig MB's zijn, want dan kun je niet echt veel er in kwijt (wat nu dus blijkt aangezien 91% al vol staat).

Nu vroeg ik me af of het mogelijk is om de bestanden op /var/lib/mysql/ te verplaatsen naar een map zoals bijvoorbeeld /home/mysql/ (de home partitie kan 34250 MB hebben en er staat nog maar 1179 MB op). Dit lijkt me een betere partitie. Ik heb op internet gezocht, en ook bij de site van cobalt geweest maar kon er niks zinnigs over vinden. Alleen een antwoord waarin stond omschreven hoe ik kan checken welke bestanden dan te groot zijn, en als het logfiles zijn dan kon ik ze gewoon verwijderen. Maar ja, het zijn allemaal database bestanden, dus dat kan niet anders krijg ik een boze klant aan de telefoon :)

Ik hoop dat iemand me kan helpen, alvast bedankt.

  • Defspace
  • Registratie: Mei 2000
  • Laatst online: 17-04 23:56

Defspace

Administrator

Als /home/mysql op hetzelfde filesystem(partitie?) staat moet je in princiepe je hele /var/lib/mysql directory zonder meer kunnen kopieeren naar /home/mysql

Mysql stoppen
cp -Rf /var/lib/mysql/* /home/mysql

Rechten goed zetten.
Configuratie file back-uppen
Mysql configuratie aanpassen (verwijzen naar /home/mysql)
en mysql starten.

Lukt het niet, kan je meteen weer terug naar /var/lib/mysql

  • wustenveld
  • Registratie: Februari 2002
  • Laatst online: 30-03 16:26
Dit heb ik al eens een keer geprobeerd maar mislukte toen. Het zou goed kunnen dat ik bepaalde MySQL instellingen over het hoofd gezien heb. Weet je toevallig uit je hoofd waar ik welke instelling moet aanpassen, of anders een link naar een opsomming hiervan. Ik heb toen alleen de my.cnf aangepast door er wat dingen bij te zetten maar toen wou MySQL niet meer starten.

  • Defspace
  • Registratie: Mei 2000
  • Laatst online: 17-04 23:56

Defspace

Administrator

Je zou hier eens naar kunnen kijken.

http://www.mysql.com/doc/en/mysqlhotcopy.html

Maar ik houd me de laatste tijd niet zo veel meer bezig met MySQL ik ben lekker bezig met PostgreSQL (veel beter ;) :P )
Dus zo uit mijn hoofd kan ik je dat niet vertellen nee.
Maar volgens mij alleen:
basedir en datadir

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

P&W -> NOS

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 14:21

ripexx

bibs

Zover ik weet is het gebruikelijk, dat wanneer de files van mysql zich in een ander dir bevinden er door middel van een sym link vanuit de oude wordt verwezen naar de nieuwe dir. Of je moet mysql opnieuw compileren. Verder is de opzet van de mysql toch, dir naam is gelijk aan database en daaronder vallen de files? Dan gewoon je dir copy'en en symlinken. Dan heb je alleen een probleem als je een nieuwe db aanmaakt.

buit is binnen sukkel


  • wustenveld
  • Registratie: Februari 2002
  • Laatst online: 30-03 16:26
Ik heb het een en ander uitgeprobeerd.

- Ik heb de MySQL server gestopt
- Alle bestanden uit /var/lib/mysql gekopieerd naar /home/mysql
- Het bestand /etc/my.cnf aangepast. Onder [mysqld] heb ik de regel datadir=/home/mysql toegevoegd

Nadat ik de hele server opnieuw opgestart had en ik probeerde verbinding te krijgen met de mysql database (via telnet) kreeg ik de melding: Can't open socket connection through /var/lib/mysql/mysql.sock
Ik heb die dir nagekeken en het bestand mysql.sock staat er wel.
Ik heb het bestand my.cnf daarna meteen aangepast en alles weer gereboot en de database was weer in de lucht, alleen nog steeds vanuit /var/lib/mysql.
De /var partitie zit nu 94% vol en zal binnen enkele dagen wel helemaal volslippen wat weer kan resulteren in kapotte databases (heb ik al eens gehad).

Kan iemand mij vertellen waarom de database niet meer in de lucht wilt nadat ik de datadir verandert heb (/home/mysql/ is een exacte kopie van /var/lib/mysql/)

Ik hoop dat iemand me kan helpen, in ieder geval alvast bedankt

  • wustenveld
  • Registratie: Februari 2002
  • Laatst online: 30-03 16:26
als ik in /etc/rc.d/init.d de file mysql aanpas en daar de datadir aanpas naar /home/mysql dan wilt ie wel proberen op te starten. Alleen krijg ik een melding file not found ./linux-01-bin.index
En dit terwijl de file wel bestaat in /home/mysql.

De precieze melding zoals komt te staan in linux-01.ovimex.nl.err is:
--------
020917 17:21:01 mysqld started
^G/usr/sbin/mysqld: File './linux-01-bin.index' not found (Errcode: 13)
020917 17:21:02 Could not use linux-01-bin for logging (error 13)
020917 17:21:02 /usr/sbin/mysqld: Can't find file: './mysql/host.frm' (errno: 13)
020917 17:21:03 /usr/sbin/mysqld: Normal shutdown

020917 17:21:03 mysqld ended
--------

Wie helpt mij ?

  • wustenveld
  • Registratie: Februari 2002
  • Laatst online: 30-03 16:26
Oke het is me gelukt. Ik heb nu het volgende gedaan

1) /etc/rc.d/init.d/mysql stop
2) /etc/rc.d/init.d/mysql aangepast. De regel datadir aangepast naar datadir=/home/mysql
3) De map /var/lib/mysql/*.* gekopieerd naar /home/mysql
4) De chown en chgrp voor /home/mysql aangepast naar mysql mysql
5) /etc/rc.d/init.d/mysql start
Database online and running

6) Mappen uit /var/lib/mysql verwijderd. Behalve de mysql.sock file

Dit wastem
Pagina: 1