1

我想将 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 吗?不这样做会给我同样的错误。你能看出有什么问题吗?

4

3 回答 3

2

mysqldump不是您在mysql会话中执行的 SQL 语句,而是应该从您的 OS 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
于 2010-05-11T02:16:34.577 回答
2

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

所以从 Windows/Unix 命令行:

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

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

于 2010-05-11T02:22:06.053 回答
2

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

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

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

不到一秒:mysqlhotcopy -u user -p pass myDBName cloneDBName

最后一个让我大吃一惊,但您必须在数据库服务器所在的本地登录。我个人认为这比远程转储要快得多,您可以压缩 .sql 文件并手动传输。

于 2010-11-19T15:16:35.250 回答