我在服务器上有一个相当小的MySQL数据库(Textpattern安装),我没有SSH访问权限(我只有FTP访问权限)。我需要定期将实时数据库下载到我的本地开发服务器;即,我想运行一个脚本和/或运行一个cron作业。有什么好方法可以做到这一点?
需要注意的一些要点:
更新: 我接受了BlaM的回答;它非常简单。简直不敢相信我没想到。但是有一个问题:我想自动化该过程,但建议的解决方案会提示用户输入密码。以下是传递密码的mysqldump命令的略微修改版本:
mysqldump -u USER --password=MYPASSWORD DATABASE_TO_DUMP -h HOST > backup.sql
答案 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可能是一种选择。您可以导出和导入数据库,但您必须手动执行此操作。如果它是一个小型数据库(它听起来像是这样),并且您不需要经常复制实时数据,它可能适合您所需的。