Avatar billede cronck Nybegynder
12. maj 2009 - 01:02 Der er 7 kommentarer og
1 løsning

Export ved brug af mysqldump

Hej folkens,

Jeg sidder og er igang med at lave et PHP script der email'er mig en backup af en større database.
Planen er at dette på et tidspunkt skal køres 1 gang dagligt.

Jeg bruger følg. i mit PHP-script til at danne min backup-fil.
system("mysqldump -h ".$dbhost." -u ".$dbuser." -p".$dbpass." ".$dbname." > ".$backupfile);

For at bekræfte at indeholdet var korrekt, blev jeg selvfølgelig nød til at kigge nærmere på selve database-filen.

Hvad jeg ikke helt forstår er linier som denne:
/*!40000 ALTER TABLE `SMSLog` DISABLE KEYS */;

Hvad gør den?
Jeg frygter lidt at tallet 40000 begrænser hvor mange rækker den laver backup af? :)

Her er et komplet eksempel hvor den indgår

LOCK TABLES `SMSLog` WRITE;
/*!40000 ALTER TABLE `SMSLog` DISABLE KEYS */;
INSERT INTO `SMSLog` VALUES (NULL,'Test','XXXXXX',1,'2009-05-03 21:20:53')
/*!40000 ALTER TABLE `SMSLog` ENABLE KEYS */;
UNLOCK TABLES;
Avatar billede arne_v Ekspert
12. maj 2009 - 01:18 #1
Hvis du tilretter den til:

LOCK TABLES `SMSLog` WRITE;
ALTER TABLE `SMSLog` DISABLE KEYS;
INSERT INTO `SMSLog` VALUES (NULL,'Test','XXXXXX',1,'2009-05-03 21:20:53')
ALTER TABLE `SMSLog` ENABLE KEYS;
UNLOCK TABLES;

så vil INSERT køre hurtigere.

Hvilket er relevant hvis du har rigtigt mange rækker.
Avatar billede cronck Nybegynder
12. maj 2009 - 01:24 #2
Pt. er der lidt over 2000 rækker i den ene tabel, hvilket strækker for data for perioden fra 01-04-2009 til 01-01-2010.

Eftersom det forventes at bruges et par år frem i tiden som minimum, vil der komme en del tusinde rækker med tiden.

Men det vil kører hurtigere?
Hvad gør "/*!40000" ?
Hvorfor bliver de automatisk sat ind når jeg bruger mysqldump? :)
Avatar billede arne_v Ekspert
12. maj 2009 - 01:27 #3
/* xxxx */

angiver at det er en kommentar.

mysqldump sætter vel de kommentarer infor for at det er nemmere for dig at aktivere.

Jeg ved ikke havd 40000 betyder.

Jeg tvivler på at det kan mærkes ved kun 2000 rækker.
Avatar billede cronck Nybegynder
12. maj 2009 - 01:30 #4
Var ikke helt sikker på om det nu også var kommentarer, ligesom det er i PHP-kode. :)

Smid gerne et svar.

Hvis du oven i hatten kan smide en kort forklaring på "disable keys" ville det være super. :o)
Avatar billede arne_v Ekspert
12. maj 2009 - 01:35 #5
Jeg har lige checket manualen.

Du behøver ikke engang fjerne udkommenteringen.

/*!40000 ALTER TABLE `SMSLog` ENABLE KEYS */;

bliver udført hvis MySQL versionen er >= 4.00.00 men ser en kommentar hvis mindre.
Avatar billede arne_v Ekspert
12. maj 2009 - 01:36 #6
http://dev.mysql.com/doc/refman/5.1/en/comments.html

(noget underlig feature, hvis du spørger mig)
Avatar billede arne_v Ekspert
12. maj 2009 - 01:37 #7
Og et svar.
Avatar billede cronck Nybegynder
12. maj 2009 - 01:42 #8
Hmm.. Jeg lader det sgu stå som det er.

Så må jeg lige teste en af dagene om jeg rent faktisk kan gendanne min database ud fra backup'en den danner.

Tak for hjælpen :)
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
Kategori
Computerworld tilbyder specialiserede kurser i database-management

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