使用mysqldump.exe将mysql数据库从localhost复制到远程服务器

时间:2010-05-11 02:11:28

标签: mysql mysqldump database-backups

我想将mysql数据库从本地计算机复制到远程服务器。

我正在尝试使用mysql dump命令。互联网上的所有例子都建议做类似

的事情

初始mysql>只是我登录后得到的提示。

mysql> mysqldump -u user -p pass myDBName | NewDBName.out;

但是当我这样做时,我得到You have an error in your SQL syntax; check the manual that corresponds ... to use near 'mysqldump -u user -p pass myDBName | NewDBName.out'

由于我已登录,我需要使用-u和-p吗?不这样做会给我同样的错误。你能看出出了什么问题吗?

3 个答案:

答案 0 :(得分:2)

mysqldump不是您在mysql会话中执行的SQL语句,而是应该从您的操作系统shell启动的不同二进制文件。

有几种方法可以使用它。其中之一是将mysqldump的输出传递给另一个MySQL实例:

echo CREATE DATABASE remote_db | mysql -h remote_host -u remote_user -premote_password
mysqldump -h source_host -u root -ppassword source_db | mysql -h remote_host -u remote_user -premote_password -D remote_db

答案 1 :(得分:2)

除了Alexandre所说的,你可能不想将(|)输出管道输出到NewDBName.out,而是将其重定向到那里(>)。

所以从Windows / Unix命令行:

mysqldump -u user -p pass myDBName > NewDBName.out

请注意,如果某些列中有大型二进制字段(例如BLOBS),则可能需要设置一个附加选项(我认为它是--hex-blob,但也可能有另一个选项)。如果这适用于您,请添加评论,我将研究设置。

答案 2 :(得分:2)

我最近不得不丢弃大量数据。我在200Mb数据库中发现的,在许多表中有10,000多条记录,如下所示。我用linux'time'命令来获取实际时间。

12分钟使用: mysqldump -u user -p pass myDBName> DB-backups.sql

克隆数据库7分钟: mysqldump -u user -p传递myDBName | mysql -u user -p pass cloneDBName

不到一秒钟: mysqlhotcopy -u user -p传递myDBName cloneDBName

最后一个引起了我的注意,但您必须在本地登录数据库服务器所在的位置。我个人认为这比远程转储快得多,你可以压缩.sql文件并手动传输。