从一个服务器导入MySQL数据库到另一个服务器

12

我有两台具备root权限的专用服务器,都运行Linux系统。我想将Server1上的数据库导入到Server2上。我已经在Server2上创建了一个空数据库。

我想知道怎样使用Linux命令直接导入数据库?是否有这样的功能?我能使用mysqldump命令吗?我想避免先在Server1上备份数据库,然后将备份文件移动到Server2上,最后再将备份文件导入。

有没有可通过某个命令直接进行导入的方法?

谢谢!

3个回答

14
如果你想避免创建文件、传输文件和加载文件的过程,你可以将mysqldump管道传输到另一台服务器上运行的mysql或通过ssh连接到另一台服务器上的mysql。
使用mysql连接到远程服务器:
mysqldump --all-databases | mysql -h yourserver.com 

使用ssh连接到其他服务器

mysqldump --all-databases | ssh user@yourserver.com mysql 

使用 mysqldump --all-databases 命令传输所有数据库,或者指定数据库名称。请参考 mysqldump 文档 了解更多选项。

您也可以使用 MySQL 的 "Replication" 功能,但这需要更长的设置时间,而且相对棘手。对于单个迁移可能不值得花费那么多时间和麻烦。


谢谢您的回复,但我有些困惑该怎么做。您能否详细说明一下?我的意思是在通过SSH连接后,我是应该在Server1上运行第一个命令,然后在Server2上运行第二个命令吗? - Ali
1
Ali:您可以在Server1上运行这两个命令。第一个命令将打开到Server2的mysql连接(在“-h”后面输入其名称)。第二个命令将打开到Server2本身的ssh连接,并使用来自Server1上mysqldump的输出作为Server2上mysql客户端应用程序的输入来运行mysql。因此,实现数据库的传输。 - Konerak

3

停止第一台服务器上的mysqld,将数据目录(通常为/var/lib/mysql)从服务器1复制到服务器2,然后在第二台服务器上启动mysqld,此时它将与第一台服务器完全相同。

如果您可以在复制数据文件时停止服务器,就不必使用导入/导出工具。特别是如果您可以在复制文件之前压缩文件,这将是最快的方法。


如果您使用相同的版本,这个解决方案是最好的。 - usef_ksa

1
mysqldump –add-drop-table –extended-insert –force –log-error=error.log -uUSER -pPASS OLD_DB_NAME | ssh -C user@newhost “mysql -uUSER -pPASS NEW_DB_NAME”

通过压缩的SSH隧道转储MySQL数据库,并将其用作mysql的输入

源代码


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接