Server1有一个MySQL服务器,Server2有一个文件需要导入表Server1的MySQL服务器。我只能使用SSH访问Server2及其文件。
现在什么是最好的解决方案呢?一种效率低下的方法是将scp
文件放到Server2的硬盘上,然后为该文件执行LOAD DATA INFILE
。但由于文件很大,我想避免这样做。
有没有办法从Server2直接将文件加载到Server1的Mysql中?
答案 0 :(得分:3)
cat file.sql | ssh -C -c blowfish username@myserver mysql -u username -p database_name
在此命令中,-C在传输期间启用压缩,-c blowfish选择使用比默认CPU少的CPU的加密算法。
常识会建议传输压缩文件,以便您可以使用例如MD5验证校验和,然后从压缩文件中运行导入。
希望这有帮助。
答案 1 :(得分:1)
您希望使用ssh隧道远程安全地访问您的mysql服务器。
以下命令将创建端口转发:
$ ssh -f -L <[local address:]port>:<remote address;port> -N <user id>
例如:
$ ssh -F -L 45678:localhost:3307 -N foo@localhost
将使用foo的凭据将localhost上的默认mysql服务器端口转发到端口45678
(这可能对测试有用)。
然后,您可以使用本地程序连接到服务器:
$ mysql -p -u foo -P 45678
在mysql提示符下,可以使用LOAD DATA
语句批量加载数据文件,该语句使用可选关键字LOCAL
来指示文件位于连接的客户端
文档: