Backup MySQL
Tot op heden maakte ik altijd een backup van mijn MySQL db met behulp van Navicat, nu vind ik dat niet echt veilig en betrouwbaar omdat het nogal onduidelijk is..
Wat is nu de beste en veiligste manier van backuppen van MySQL gegevens?
Gewijzigd op 01/01/1970 01:00:00 door Wout van der Burg
En dan gewoon mysqldump
Gr.
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
<?PHP
ini_set('display_errors', 1); error_reporting(E_ALL);
/* Mysql Backupper
* Backup your MySql Without PhpMyAdmin.
*
*
*/
$to = 'email';
//$to = '@gmail.com';
$subject = 'Backup';
$headers = 'From: ' . "\r\n" .
// config hier mag je dingen veranderen
$cfg['naam'] = ''; // inlognaam mysql
$cfg['ww'] = ''; // wachtwoord mysql
$cfg['host'] = ''; // host, meestal localhost
$cfg['db'] = ''; // database
$cfg['bes'] = 1; // schrijven in bestand, 1=ja,0=nee
$cfg['view'] = 3; // 0=query's weergeven+error's, 1= alleenquerys,2= alleen errors,3=niks
$cfg['str'] = 1; // structuur, 1=ja,2=nee
$cfg['data'] = 1; // data, 1=ja,0=nee
$cfg['dbs'] = 1; // met create db?, 1=ja,0=nee
// een data array
$key = array("PRI"=>"PRIMARY KEY","UNI"=>"UNIQUE KEY","MUL"=>"KEY",""=>"");
// connect to database
$err = array(); // error array
$arr = array(); // stuctuur array
// connect to host
if(mysql_connect($cfg['host'],$cfg['naam'],$cfg['ww'])) {
// select db
if(!mysql_select_db($cfg['db'])) {
$err[] = 'Verbinding DB mislukt';
}
} else {
// host mislukt
$err[] = 'Verbinding host mislukt';
}
/*
* Backupper
*/
$querys[] = "-- Generate By Backupper--\n";
$querys[] = "-- MySql Dump--\n";
//$querys[] = "-- Make your dump without PhpMyAdminn";
$querys[] = "-- Version: 1 -- \n";
//$querys[] = "-- n";
//$querys[] = "--n";
$querys[] = "-- Database: ".$cfg['db']. "\n";
//$querys[] = "-- ";
if($cfg['view'] <= 1) {
echo "<pre>";
for($i=0;$i<count($querys);$i++) {
echo $querys[$i];
}
echo "</pre>";
}
if($cfg['dbs'] == 1) {
if($cfg['bes'] == 1) {
// $querys[] = "-- n";
// $querys[] = "-- Create Database";
$querys[] = "CREATE DATABASE ".$cfg['db'].";\n";
$querys[] = "USE ".$cfg['db'].";\n";
// $querys[] = "-- Rest nn";
}
// echo "-- n";
// echo "-- create Database";
// echo "CREATE DATABASE ".$cfg['db'].";\n";
// echo "USE ".$cfg['db'].";\n";
// echo "-- rest nn";
}
// verkrijg tables
$get_tab = mysql_query("SHOW TABLES FROM ".$cfg['db']);
// while tab
while($x = mysql_fetch_array($get_tab)) {
// structuur vars
///$s = "-- n";
//$s .= "-- Structuur van tabel: ".$x[0]."n";
//$s .= "-- nn";
$s = "CREATE TABLE ".$x[0]." ( \n";
//$k = ''; // keys
// get tabelen
$get_v = mysql_query("SHOW COLUMNS FROM ".$x[0]." FROM ".$cfg['db']);
// EIGENWIJS DING
while($iks = mysql_fetch_assoc($get_v)) {
$temp = $iks['Field'];
// zet in array voor de data
if(!isset($velden[$x[0]][$temp])) {
$velden[$x[0]][$temp] = $temp;
}
// table maken, stuctuur
if($cfg['str'] == 1) {
if(!isset($arr[$x[0]][$iks['Field']])) {
// in array proppen
$arr[$x[0]][$iks['Field']] = $iks['Field'];
// null berekenen
$null = (!empty($iks['Null']) && $iks['Null'] == "YES") ? "NULL" : "NOT NULL";
// bij de string proppen
$s .= $iks['Field']." ".$iks['Type']." ".$null." ".$iks['Extra'].",\n";
// als key niet leeg is
if(!empty($iks['Key'])) {
$k = $key[$iks['Key']]." (".$iks['Field']."),\n";
}
}
}
}
// structuur weergeven
$var = $s.substr($k,0,-2)."\n);";
if($cfg['view'] <= 1 && $cfg['str'] == 1) {
echo '<pre>'.$var.'</pre>';
}
// structuur in bestand
if($cfg['str'] == 1) {
// $querys[] = "n";
$querys[] = $var;
// $querys[] = "n";
}
// data
$data = mysql_query("SELECT * FROM ".$x[0]);
// zet alla data in array's
while($z = mysql_fetch_array($data)) {
// velden en data
$imkeys = ""; // keys str
$imdata = ""; // data str
foreach($velden[$x[0]] as $val) {
// zet data in een str
$imkeys .= $val.",";
$imdata .= "'".$z[$val]."',";
}
// query maken
$q = "INSERT INTO ".$x[0]." (".substr($imkeys,0,-1).") VALUES (".substr($imdata,0,-1).");\n";
// weergeven
if($cfg['view'] <= 1 && $cfg['data'] == 1) {
echo $q.'<br>';
}
// query in bestand
if($cfg['data'] == 1) {
$querys[] = $q;
}
// dellen
unset($q);
} // data
} // grote while, tables
// bestand afhandeling
if($cfg['bes']==1) {
$dat = '';
// openen
$fp = fopen($cfg['db'].'.sql','w');
// geen bestand aanmaken
if(!$fp) {
$err[] = 'Kan bestand niet openen';
}
// inladen in var
foreach($querys as $content) {
$dat .= $content;
}
// schrijven
$write = fwrite($fp,$dat);
mail($to, $subject, $dat, $headers);
// als schrijven is mislukt
if(!$write) {
$err[] = 'Kan niet in bestand schrijven';
}
// sluiten
fclose($fp);
}
// error afhandeling
if(count($err) == 0) {
header ('refresh: 4; url=index.php');
die ('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<link href="style.css" rel="stylesheet" type="text/css" />
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
<title>Gelukt</title>
</head>
<body>
<div id="inlog"><center>U\'ve got mail</center></div>
</body>
<html> ');
} else {
if($cfg['view'] == 0 || $cfg['view'] == 2) {
echo 'Deze errors zijn opgetreden<br>';
foreach($err as $val) {
echo $val .'<br/>';
}
}
}
/*
* Einde backupper
*/
?>
ini_set('display_errors', 1); error_reporting(E_ALL);
/* Mysql Backupper
* Backup your MySql Without PhpMyAdmin.
*
*
*/
$to = 'email';
//$to = '@gmail.com';
$subject = 'Backup';
$headers = 'From: ' . "\r\n" .
// config hier mag je dingen veranderen
$cfg['naam'] = ''; // inlognaam mysql
$cfg['ww'] = ''; // wachtwoord mysql
$cfg['host'] = ''; // host, meestal localhost
$cfg['db'] = ''; // database
$cfg['bes'] = 1; // schrijven in bestand, 1=ja,0=nee
$cfg['view'] = 3; // 0=query's weergeven+error's, 1= alleenquerys,2= alleen errors,3=niks
$cfg['str'] = 1; // structuur, 1=ja,2=nee
$cfg['data'] = 1; // data, 1=ja,0=nee
$cfg['dbs'] = 1; // met create db?, 1=ja,0=nee
// een data array
$key = array("PRI"=>"PRIMARY KEY","UNI"=>"UNIQUE KEY","MUL"=>"KEY",""=>"");
// connect to database
$err = array(); // error array
$arr = array(); // stuctuur array
// connect to host
if(mysql_connect($cfg['host'],$cfg['naam'],$cfg['ww'])) {
// select db
if(!mysql_select_db($cfg['db'])) {
$err[] = 'Verbinding DB mislukt';
}
} else {
// host mislukt
$err[] = 'Verbinding host mislukt';
}
/*
* Backupper
*/
$querys[] = "-- Generate By Backupper--\n";
$querys[] = "-- MySql Dump--\n";
//$querys[] = "-- Make your dump without PhpMyAdminn";
$querys[] = "-- Version: 1 -- \n";
//$querys[] = "-- n";
//$querys[] = "--n";
$querys[] = "-- Database: ".$cfg['db']. "\n";
//$querys[] = "-- ";
if($cfg['view'] <= 1) {
echo "<pre>";
for($i=0;$i<count($querys);$i++) {
echo $querys[$i];
}
echo "</pre>";
}
if($cfg['dbs'] == 1) {
if($cfg['bes'] == 1) {
// $querys[] = "-- n";
// $querys[] = "-- Create Database";
$querys[] = "CREATE DATABASE ".$cfg['db'].";\n";
$querys[] = "USE ".$cfg['db'].";\n";
// $querys[] = "-- Rest nn";
}
// echo "-- n";
// echo "-- create Database";
// echo "CREATE DATABASE ".$cfg['db'].";\n";
// echo "USE ".$cfg['db'].";\n";
// echo "-- rest nn";
}
// verkrijg tables
$get_tab = mysql_query("SHOW TABLES FROM ".$cfg['db']);
// while tab
while($x = mysql_fetch_array($get_tab)) {
// structuur vars
///$s = "-- n";
//$s .= "-- Structuur van tabel: ".$x[0]."n";
//$s .= "-- nn";
$s = "CREATE TABLE ".$x[0]." ( \n";
//$k = ''; // keys
// get tabelen
$get_v = mysql_query("SHOW COLUMNS FROM ".$x[0]." FROM ".$cfg['db']);
// EIGENWIJS DING
while($iks = mysql_fetch_assoc($get_v)) {
$temp = $iks['Field'];
// zet in array voor de data
if(!isset($velden[$x[0]][$temp])) {
$velden[$x[0]][$temp] = $temp;
}
// table maken, stuctuur
if($cfg['str'] == 1) {
if(!isset($arr[$x[0]][$iks['Field']])) {
// in array proppen
$arr[$x[0]][$iks['Field']] = $iks['Field'];
// null berekenen
$null = (!empty($iks['Null']) && $iks['Null'] == "YES") ? "NULL" : "NOT NULL";
// bij de string proppen
$s .= $iks['Field']." ".$iks['Type']." ".$null." ".$iks['Extra'].",\n";
// als key niet leeg is
if(!empty($iks['Key'])) {
$k = $key[$iks['Key']]." (".$iks['Field']."),\n";
}
}
}
}
// structuur weergeven
$var = $s.substr($k,0,-2)."\n);";
if($cfg['view'] <= 1 && $cfg['str'] == 1) {
echo '<pre>'.$var.'</pre>';
}
// structuur in bestand
if($cfg['str'] == 1) {
// $querys[] = "n";
$querys[] = $var;
// $querys[] = "n";
}
// data
$data = mysql_query("SELECT * FROM ".$x[0]);
// zet alla data in array's
while($z = mysql_fetch_array($data)) {
// velden en data
$imkeys = ""; // keys str
$imdata = ""; // data str
foreach($velden[$x[0]] as $val) {
// zet data in een str
$imkeys .= $val.",";
$imdata .= "'".$z[$val]."',";
}
// query maken
$q = "INSERT INTO ".$x[0]." (".substr($imkeys,0,-1).") VALUES (".substr($imdata,0,-1).");\n";
// weergeven
if($cfg['view'] <= 1 && $cfg['data'] == 1) {
echo $q.'<br>';
}
// query in bestand
if($cfg['data'] == 1) {
$querys[] = $q;
}
// dellen
unset($q);
} // data
} // grote while, tables
// bestand afhandeling
if($cfg['bes']==1) {
$dat = '';
// openen
$fp = fopen($cfg['db'].'.sql','w');
// geen bestand aanmaken
if(!$fp) {
$err[] = 'Kan bestand niet openen';
}
// inladen in var
foreach($querys as $content) {
$dat .= $content;
}
// schrijven
$write = fwrite($fp,$dat);
mail($to, $subject, $dat, $headers);
// als schrijven is mislukt
if(!$write) {
$err[] = 'Kan niet in bestand schrijven';
}
// sluiten
fclose($fp);
}
// error afhandeling
if(count($err) == 0) {
header ('refresh: 4; url=index.php');
die ('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<link href="style.css" rel="stylesheet" type="text/css" />
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
<title>Gelukt</title>
</head>
<body>
<div id="inlog"><center>U\'ve got mail</center></div>
</body>
<html> ');
} else {
if($cfg['view'] == 0 || $cfg['view'] == 2) {
echo 'Deze errors zijn opgetreden<br>';
foreach($err as $val) {
echo $val .'<br/>';
}
}
}
/*
* Einde backupper
*/
?>
Komt hier van de site. Ik heb hem zo aangepast dat hij mailt. en hij geeft nou geen errors warning en notices meer.
Ik weet zo niet meer wie hem gescript heeft volgens mij WEmakerij??? (jaja dat moet ik er nog weer in zetten)
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
komt hier weg oorspronkenlijk:
http://www.phphulp.nl/php/scripts/3/519/
maar ik zou dan line 70 dit er wel eff uit halen:
anders maakt die ook nog een backup .sql bestandje in je dir waar je de backup.php hebt staan.
maar nu heb ik nog een vraagje.. als je deze pagina nou elke 48uur 1x wilt laten laden zonder het zelf aan te roepen.
kan dat met php of moet je het gewoon handmatig laden..
...cronjob...
Nog nooit van gehoord...
PS. is niet bij alle servers beschikbaar...
makje ;) nog bedankt....