将数据从远程MySQL服务器迁移到Rails应用程序

时间:2016-08-16 14:45:21

标签: mysql ruby-on-rails ruby ssh

这是5年前“How to create a ssh tunnel in ruby and then connect to mysql server on the remote host”的后续问题。

我正在尝试在Ruby中创建SSH隧道,然后连接到远程MySQL数据库。我这样做是因为我需要从我的应用程序的旧版本移动一些旧数据,因此我不需要ActiveRecord,迁移等。

我正在使用NetSSHGateway gemMySQL2 gem

这是我的Ruby代码(在rails控制台中运行):

gateway = Net::SSH::Gateway.new('old_remote_server.com','server_username')
port = gateway.open('127.0.0.1', 3306, 3307)
client = Mysql2::Client.new(
  host: "127.0.0.1", 
  username: 'database_username', 
  password: 'database_password', 
  database: 'database_name', 
  port: port
)

在最后一行之后,控制台挂起大约2分钟,然后给我错误:

Mysql2::Error: Lost connection to MySQL server at 'reading initial communication packet', system error: 0

我能够SSH到远程服务器,并以这种方式执行MySQL命令,所以我不确定这里是什么问题。

1 个答案:

答案 0 :(得分:0)

经过一番思考,出于几个原因,这可能不是迁移数据的最佳方式。

最后,我简单地转储了我的遗留MySQL数据库,将其移至我的新应用环境,并使用MySQL2 gem构建rake任务来翻译并将数据移动到我的新应用中。