7

我在没有 SSH 访问权限(我只有 FTP 访问权限)的服务器上有一个相当小的 MySQL 数据库(一个 Textpattern 安装)。我需要定期按需将实时数据库下载到本地开发服务器;即,我想运行一个脚本和/或运行一个 cron 作业。有什么好的方法可以做到这一点?

需要注意的几点:

  • 实时服务器运行 Linux、Apache 2.2、PHP 5.2 和 MySQL 4.1
  • 本地服务器运行相同(因此可以选择使用 PHP),但操作系统是 Windows
  • 本地服务器上有 Ruby(因此使用 Ruby 是一个有效的选项)
  • 实时 MySQL 数据库可以接受来自不同 IP 的远程连接
  • 我无法在远程服务器上启用复制

更新:我接受了 BlaM 的回答;它非常简单。不敢相信我没想到。但是有一个问题:我想自动化这个过程,但建议的解决方案会提示用户输入密码。这是一个稍微修改过的 mysqldump 命令的版本,它传入了密码:

mysqldump -u USER --password=MYPASSWORD DATABASE_TO_DUMP -h HOST > backup.sql

4

6 回答 6

5

由于您可以远程访问您的数据库,您可以使用 Windows 机器上的 mysqldump 来获取远程数据库。从命令行:

cd "into mysql directory"
mysqldump -u USERNAME -p -h YOUR_HOST_IP DATABASE_TO_MIRROR >c:\backup\database.sql

该程序将询问您数据库密码,然后生成一个文件 c:\backup\database.sql,您可以在 Windows 机器上运行该文件以插入数据。

使用一个应该相当快的小型数据库。

于 2008-09-02T14:33:01.977 回答
2

这是我使用的。这会将数据库从实时服务器转储,同时将其上传到本地服务器。 mysqldump -hlive_server_addresss -ulive_server_user -plive_server_password --opt --compress live_server_db | mysql -ulocal_server_user -plocal_server_password local_server_db

您可以从bat文件中运行它。您可以使用计划任务。

于 2009-05-20T06:36:26.517 回答
1

MySQL复制是一种选择吗?如果您不希望它不断复制,您甚至可以打开和关闭它。

这是一篇关于复制的好文章。

于 2008-09-02T13:46:02.557 回答
0

我会创建一个(Ruby)脚本来SELECT * FROM ...对服务器上的所有数据库执行 a ,然后在本地副本上执行DROP DATABASE ...一系列 new s。INSERT您可以进行SHOW DATABASES查询以动态列出数据库。现在,这假设表结构没有改变,但如果您想支持表更改,您也可以为每个数据库中的每个表添加SHOW CREATE TABLE ...查询和相应的语句。CREATE TABLE要获取数据库中所有表的列表,请执行SHOW TABLES查询。

获得脚本后,您可以将其设置为计划作业,以便根据需要经常运行。

于 2008-09-02T13:51:29.673 回答
0

@Mark Biek

MySQL复制是一种选择吗?如果您不希望它不断复制,您甚至可以打开和关闭它。

感谢您的建议,但我无法在服务器上启用复制。它是一个共享服务器,操作空间很小。我已经更新了问题以说明这一点。

于 2008-09-02T14:03:46.040 回答
0

根据您需要复制实时数据的频率以及复制的速度,在两台机器上安装phpMyAdmin可能是一种选择。您可以导出和导入数据库,但您必须手动完成。如果它是一个小型数据库(听起来确实如此),并且您不需要经常复制实时数据,那么它可能会很好地满足您的需求。

于 2008-09-02T14:26:46.547 回答