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. 需要有多个备份,每同步一次,都备份上次的文件到备 ...
随机推荐
- SpringMVC学习08(拦截器)
8.拦截器 概述 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理.开发者可以自己定义一些拦截器来实现特定的功能. 过滤器与拦截器的区别: ...
- SpringBoot开发十三-检查登录状态
需求介绍-检查登录状态 防止用户知道我们的一些功能的链接,直接就进到了该页面,就像有些功能是管理员访问才能进的,就需要进行登录状态的判断. 我们知道这个功能点很多其他的功能点都需要使用,所以我们需要使 ...
- [WPF] 使用 MVVM Toolkit 构建 MVVM 程序
1. 什么是 MVVM Toolkit 模型-视图-视图模型 (MVVM) 是用于解耦 UI 代码和非 UI 代码的 UI 体系结构设计模式. 借助 MVVM,可以在 XAML 中以声明方式定义 UI ...
- Ceph 管理和使用
ceph 管理 上次介绍了Ceph集群架构并且搭建了ceph集群,本节介绍ceph用户认证流程和挂载.cephFS.ceph RBD以及ceph mds高可用 1. ceph 授权流程和用户权限管理 ...
- 题解—God Knows
考场上以为就是转化成一个无向图然后以为无向图有什么性质可以搞出来来着. 果然应验了那句话,一个思路想太久想不出来一般是假的. 所以这种一看就需要转化的题要多尝试能往哪转化,而不是按住一个思路不动. 只 ...
- sudo apt install net-tools [sudo] zyw 的密码: 正在读取软件包列表... 完成 正在分析软件包的依赖关系树,正在读取状态信息... 完成,没有可用的软件包 net-tools,但是它被其它的软件包引用了。这可能意味着这个缺失的软件包可能已被废弃,或者只能在其他发布源中找到
截图: 先执行: sudo apt-get update 再执行: sudo apt install net-tools 即可安装成功!!
- 阿里云视频点播获取视频点播的video信息
背景 因为在项目中需要使用阿里云的视频点播服务,需要获取视频点播的时长信息. 工具类 生成签名串Signature SignatureUtils.java package com.meeno.wzq. ...
- uwp Button的动态效果
你应该覆盖Button样式 <Page.Resources> <Style TargetType="Button" x:Key="CustomButto ...
- 【java虚拟机】内存分配与回收策略
作者:平凡希 原文地址:https://www.cnblogs.com/xiaoxi/p/6557473.html 前言 对象的内存分配,往大的方向上讲,就是在堆上分配,少数情况下也可能会直接分配在老 ...
- offsetof宏---个人笔记
标准库里面提供的offsetof(t,m)宏,用来计算两个变量在内存中的地址偏移量 #include <stdio.h>//原型: #define offsetof(TYPE, MEMBE ...