备份还原数据库

重构代码,文件名不再支持中文名,中文可能乱码或压缩文件失败
数据库使用 PDO 连接,不再支持 MySql 连接
备份文件名定义 Backup 类中 $this->dir_file_name 属性定义,默认使用 年月日时(2019081719)
备份文件目录 Common 类中 $this->config['back_dir']属性定义
公共配置项 Common 类中 $this->config 备份文件配置项 Backup 类中 $this->back_config
还原文件配置项 Import 类中 $this->import_config

版本
测试PHP版本7.0.12,其他版本未测试; 建议PHP版本5.5以上

项目文件目录

src
|--- backup/ 备份还原文件夹
|--- Backup.php 备份数据库类文件
|--- Common.php 备份、还原、修复表、优化表基类
|--- Db.php 封装 sql 语句
|--- DbData.php 数据库数据操作
|--- demo.php 示例演示文件
|--- Import.php 还原数据库类文件
|--- OptimizeRepair.php 优化修复表类文件

配置项

$config=[
// 数据库配置
'db' => 'web', // 数据库名称 必传
'host'=> '127.0.0.1', // 主机 必传
'dbuser'=>'root', // 数据库用户名称 必传
'dbpw'=> 'root', // 数据库密码 必传
'charset' =>'utf8', // 字符集
'timezone'=>'PRC', // 时区
'prot' => 3306, // mysql 数据库端口号
// 可以添加自定义配置项
// 公共配置项
'file_delimiter' => '_', // 分卷分割符,如果修改其他符号,文件名匹配正则需要修改
'file_extension' => "sql", // 备份文件后缀名
'compress_file_extension' => 'zip',// 压缩文件后缀
'import_lock_file' => 'import_lock_file.txt',// 导入锁文件名
'backup_lock_file' => 'backup_lock_file.txt',//备份锁文件
'back_dir' => './backup/', // 备份文件路径,备份
// 备份配置项
'subsection' => 5, // 分卷大小,单位MB
'min_subsection' => 2, // 最小分卷数
'max_subsection' => 50, // 最大分卷数
'compress' => false, // 是否压缩,默认不压缩
'data_limit' => 10, // 表数据每10 条统计一次是否达到分卷字数,如果为0表数据中不判断
'charset' => 'utf8', // 字符集
// 还原配置项
'del_file' =>false, // 还原完数据库是否删除文件夹以及文件夹中所有文件,默认不删除
'read_size'=>8192 // 一次读取文件字节个数
];

备份数据库

默认分卷大小 5MB
分卷计算默认是10 条数据统计一次分卷大小,如果设置为 0 ,表数据中不统计分卷大小,每卷可能会超出设置的分卷大小
参数说明:

$config 数据库配置信息
$table 要备份的表名,备份整个数据库 null,备份指定前缀的数据表(参数是字符串),备份指定表名的数据表(参数数组形式)

调用示例:

