使用 php Web 应用程序恢复数据库备份

Posted

技术标签:

【中文标题】使用 php Web 应用程序恢复数据库备份【英文标题】:Restore db backup with php web application 【发布时间】:2019-11-13 17:33:27 【问题描述】:

不幸的是,我几天前丢失了我的数据库,但幸运的是我每天都有备份。

不幸的是,几天前我丢失了我的数据库(我的一些数据不是整个数据库),但幸运的是我每天都有备份。今天我发现我必须恢复 180 个巨大的数据库。 我需要将每 180 个数据库(备份)与当前数据库(我的数据库)进行比较,并插入我的数据库中不再存在的数据。 一开始我想使用一些应用程序,比如(NAVICAT 或 db forge studio),但不可能花费很多时间。 我还想将 SQL 测试相互比较,这也是不可能的。

现在我必须构建一个 Web 应用程序 (PHP) 来恢复数据库,但我不知道如何

如果有人帮助我,我将不胜感激。

谢谢。

【问题讨论】:

关于备份的一件事:如果您不知道如何恢复它们,它们就不是备份。 mysql 通常的最佳实践是进行 mysql-dump,restoring it via command line 不知道 是如何进行备份的,我们无法帮助您恢复它。 您需要恢复多少个数据库。您是否在单独的文件中备份了每个数据库? 当然我可以恢复我的备份我不知道如何恢复 180 个备份,这是我的问题 看看 MySQL Workbench 应用程序:dev.mysql.com/doc/workbench/en/wb-database-synchronization.html 如果您有 180 个备份文件,您可以循环它们吗?另外,您应该不时进行一些完整备份 【参考方案1】:

如果是大文件,请不要打开它。流式传输。

$backup = fopen("yourBackUp.sql", "r");

// ...

fclose($backup);

如果您有很多文件,请使用GLOB

foreach(glob(dirname(__FILE__) . '/*.sql', GLOB_BRACE) as $sql) 
    $backup = fopen($sql, "r");

    // ...

如果您的数据库设置正确,您应该无法插入重复的行。

while (($line = fgets($backup)) !== false)
    try 
        Illuminate\Support\Facades\DB::raw($line);
     catch ( Exception $e )  
        // duplicate row
    

没有看到您所做的事情和您的程序化问题,我们无能为力。

【讨论】:

我刚从我的托管公司收到备份文件,我没有做任何程序化操作 “现在我必须构建一个 Web 应用程序 (php) 来恢复数据库”@John

以上是关于使用 php Web 应用程序恢复数据库备份的主要内容,如果未能解决你的问题,请参考以下文章

使用更改的权限恢复数据库

MYSQL触发器在PHP项目中用来做信息备份恢复和清空

MYSQL触发器在PHP项目中用来做信息备份恢复和清空

使用内部 iPhone Web 服务器进行标准备份/恢复

[转]PLSQL Developer备份恢复oracle数据

如何用Java实现MySQL数据库的备份和恢复