PHP执行数据库定时备份 和手动还原
2023-09-27 14:21:28 时间
一 备份数据库
我的这个是在TP5上,其实不在TP5也可以
逻辑:
1 首先在自己电脑的cmd命令上测试备份数据库,成功才能往下进行所以得到
C:/luanxiede/mysql-5.7/bin/mysql.exe shujiku > "C:/shujiku_0908.sql"
注:这里没用到用户名和密码是因为在本机上就可以省略.参考:
https://dev.mysql.com/doc/refman/5.6/en/mysql-config-editor.html 在mysql的目录下建立my.cnf :
[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
<?php return [
// 数据库备份文件存放位置 'sql_backup_path' => APP_PATH . 'backup/', ];
3.2 在Test.php控制器中写个方法
/** * 备份数据库 */ public function 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文件 */ public function 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'] . "<" . $trueFile,$return); if($return === 0) { $this->success('还原成功'); } else { $this->error('还原失败'); } }
4.1 方式三 和方式三类似,只不过是变成自定义命令形式 建立SalBackup.php文件:
<?php namespace app\common\command; use think\console\Command; use think\console\Input; use think\console\Output; class SqlBackup extends Command { protected function configure() { $this->setName('sqlbackup')->setDescription('database: backup'); } protected function 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文件中写
<?php return [ 'app\common\command\SqlBackup' ];
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
相关文章
- php连接docker运行的mysql,显示(HY000/2002): Connection refused的解决办法
- PHP 安全三板斧:过滤、验证和转义之转义篇 & Blade模板引擎避免XSS攻击原理探究
- PHP Mysql-创建数据库
- PHP public、private、protected 修饰符
- php的instanceof判断闭包Closure
- php base_convert 进制转换
- PHP文件操作
- php 计算两个时间差 两个时间日期相隔的天数,时,分,秒
- Medoo - 轻量级php数据库框架
- 总结一下php合并数组的几种方法
- php 输出 js数组与对象
- PHP 数组的拷贝是按值传递 or 按引用传递
- PHP 生成随机字符串与唯一字符串
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [1] 单例模式连接数据库
- PHP 开发 APP 接口 学习笔记与总结 - XML 方式封装通信接口
- 7 种流行 PHP IDE 的比较
- 《PHP和MySQL Web开发从新手到高手(第5版)》一2章 MySQL简介2.1 数据库简介
- 《PHP和MySQL Web开发从新手到高手(第5版)》一2.4 创建数据库
- 用php实现遍历目录
- PHP 操作数据库乱码 以及调试
- (独孤九剑)---PHP操作MySQL数据库
- 跳坑成功,手摸手带你使用PHP连接Oracle数据库
- PHP导出数据库方法
- PHP查找与搜索数组元素
- PHP访问access数据库
- PHP Catchable fatal error: Argument 2 passed to IlluminateRoutingUrlGenerator::__construct()
- php如何同时连接多个数据库
- php远程连接mysql数据库的步骤
- PHP 自学教程之MySQL数据库
- php checkbox 从数据库读取和写入
- 编程语言拟人化:Java、C++、Python、Ruby、PHP、C#、JS!--隆重推荐转
- PHP正则表达式