2010-12-10 186 views
12

我有两台具有root访问权限的专用服务器。两者都在运行Linux。我想从Server1导入数据库到Server2。我已经在Server2上创建了一个空的数据库。 我想知道我可以直接导入数据库的Linux命令?有这样的特点吗?我可以使用mysqldump吗?我想避免先在server1上进行数据库备份,然后将该文件移动到server2,然后导入该文件。 可以使用某些命令直接导入吗?将MySQL数据库从一台服务器导入到另一台服务器

感谢

+0

+1我正在寻找相同的 – 2010-12-10 08:15:04

回答

13

如果你想避免创建一个文件,将其转移,并加载它,你可以管到的mysqldump要么一个MySQL的其他服务器上运行,或在其他服务器上的SSH的MySQL。

使用MySQL来连接到远程框:

mysqldump --all-databases | mysql -h yourserver.com 

使用SSH连接到其它服务器

mysqldump --all-databases | ssh [email protected] mysql 

使用mysqldump - 全数据库,将他们转移所有,或只指定数据库名称。请参阅mysqldump documentation了解更多选项。

你也可以使用MySQL的“复制”功能,虽然这需要更多的时间来设置,而且相当棘手。可能不值得所有的时间和麻烦只为一个单一的迁移。

+0

感谢您的答复,但我有点困惑,该怎么做。你能否详细说明一下?我的意思是,在通过SSH连接后,我应该在Server1上运行第一个命令,在Server2上运行第二个命令? – Ali 2010-12-10 09:46:19

+1

阿里:你可以在Server1上运行这两个命令。第一个命令将打开一个到服务器2的mysqlconnection(在`-h`之后放置它的名字)。第二个命令将打开一个ssh连接到Server2本身,然后运行`mysql`客户端应用程序,使用Server1上`mysqldump`的输出作为Server2上`mysql`的输入。因此,传输数据库。 – Konerak 2010-12-10 15:11:16

1
mysqldump –add-drop-table –extended-insert –force –log-error=error.log -uUSER -pPASS OLD_DB_NAME | ssh -C [email protected] “mysql -uUSER -pPASS NEW_DB_NAME” 

在压缩SSH隧道转储MySQL数据库,并使用它作为输入到MySQL

source

2
在第一服务器上

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

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

相关问题