$exec_sql=new Backup($config);
$table=[];
$exec_sql->wirteFile($table);`

还原数据库

默认一次读取文件字节个数 8KB

  • 还原数据文件路径,还原文件名与路径相同
  • 例如还原文件路径是 ./backup/20190811015/
  • 配置文件所在路径 config['back_dir']='./backup/',readFile('20190811015'),参数是需要还原的文件夹名称
  • 还原文件会自动查找下类文件:
  • ./backup/20190811015/20190811015_0.sql
  • ./backup/20190811015/20190811015_1.sql
  • ./backup/20190811015/20190811015.zip
  • 如果既有压缩文件也有sql文件,只会还原20190811015/20190811015_0.sql 20190811015/20190811015_1.sql
  • 压缩文件20190811015/20190811015.zip不会执行还原操作
  • 如果需要还原(导入)额外数据表,在./backup/20190811015/ 文件夹下放 20190811015_1.zip ,20190811015_2.zip压缩包即可,压缩包文件名一致,下标从1 开始;
  • 压缩包里面的文件与文件名一致,例如:20190811015_1.zip 压缩包文件有 20190811015_0.sql 20190811015_1.sql,下标从0 开始

参数说明:

 $config 数据库配置项
$file_dir 还原文件夹名称

调用示例:

$file_dir='2019081719'
$import_sql=new Import($config);
$import_sql->readFile('2019081719');

优化修复表

参数说明:

$config 数据库配置项
$table 要操作的表名,操作整个数据库 null,操作指定前缀的数据表(参数是字符串),操作指定表名的数据表(参数数组形式)

调用示例:

$optimize_repair=new OptimizeRepair($config);
$table=[];
$optimize_repair->optimize($table); // 优化表
$optimize_repair->repair($table); // 修复表

演示示例

项目地址:https://github.com/xue-y/backrestore

packagist:https://packagist.org/packages/xue-y/backrestore

PHP 备份还原 MySql 数据库的更多相关文章

  1. 备份还原mysql数据库

    Windows下cmd命令行中备份还原mysql数据库 先cmd 上cd  到mysql的安装bin目录下,然后再运行下面的命令. 例如:cd C:\Program Files\MySQL\MySQL ...

  2. C#备份还原MySql数据库

    原文:C#备份还原MySql数据库 项目结束,粘点代码出来让Google或Baidu一下,原因是现在还搜不到这么现成的 调用MySql的工具mysqldump来实现. 类Cmd来实现调用cmd命令, ...

  3. xtrabackup备份还原MySQL数据库

    mysqldump 备份鉴于其自身的某些特性(锁表,本质上备份出来insert脚本或者文本,不支持差异备份),不太适合对实时性要求比较高的情况Xtrabackup可以解决mysqldump存在的上述的 ...

  4. Navicat工具备份还原mysql数据库详细图解

    Navicat是个很不错的MYSQL数据库管理工具,我们常用的还web形式的phpmyadmin和font这三种了,都是非常不错的mysql管理工具.因为Navicat工具兼容性比较好,操作也比较简单 ...

  5. 高速备份还原MYSQL数据库

    #安装依赖包yum -y update gccyum -y install gcc+ gcc-c++ #安装cd /usr/local/softwaretar -jxvf p7zip_16.02_sr ...

  6. php程序备份还原mysql数据库

    <?php $link = mysql_connect("localhost", "root",""); mysql_query(&q ...

  7. 备份/还原MySQL数据库----MySQL Workbench

    点击[Data Export],界面右侧将显示数据导出窗口. 2 点击[Refresh]按钮,刷新数据库列表(1),选择要导出的数据表(2),设置导出的目录(3),点击[Start Export]按钮 ...

  8. 备份/还原mysql数据库

    有木有遇到过这种情况?电脑或者服务器需要重装系统?可是你电脑上存着n多个网站的数据库,怎么办?把数据库文件夹拷贝出来,重装系统之后再拷回去?如果你使用了InnoDB引擎,恐怕那样做会出麻烦的,一个一个 ...

  9. Java在线备份和还原MySQL数据库。

    2018年6月29日14:00:48 阅读数:1534 今天整了整整一整天,终于使用Java在线备份和还原MySQL数据库了,哎,备份倒是很快,就是在还原的时候遇到了一个问题,也不报错,结果将sql语 ...

随机推荐

  1. 在zookeeper集群的基础上,搭建solrCloud

    1 将在window中部署的单机版solr上传到node-01中 cd /export/software/ rz 选择资料中的solr.zip进行上传(此zip就是  solr的简单部署:在tomca ...

  2. Log4j配置很详细

    来自: http://www.blogjava.net/zJun/archive/2006/06/28/55511.html Log4J的配置文件(Configuration File)就是用来设置记 ...

  3. 【bzoj3670】[Noi2014]动物园

    3670: [Noi2014]动物园 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 2080  Solved: 1107[Submit][Status ...

  4. Redis02 Redis客户端之Java、连接远程Redis服务器失败

    1 查看支持Java的redis客户端 本博文采用 Jedis 作为redis客户端,采用 commons-pool2 作为连接redis服务器的连接池 2 下载相关依赖与实战 2.1 到 Repos ...

  5. Hyperledger Fabric开发

    打开Hyperledger Fabric在线开发文档:https://hyperledger-fabric.readthedocs.io 建议在Mac或Linux环境下操作,因为文档基本上是按照Mac ...

  6. ubuntu开启ssh

    SSH分客户端openssh-client和openssh-server如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo apt-ge ...

  7. win7,64bit下的OpenGL着色语言(glsl)开发环境配置(原)

    一.环境准备: 系统环境win7,64位,双显卡:集成显卡+gt540m,gt540建议下载最新的驱动,可以支持到opengl4.3标准,一般双显的笔记本,程序默认启用的是集显,我机器的集显驱动有点老 ...

  8. 第07章-Spring MVC 的高级技术

    Spring MVC 的高级技术 1. Spring MVC配置的替代方案 1.1 自定义DispatcherServlet配置 AbstractAnnotationConfigDispatcherS ...

  9. Unity Ioc框架简单例子

    IOC:英文全称:Inversion of Control,中文名称:控制反转,它还有个名字叫依赖注入(Dependency Injection).作用:将各层的对象以松耦合的方式组织在一起,解耦,各 ...

  10. tomcat的内存配置,关于-Xms -Xmx -XX:PermSize -XX:MaxPermSize的理解和区别

    JVM按照其存储数据的内容将所需内存分配为堆区与非堆区两个部分:所谓堆区即为通过new的方式创建的对象(类实例)所占用的内存空间:非堆区即为代码.常量.外部访问(如文件访问流所占资源)等.然而虽然ja ...