由于新装了个ssd,原来的机械盘作为副盘。
一直对ssd的可靠性保留怀疑的态度,于是,在机器上装了svn,把平时的ssd的资料使用svn提交到副盘。
mysql数据库都是自己平时开发的小项目,特点是,开发完成之后就停止更新,于是不可能每次都备份全部的数据库,这是非常浪费的
于是写脚本如下,脚本可以想起来就执行一次,也可以加入windows计划或者linux crontab,不会造成太大的额外负担
$host = 'localhost';
$user = 'root';
$pass = '';
$mysql_dump_bin = 'D:\wamp\bin\mysql\mysql5.5.16\bin\mysqldump';
$mysql_backup_dir = 'E:\db_backup';
$mysql_backup_flag = $mysql_backup_dir . '\\flag.txt';
touch($mysql_backup_flag);
try{
$db_link = mysql_connect('localhost','root','');
mysql_select_db('information_schema',$db_link);
$time_flag = file_get_contents($mysql_backup_flag);
$dbs = array();
$q = mysql_query("select distinct `TABLE_SCHEMA` from `TABLES` where `UPDATE_TIME` > '{$time_flag}'",$db_link);
while($obj = mysql_fetch_object($q)){
if($obj->TABLE_SCHEMA == 'information_schema' || $obj->TABLE_SCHEMA == 'performance_schema')
continue;
$dbs[] = $obj->TABLE_SCHEMA;
}
if($dbs){
if($pass){
$pass_str = '-p'.$pass;
}
foreach($dbs as $db){
echo "backup {$db} ....\n";
system("{$mysql_dump_bin} -u{$user} {$pass_str} {$db} > {$mysql_backup_dir}\\{$db}-last.sql");
echo "backup {$db} done.\n";
}
$q = mysql_query("select max(`UPDATE_TIME`) as n from `TABLES`",$db_link);
$time_flag = mysql_result($q,0,'n');
echo "Writing last back time.\n";
file_put_contents($mysql_backup_flag,$time_flag);
echo "All done.";
}else{
echo "Nothing to do. Done.";
}
}catch(Exeption $e){
die('Mysql server is not running.');
}