sql Dump | Export
Ik zou elke avond met behulp van een cronjob, een query laten uitvoeren die mijn database export/dumpt naar een .sql extensie.
Ik vind op google alleen de manier via een commandline.
Dit is wat ik nu heb:
Dit doet hij nu ook per tabel.
Later zou ik dit dan gaan plaatsen op een andere FTP.
Mijn error is de volgende:
Error: Access denied for user '******_db'@'10.1.1.9' (using password: YES)
Zou iemand me kunnen helpen?
Alvast bedankt
Diov
Gewijzigd op 10/05/2013 16:15:40 door - Diov -
De error betekent dat je geen toegang tot de database hebt waarschijnlijk door een foutieve combinatie van wachtwoord/gebruikersnaam of rechten
Als ik INTO OUTFILE weg doe, werkt het ook.
De rechten van dat bestand zijn 777
Je moet het volledige pad opgeven
Error: Access denied for user 'a*****_db'@'10.1.1.9' (using password: YES)
SELECT * INTO OUTFILE 'http://******.site88.net/admin/backups/mytable.sql' FROM leden
MySQL schrijft de OUTFILE naar het bestandssysteem.
Toevoeging op 10/05/2013 16:51:14:
Overigens krijg met SELECT INTO OUTFILE een csv bestand, en geen sql dump
En, hoe zorg ik dan voor een sql dump?
Zou het even bij je hoster navragen, veel hosters staan dit namelijk niet toe.
Maar dat werkt natuurlijk niet zo met een cronjob, want daar moet je ook altijd het fysieke pad opgeven.
Zelf een script schrijven, even googlen of afkijken bij PMA
Als je het via een cronjob doet, zou ik geen PHP gebruiken, maar mysqldump...
Dat is met command lines ofz, en ik weet niet hoe dit in zijn werk gaat.
Kan iemand me ff op de goeie weg willen zetten,
Alvast bedankt
Dioc
Het zou kunnen dat cron niet weet waar mysqldump staat; in dat geval moet je ook het pad naar mysqldump opgeven, bijvoorbeeld /usr/bin/mysqldump (maar op sommige systemen is dat pad anders).
Als je alle tabellen van de database tegelijk wilt dumpen dan kan dat door de naam van de tabel weg te laten in het mysqldump-commando.
De functie system of exec kon ik niet gebruiken.
Ik had dit script op internet gevonden:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
/* backup the db OR just a table */
function backup_tables($host,$user,$pass,$name,$tables = '*')
{
$link = mysql_connect($host,$user,$pass);
mysql_select_db($name,$link);
//get all of the tables
if($tables == '*')
{
$tables = array();
$result = mysql_query('SHOW TABLES');
while($row = mysql_fetch_row($result))
{
$tables[] = $row[0];
}
}
else
{
$tables = is_array($tables) ? $tables : explode(',',$tables);
}
//cycle through
foreach($tables as $table)
{
$result = mysql_query('SELECT * FROM '.$table);
$num_fields = mysql_num_fields($result);
$return.= 'DROP TABLE '.$table.';';
$row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
$return.= "\n\n".$row2[1].";\n\n";
for ($i = 0; $i < $num_fields; $i++)
{
while($row = mysql_fetch_row($result))
{
$return.= 'INSERT INTO '.$table.' VALUES(';
for($j=0; $j<$num_fields; $j++)
{
$row[$j] = addslashes($row[$j]);
$row[$j] = ereg_replace("\n","\\n",$row[$j]);
if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
if ($j<($num_fields-1)) { $return.= ','; }
}
$return.= ");\n";
}
}
$return.="\n\n\n";
}
//save file
$handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
fwrite($handle,$return);
fclose($handle);
}
?>
/* backup the db OR just a table */
function backup_tables($host,$user,$pass,$name,$tables = '*')
{
$link = mysql_connect($host,$user,$pass);
mysql_select_db($name,$link);
//get all of the tables
if($tables == '*')
{
$tables = array();
$result = mysql_query('SHOW TABLES');
while($row = mysql_fetch_row($result))
{
$tables[] = $row[0];
}
}
else
{
$tables = is_array($tables) ? $tables : explode(',',$tables);
}
//cycle through
foreach($tables as $table)
{
$result = mysql_query('SELECT * FROM '.$table);
$num_fields = mysql_num_fields($result);
$return.= 'DROP TABLE '.$table.';';
$row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
$return.= "\n\n".$row2[1].";\n\n";
for ($i = 0; $i < $num_fields; $i++)
{
while($row = mysql_fetch_row($result))
{
$return.= 'INSERT INTO '.$table.' VALUES(';
for($j=0; $j<$num_fields; $j++)
{
$row[$j] = addslashes($row[$j]);
$row[$j] = ereg_replace("\n","\\n",$row[$j]);
if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
if ($j<($num_fields-1)) { $return.= ','; }
}
$return.= ");\n";
}
}
$return.="\n\n\n";
}
//save file
$handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
fwrite($handle,$return);
fclose($handle);
}
?>
Zo gebruik je de functie: