Mysql Backup via mail
Bvd,
Pepijn
Heb je al bedacht op welke manier je de backup gaat maken? Het versturen van het bestand is zal het probleem niet zijn.
edit: typo
Gewijzigd op 01/01/1970 01:00:00 door M Ypma
dit script van Eris gebruiken.
Als je van tevoren weet dat je DB niet groter wordt dan 5MB, kun je Je kan 'm natuurlijk ook gewoon naar een andere ftp server sturen.
Is er ook een script wat de db in een bestand opslaat of zo? Want voor het script van Eris is mijn db te groot.
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?
#create a sql backup and send it to your e-mail address
//define settings
//database host
DEFINE('dbhost','localhost');
//database name
DEFINE('dbnaam','databasenaam');
//database user
DEFINE('dbuser','databaseuer');
//database passwordt
DEFINE('dbpass','wachtwoord');
//domeinnaam
DEFINE('domein','phphulp.nl');
//doel
//connect with database
$link = mysql_connect(dbhost,dbuser,dbpass) or die('No datbase conection could be establised');
mysql_select_db(dbnaam,$link) or die('No datbase selected');
//query to recive table names
$query = mysql_query('SHOW TABLE STATUS') or die(mysql_error());
$sql_backup = '';
//whileloop to loop trough every table
while($row = mysql_fetch_assoc($query))
{
//show sql query to rebuild the query
$sql = 'SHOW CREATE TABLE '.$row['Name'].'';
//exucte error or give a error
$query2 = mysql_query($sql) or die(mysql_error());
//create sql
$sql_backup.="\r\n#Create table ".$row['Name']."\r\n\r\n";
$out = mysql_fetch_assoc($query2);
$sql_backup.=$out['Create Table'].";\r\n\r\n";
$sql_backup.="#Dump data\r\n\r\n";
//SQL code to select everything for table
$sql = 'SELECT * FROM '.$row['Name'];
$out = mysql_query($sql);
$sql_code = '';
//loop trough the colloms
while($code = mysql_fetch_array($out,MYSQL_ASSOC))
{
$sql_code .= "INSERT INTO ".$row['Name']." SET ";
foreach($code as $insert => $value)
{
$sql_code.=$insert ."='".addslashes($value)."',";
}
$sql_code = substr($sql_code, 0, -1);
$sql_code.= ";\r\n";
}
$sql_backup.= $sql_code;
}
//generade a unique id
$unique = md5(uniqid(time()));
$inhoud = chunk_split(base64_encode($sql_backup)) . "\r\n";
$filename = date("Ymd");
$filename.=".txt";
// Laten we eerst controleren of het bestand bestaat en of we er in kunnen schrijven.
if (is_writable($filename)) {
// In ons voorbeeld openen we $filename in 'toevoeg' modus.
// De bestands pointer is aan het einde van het bestand
// en daar gaat $inhoud naar toe als we het fwrite()'en.
if (!$handle = fopen($filename, 'a')) {
print "Kan het bestand niet openen ($filename)";
exit;
}
// Schrijf $inhoud naar ons bestand dat we geopend hebben.
if (!fwrite($handle, $inhoud)) {
print "Kan niet schrijven naar bestand ($filename)";
exit;
}
print "Succes, geschreven ($inhoud) naar bestand ($filename)";
fclose($handle);
} else {
print "Het bestand $filename is niet schrijfbaar";
}
?>
#create a sql backup and send it to your e-mail address
//define settings
//database host
DEFINE('dbhost','localhost');
//database name
DEFINE('dbnaam','databasenaam');
//database user
DEFINE('dbuser','databaseuer');
//database passwordt
DEFINE('dbpass','wachtwoord');
//domeinnaam
DEFINE('domein','phphulp.nl');
//doel
//connect with database
$link = mysql_connect(dbhost,dbuser,dbpass) or die('No datbase conection could be establised');
mysql_select_db(dbnaam,$link) or die('No datbase selected');
//query to recive table names
$query = mysql_query('SHOW TABLE STATUS') or die(mysql_error());
$sql_backup = '';
//whileloop to loop trough every table
while($row = mysql_fetch_assoc($query))
{
//show sql query to rebuild the query
$sql = 'SHOW CREATE TABLE '.$row['Name'].'';
//exucte error or give a error
$query2 = mysql_query($sql) or die(mysql_error());
//create sql
$sql_backup.="\r\n#Create table ".$row['Name']."\r\n\r\n";
$out = mysql_fetch_assoc($query2);
$sql_backup.=$out['Create Table'].";\r\n\r\n";
$sql_backup.="#Dump data\r\n\r\n";
//SQL code to select everything for table
$sql = 'SELECT * FROM '.$row['Name'];
$out = mysql_query($sql);
$sql_code = '';
//loop trough the colloms
while($code = mysql_fetch_array($out,MYSQL_ASSOC))
{
$sql_code .= "INSERT INTO ".$row['Name']." SET ";
foreach($code as $insert => $value)
{
$sql_code.=$insert ."='".addslashes($value)."',";
}
$sql_code = substr($sql_code, 0, -1);
$sql_code.= ";\r\n";
}
$sql_backup.= $sql_code;
}
//generade a unique id
$unique = md5(uniqid(time()));
$inhoud = chunk_split(base64_encode($sql_backup)) . "\r\n";
$filename = date("Ymd");
$filename.=".txt";
// Laten we eerst controleren of het bestand bestaat en of we er in kunnen schrijven.
if (is_writable($filename)) {
// In ons voorbeeld openen we $filename in 'toevoeg' modus.
// De bestands pointer is aan het einde van het bestand
// en daar gaat $inhoud naar toe als we het fwrite()'en.
if (!$handle = fopen($filename, 'a')) {
print "Kan het bestand niet openen ($filename)";
exit;
}
// Schrijf $inhoud naar ons bestand dat we geopend hebben.
if (!fwrite($handle, $inhoud)) {
print "Kan niet schrijven naar bestand ($filename)";
exit;
}
print "Succes, geschreven ($inhoud) naar bestand ($filename)";
fclose($handle);
} else {
print "Het bestand $filename is niet schrijfbaar";
}
?>
ik denk dat dit zou moeten werken
@ Koen. Dank je wel dit script werkt nu. Alleen hoe laat ik heb automaties 1 keer per dag uitvoeren?
Windows server: taakplanner
Linux server: cron
of miss iets met datums, maar dan moet er wel iemand op je site hebben gekeken voor hij het doet...
(if ($datum > 18:00 && $vandaag != $databaseresult->laatste_dag) {
}
)
Edit:
Cronjobs dus
Gewijzigd op 01/01/1970 01:00:00 door Mark L
Linux