如何使用批量导入脚本(例如 vbulletin.rb)

我正在进行一次看起来像 vbulletin 4 的导入,其中包含数百万条帖子。我正在使用的服务器非常慢(当我放弃时,用户导入速度约为每分钟 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 个赞