バルクインポートスクリプトの使用方法(例:vbulletin.rb)

vBulletin 4 のインポートで、数百万件の投稿があるようです。サーバーが非常に遅いため(私が諦めたとき、ユーザーは 1 分あたり約 50 件のインポートでした)、概算ですが 3 か月かかります。

そこで、バルクインポートスクリプトをもう一度試してみることにしました。通常のインポートスクリプトは本番環境のコンテナで実行しています。標準スクリプトを問題なく実行していた同じコンテナが、Discourse データベースにアクセスできません。しかし、バルクインポーターは、本番環境や通常のインポートスクリプトが使用するものを使用するのではなく、/var/run/postgresql/.s.PGSQL.5432 にアクセスしようとします。そこで、これを web_only.yml に追加しました。

  - volume:
      host: /var/discourse/shared/data/postgres_run
      guest: /var/run/postgresql

これで postgres にアクセスできるようになりました。

しかし、mysql にアクセスできなくなりました。通常のスクリプトやコンテナ内の mysql コマンドラインで機能するのと同じ認証情報が機能しません。アクセス拒否のエラーが発生します。認証情報がすべて期待どおりであることを確認するために puts を追加しましたが、そのとおりでした。しかし、通常のスクリプトからのコード:

    @client =
      Mysql2::Client.new(host: DB_HOST, username: DB_USER, password: DB_PW, database: DB_NAME)

は問題なく動作しますが、こちら:

      @client =
        Mysql2::Client.new(
          host: host,
          username: username,
          password: password,
          database: database,
          reconnect: true,
        )

は動作しません。確認したところ、

    puts "#{username}:#{password}@#{host}/#{database}"
    puts "PASSWORD: #{password.inspect}"

はすべて期待どおりに表示されます。

開発環境で実行する必要がありますか?(なぜですか?)

mysql クライアントと通常のインポートスクリプトでは mysql 接続が機能するのに、バルクスクリプトでは機能しない理由がまったくわかりません。コードは同じように見えます。base.rb スクリプトには mysql に関する情報は何もありません。

あるいは、このマシンは呪われているのかもしれません。

「いいね!」 1