我有两个具有root访问权限的专用服务器。两者都在运行Linux。我想将数据库从Server1导入Server2。我已经在Server2上创建了一个空数据库。 我想知道Linux命令,我可以直接导入数据库吗?有这样的功能吗?我可以使用mysqldump吗?我想避免首先在server1上进行数据库备份,然后将该文件移动到server2,然后导入该文件。 可以使用某个命令直接导入吗?
由于
答案 0 :(得分:13)
如果你想避免创建文件,传输文件和加载它,你可以将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 documentation。
你也可以使用MySQL“复制”功能,虽然这需要花费更多的时间来设置,而且相当棘手。对于一次迁移,可能不值得花时间和麻烦。
答案 1 :(得分:2)
在第一台服务器上停止mysqld,将数据目录(通常是/ var / lib / mysql)从服务器1复制到服务器2,在第二台服务器上启动mysqld,它现在与第一台服务器相同。
如果可以在复制数据文件时停止服务器,则不必使用导入/导出工具。特别是如果您可以在复制之前压缩文件,这将是最快的方式。
答案 2 :(得分: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的输入