一 备份数据库
我的这个是在TP5上,其实不在TP5也可以
逻辑:
1 首先在自己电脑的cmd命令上测试备份数据库,成功才能往下进行所以得到
C:/luanxiede/mysql-5.7/bin/mysql.exe shujiku > "C:/shujiku_0908.sql"
注:这里没用到用户名和密码是因为在本机上就可以省略.参考:
[client]
user=root
password=root
host= 127.0.0.1[test]
user=root
password=root
host= www.test.com
2.1方式一 然后将该语句放在网站根目录外sqlbackup.bat中
C:/luanxiede/mysql-5.7/bin/mysql.exe shujiku > "C:/www/test/sql/shujiku_0908.sql"
2.2 建立定时任务执行sqlbackup.bat文件
3.1 方式二 .(我的是在TP5中)首先在application/extra/ 目录下建立一个配置文件,我起的名字是base.php
<?phpreturn [// 数据库备份文件存放位置'sql_backup_path' => APP_PATH . 'backup/',
];
3.2 在Test.php控制器中写个方法
/**
* 备份数据库*/
publicfunction backup() {
$dbConfig= require(APP_PATH . 'database.php');
$filename= config('base.sql_backup_path') . $dbConfig['database'] . '-' .date('YmdHis',time()) . '.sql';
system( $dbConfig['exec_bin_dir'] ."mysqldump.exe -u" . $dbConfig['username'] . "-p" . $dbConfig['password'] . " " . $dbConfig['database'] . "> \"". $filename ."\"",$return);if($return === 0) {
$this->success('备份成功:'. $filename);
}else{
$this->error('备份失败');
}
}
3.3 还原数据库方法
/**
* 还原sql文件*/
publicfunction importSqlFile() {
$file= input('?get.file') ? input('get.file') : false;
$trueFile= config('base.sql_backup_path') . $file;if(!file_exists($trueFile)) {
$this->error('文件不存在');exit;
}$dbConfig= require(APP_PATH . 'database.php');
system($dbConfig['exec_bin_dir'] . "mysql.exe -u" . $dbConfig['username'] . "-p" . $dbConfig['password'] . "-h" . $dbConfig['hostname'] . "-P" . $dbConfig['hostport'] . " " . $dbConfig['database'] . "
$this->success('还原成功');
}else{
$this->error('还原失败');
}
}
4.1 方式三 和方式三类似,只不过是变成自定义命令形式 建立SalBackup.php文件:
use think\console\Command;
use think\console\Input;
use think\console\Output;classSqlBackup extends Command
{protectedfunction configure()
{
$this->setName('sqlbackup')->setDescription('database: backup');
}protectedfunction execute(Input $input, Output $output)
{//备份数据库
$dbConfig = require(APP_PATH . 'database.php');
$filename= config('base.sql_backup_path') . $dbConfig['database'] . '-' .date('YmdHis',time()) . '.sql';
$commond= $dbConfig['exec_bin_dir'] . "mysqldump.exe" . $dbConfig['database'] . "> \"". $filename ."\"";
exec($commond);
}
}
4.2 在application/command.php文件中写
4.3 在网站根目录建立sqlbackup.bat文件
C:
cd C:\home\www\test
C:\home\server\php-7.0.1\php.exe think sqlbackup
4.4 建立定时任务执行该.bat文件 我的是每晚2:30
二 还原数据库
D:/server/mysql-5.7/bin/mysql.exe -uroot -proot -h 127.0.0.1 -P 3306 test< D:/wamp/test/application/backup/test-20191111113922.sql