2016-08-16 25 views
0

これは5年前の "How to create a ssh tunnel in ruby and then connect to mysql server on the remote host"へのフォローアップの質問です。リモートMySQLサーバからRails Appへのデータの移動

RubyでSSHトンネルを作成してから、リモートのMySQLデータベースに接続しようとしています。私はアプリの古いバージョンからいくつかの古いデータを移動する必要があるので、私はこれをやっているので、私はActiveRecord、マイグレーションなどは必要ありません。

私はNetSSHGateway gemMySQL2 gemを使用しています。

ここに私のRubyコード(レールコンソールで実行)です:最後の行の後

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コマンドを実行できるので、ここで何が問題になっているのか分かりません。

+0

Sequel ORMを調べることをおすすめします。有用なORMであるだけでなく、あるDBMから別のDBMにデータを簡単に移行する機能もあります。 http://sequel.jeremyevans.net/rdoc/files/doc/bin_sequel_rdoc.html#label-Copy+Databasesを参照してください。 –

答えて

0

これは、いくつかの理由から、データを移行するための最良の方法ではない可能性があります。

最後に、私は古いMySQLデータベースをダンプして新しいアプリケーションの環境に移動し、MySQL2 gemを使ってデータを翻訳して新しいアプリケーションに移動するためのレーキタスクを作成しました。

関連する問題