PHP执行数据库定时备份 和手动还原
一 备份数据库
我的这个是在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执行数据库定时备份 和手动还原的更多相关文章
- Mysql Navicat数据库定时备份,定时删除
Navicat自带实现数据库定时备份 1.先点击需要备份的数据库,然后点击计划,再点击新建批处理作业 2.然后出现双机可用任务列表,然后在已选择的任务中会出现可用任务 3. 点击保存,弹出对话框,给这 ...
- SQL Server数据库定时备份解决方案
SQL Server数据库定时备份解决方案 1.本方案采用软件为:SQLBackupAndFTP 10.0.3 版本,压缩包自带注册机,请自行破解. 2.软件截图如下: 3.功能说明:自动定时备份相关 ...
- windows下mysql数据库定时备份。
注意:看本教程先必须会windows自带的"任务计划程序". 首先创建一个bat后缀的文件我的是timerExecutePhp.bat文件 timerExecutePhp.bat ...
- oracle数据库定时备份
现有需求,设计一批处理文件,实现周一全部备份,周二周三周五周六增量备份,周四周日累计备份.并且每日将上个月本日数据删除(如今日8月7号,则删除7月7号的数据).并将备份压缩以减小所占空间. 思路: 备 ...
- Linux下实现MySQL数据库定时备份
咳~ 咳~ 为了避免数据操作失误.数据丢失.甚至删库跑路,简单做个数据备份吧 1.创建备份目录 # 习惯放在 local 下 cd /usr/local/ # 创建备份目录 mkdir backup ...
- window自动任务实现数据库定时备份
原理:利用window定时任务定时cmd加载mytask.bat文件,bat运行php.exe程序编译运行mytask.php文件 ,从而实现了数据库的备份 mytask.bat 内容: D:\php ...
- Windows数据库定时备份
首先打开:任务计划程序 右键任务计划程序库,选择创建基本任务 然后即可以按照实际情况逐步进行 直到启动程序--浏览(程序或脚本)时,这里本人导入的是backup.bat文件,文件内容为 @echo 设 ...
- linux篇-linux mysql数据库定时备份
1在linux上面创建一个文件夹,并且进行备份 cd /home mkdir backup cd backup 2创建一个脚本 Vi imaginebase.sh #!/bin/bash mysqld ...
- 使用教程 - BestSync同步软件 - SQL2008R2 数据库定时备份解决方案
需求: 1. 某公司的管理软件,数据库为SQL2008R2.2. 将整个数据库作为一个文件,定时同步到FTP 服务器3. 需要有多个备份,每同步一次,都备份上次的文件到备 ...
随机推荐
- Debian 11 “bullseye” 安装笔记
作者:gc(at)sysin.org,主页:www.sysin.org Debian 版本:11 代号:bullseye 发布日期:2021.08.14 内核版本:5.10 $ uname -a Li ...
- 基于Python的决策树分类器与剪枝
作者|Angel Das 编译|VK 来源|Towards Data Science 介绍 决策树分类器是一种有监督的学习模型,在我们关心可解释性时非常有用. 决策树通过基于每个层次的多个问题做出决策 ...
- Angular Module 共享模块使用 父模块使用多个子模块
Component.module.ts import {BrowserModule} from '@angular/platform-browser'; import {LocationStrat ...
- 单链表(Java--尚硅谷)
基础知识 大体结构和C++的链表差不多 补充之前不知道的:链表分两类,带和不带头结点的链表 现在才知道,Java没有像C/C++那样的指针 首先创建一个LinkList类,然后把链表的各个功能添加进去 ...
- spring学习日志三
一.回顾 1.1 依赖注入的方式. set方法来注入 <property name="属性名" /> 构造方法来注入<construtor-arg index=& ...
- 测试工具Wiremock介绍
WireMock是一个开源的测试工具,支持HTTP响应存根.请求验证.代理/拦截.记录和回放.最直接的用法: 为Web/移动应用构建Mock Service 快速创建Web API原型 模拟Web S ...
- Jsp:taglib实现
web应用的结构: web.xml classes diegoyun OutputTag.class WEB-INF src diegoyun OutputTag.java mytag tlds ...
- JavaWeb之分页查询
时间:2016-12-11 01:41 1.分页的优点: 只查询一页,不需要查询所有数据,能够提高效率.2.分页数据 页面的数据都是由Servlet传递的 * 当前页:pageC ...
- 微信小程序学习笔记二 列表渲染 + 条件渲染
1. 列表渲染 1.1 wx:for 在组件上使用wx:for控制属性绑定一个数组, 即可使用数组中各项的数据重复渲染该组件 默认数组的当前项的下标变量名默认为 index, 数组当前项的变量名默认为 ...
- call bind apply的区别
call() 和apply()的第一个参数相同,就是指定的对象.这个对象就是该函数的执行上下文. call()和apply()的区别就在于,两者之间的参数. call()在第一个参数之后的 后续所有参 ...