【美丽的代码】MySQL分表备份(Shell,非Web)
时间:2008-09-19
来源:互联网
#!/usr/local/php5/bin/php
<?php
/**
* @File name: mysql_dump.php
* @author: 李枨煊
* @Date: Thu Jun 05 11:16:16 CST 2008
* @Copyright (C) , 2008, SUIKEE Co., Ltd.
* @Desription: 备份数据库,分表备份(每个表是一个文件)
* SHELL脚本,非Web脚本。
* Linux系统可修改文件头部的PHP路径,然后执行mysql_dump.php --help
* Windows/Linux系统均可直接执行 <PHP路径>/php mysql_dump.php --help
*/
//---------------------------------------------------------------
//默认数据库配置
$cfg_db = array(
'host' => 'localhost',
'user' => 'root',
'pass' => '123456',
'database' => 'mysql',
);
$dirRoot = '/usr/local/bak'; //要备份的路径
$mysqlRoot = '/usr/local/mysql/'; //MySQL路径
//---------------------------------------------------------------
$help = "
mysql_dump.php -hhost -uuser -ppassword -ddatabase -f/usr/local/bak/
--help Show the help info
-h MySQL's host , The default is '{$cfg_db['host']}'
-u MySQL's username, The default is '{$cfg_db['user']}'
-p MySQL's password, The default is '{$cfg_db['pass']}'
-d MySQL's database, THe default is '{$cfg_db['database']}'
-f The bak dir (only dir), THe default is '$dirRoot'
-m The MySQL dir, The default is '$mysqlRoot'";
set_time_limit(0); //无限超时时间
//整理参数
foreach ($argv as $value)
{
$vKey = substr($value,0,2); //参数键键
$vValue = substr($value,2); //参数值
if($value == '--help') //帮助
{
echo $help;
exit;
}
if($vKey == '-h') //主机
{
$cfg_db['host'] = $vValue;
}
if($vKey == '-u') //用户名
{
$cfg_db['user'] = $vValue;
}
if($vKey == '-p') //密码
{
$cfg_db['pass'] = $vValue;
}
if($vKey == '-d') //数据库名
{
$cfg_db['database'] = $vValue;
}
if($vKey == '-f') //备份的路径
{
$dirRoot = $vValue;
}
}
//连接数据库
$link = @mysql_connect($cfg_db['host'],$cfg_db['user'],$cfg_db['pass']) or die("Can't connect the mysql.\nErrorNum:".mysql_errno()."\nErrorInfo:".mysql_error()."\n");
mysql_select_db($cfg_db['database']) or die("Can't select the database.\nErrorNum:".mysql_errno()."\nErrorInfo".mysql_error());
//取出数据表
$query = mysql_query('SHOW TABLES',$link);
while ($row = mysql_fetch_array($query,MYSQL_NUM))
{
$table = $row[0]; //要操作的数据表
$microtime = microtime(true); //统计执行时间
echo `{$mysqlRoot}/bin/mysqldump -h{$cfg_db['host']} -u{$cfg_db['user']} -p{$cfg_db['pass']} --opt {$cfg_db['database']} {$table} > {$dirRoot}/{$cfg_db['database']}.{$table}.sql`;
$microtime = microtime(true) - $microtime; //计算执行时间
$microtime = sprintf('%.3f',$microtime); //格式化执行时间
echo "--------Dump Over [{$cfg_db['database']}.{$table}][$microtime].\n";
}
?>
[/php]
Shell脚本,不要在Web环境下执行。。

mysql_dump.zip (1.37 KB)
作者: 飞翔de希望 发布时间: 2008-09-19

作者: RICHARD 发布时间: 2008-09-22
作者: gvtbs 发布时间: 2008-09-22
作者: 飞翔de希望 发布时间: 2008-09-24
作者: hy0kl 发布时间: 2008-10-28
作者: php_buda 发布时间: 2009-10-08
网络营销 http://www.mijian.net
作者: lnucopxer 发布时间: 2009-10-09
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28