通过HTTP复制MySQL数据库

时间:2010-12-10 22:25:59

标签: php mysql dump

我有2台服务器。在#1远程数据库访问被禁用。数据库是巨大的(~1GB)所以没有可能用phpMyAdmin转储它,因为它崩溃并挂起连接。我没有SSH访问权限。我需要将整个数据库复制到#2(我几乎可以设置所有内容)。

我的想法是在#1上使用某种HTTP访问层。

例如简单的PHP脚本,它接受查询作为_GET / _POST参数,并将结果作为HTTP正文返回。

在#2(或我的桌面)上,我可以设置某种服务器应用程序,它会按顺序询问每个表中的每一行,甚至是当时的一行。

我的问题是:你知道一些现成的应用程序吗?

BTW:#1只是PHP,#2可以是PHP,Python等

我无法在#1上运行任何内容,所有fopen,curl,套接字,系统等都被禁用。我只能从PHP访问数据库,不允许远程连接

7 个答案:

答案 0 :(得分:1)

您可以从服务器#1上的PHP连接到远程MySQL服务器吗?

我知道你说“不允许远程连接”,但你没有特别提到这种情况。

如果可以,您可以从旧数据库中选择SELECT,直接INSERT到在服务器#2上运行的MySQL。

答案 1 :(得分:0)

目前尚不清楚服务器#1上的可用内容。

假设你只能运行php,你仍然可以

  • 运行scp from php并连接到服务器#2,发送类似的文件

  • 也许你可以使用php在服务器#1上运行本地命令?在这种情况下,从服务器#1运行rsync through php之类的东西可以正常工作

答案 2 :(得分:0)

听起来我应该联系主持人并询问您是否可以以某种方式获取数据。您应该流式传输整个数据库并将其重新插入新计算机,这有点太愚蠢了。它将在你从中获取数据的php服务器上占用大量资源。 (如果托管服务提供商已经具有限制性,那么您可能会限制在一段时间内允许的SQL操作数量)

虽然如果您被迫这样做,您可以从表中执行select *,并且每行将其转换为您在该行上回显的json对象。这可以存储到最后的磁盘上,然后用它来插入它。

答案 3 :(得分:0)

我怀疑你可以使用FTP访问两台服务器。

除此之外,你如何获得你的php文件。

如果你可以使用FTP访问它,也许你可以复制mysql数据库。

并非在所有情况下都可以查看:http://dev.mysql.com/doc/refman/5.0/en/copying-databases.html了解更多信息。

或者您可以尝试此链接上的选项:

http://www.php-mysql-tutorial.com/wikis/mysql-tutorials/using-php-to-backup-mysql-databases.aspx

现在不要设置你的php如何,因为我可以想象它可能需要一些时间来处理整个数据库。

最长执行时间设置等。

答案 4 :(得分:0)

很久以前我使用了Sypex Dumper这个,只是在晚上打开浏览器,第二天早上在ftp上可以使用db dump

答案 5 :(得分:0)

如果至少有一台主机可以通过TCP远程访问,则有复制选项。以这种方式同步原始数据库会很慢,但它有利于保留所有表格元数据,否则您将通过执行选择/插入序列而丢失这些元数据。更多详情:http://dev.mysql.com/doc/refman/5.0/en/replication.html

答案 6 :(得分:0)

我不确定你是如何设法进入这种情况的。托管服务提供商显然是不合理的,您应该联系他们。你也应该尽快停止使用他们的服务(虽然这听起来像你正在尝试做的事情)。

不幸的是,PHPMyAdmin不适用于对数据至关重要的数据库操作,因为它有太多的错误和限制 - 你当然不应该依赖它来转储或恢复。

mysqldump是RELIABLY转储数据库并将其恢复的唯一方法,并且很有可能使数据完整和正确。如果你不能(本地或远程)运行它,我担心所有的赌注都会关闭。