使用 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 应用程序恢复数据库备份的主要内容,如果未能解决你的问题,请参考以下文章