如何在没有SSH的情况下将实时MySQL数据库按需下载到本地测试数据库?

时间:2008-09-02 13:42:17

标签: php mysql ruby database mysql-management

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

需要注意的一些要点:

  • Live服务器正在运行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

6 个答案:

答案 0 :(得分: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机器上运行该文件以插入数据。

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

答案 1 :(得分: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 文件中运行此操作。您可以使用计划任务。

答案 2 :(得分:1)

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

这是复制的good article

答案 3 :(得分:0)

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

获得脚本后,您可以将其设置为预定作业,以便根据需要随时运行。

答案 4 :(得分:0)

@Mark Biek

  

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

感谢您的建议,但我无法在服务器上启用复制。它是一个共享服务器,几乎没有机动空间。我已经更新了这个问题。

答案 5 :(得分:0)

根据您需要复制实时数据的频率以及执行速度的速度,在两台计算机上安装phpMyAdmin可能是一种选择。您可以导出和导入数据库,但您必须手动执行此操作。如果它是一个小型数据库(它听起来像是这样),并且您不需要经常复制实时数据,它可能适合您所需的。