使用需要MySQL的导入脚本

您需要修改脚本来导入数据。bbPress 脚本仅导入特定类型的帖子(我可能记不清正确的 WordPress 术语了)。您想导入哪种类型的 WordPress 帖子?哪些是主题,哪些是普通帖子?是否有类似分类的机制?您只需通过修改脚本来回答这些问题。具体如何操作已超出了您在此处可能获得的帮助范围。

编辑:我已多次退休并接近成功……现在:

在第 2 步,执行 mysql -u$MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE < /backup/yourbackup.sql 时,我收到错误 bash: /backups/yourstratapropertywordpress.sql: 没有那个文件或目录,但该文件确实存在(至少在 /var/backups 中存在)。

如果我直接跳到下一步并尝试执行 su discourse -c "bundle exec ruby script/import_scripts/bbpress.rb",会得到以下结果:

正在加载现有用户...
正在加载现有分类...
正在加载现有帖子...
正在加载现有主题...
Traceback (most recent call last):
        5: from script/import_scripts/bbpress.rb:512:in `<main>'
        4: from script/import_scripts/bbpress.rb:512:in `new'
        3: from script/import_scripts/bbpress.rb:21:in `initialize'
        2: from script/import_scripts/bbpress.rb:21:in `new'
        1: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `initialize'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `connect': 无法通过套接字 '/var/run/mysqld/mysqld.sock' 连接到本地 MySQL 服务器 (2) (Mysql2::Error::ConnectionError)

谢谢!我会查看数据库和脚本,看看能否实现我的目标。

1 个赞

祝你好运!在我“学会” Ruby 之前,我至少写过几个导入器。如果你对 SQL 的理解足以应付 20 世纪 80 年代中期本科课程的水平,那你大概率能搞定。如果你编写查询时,让结果数据中的字段名与脚本期望的保持一致,那么你可能只需要修改 SQL 部分。

@pfaffman 我真的非常需要您的帮助,我现在完全卡住了。

我现在手头非常忙,这个问题很可能无法在此解决。请发邮件至 Jay@literatecomputing.com 并附上预算,我会尽力提供解决方案。

这似乎表明您的 MySQL 服务器未运行,或未正确安装。

1 个赞

成功!

帖子类型应为 post,并需要替换原有的 topic 类型。标签和帖子的分类均未迁移过来。所有帖子均以匿名用户身份导入,但这确实是一个不错的开端!

1 个赞

很高兴看到您取得了进展!

感谢您提供的清晰指南,它帮助我理解了导入过程,而不是盲目地复制粘贴命令。

我仍在尝试找出导入一个非常大的 Drupal 论坛的最快方法,并且我仍然觉得在这种情况下可以进行优化,以便在最终生产论坛迁移运行时缩短一些停机时间。我可能算是个老手了,但我还没有完全接受 Docker/容器化的模式。我肯定在哪里读到过,曾经有一个 Docker 错误导致容器化 MySQL 实例的性能大大降低。在 Docker 论坛上,我看到了这份报告,但不确定它是否仍然相关。而且,由于我的主机运行的是 Debian 而不是 Ubuntu,所以它可能与我的情况无关。

另一种选择可能是将 MySQL 或 MariaDB 安装在容器外的宿主操作系统上?

而且,不深入细节的话,通过MySQLTuner的一些建议来优化 my.cnf 怎么样?适用于所有实例的标准 Docker 配置不可能在其缓冲池实例和键缓冲大小方面做到最优,而这些在专用的生产数据库上会产生巨大影响。

您好。感谢您的解决方案。我遇到了您在文章中提到的 gem 问题,因此我非常期待让它正常工作。此方法是否适用于将 WordPress bbpress 论坛(托管在 DreamPress 上)迁移到 Discourse 实例(托管在 Digital Ocean 上)?

我正在使用 Digital Ocean 的基于 Ubuntu 的 droplet 和 Web 终端/控制台。我的第一个问题是,当我运行 /var/discourse/launcher stop app /var/discourse/launcher rebuild import 时,会发生什么?Web 终端/控制台应该关闭吗?我尝试过这样做,但 import.yml 文件似乎没有保存。它会恢复到其默认状态。

另外,有人能解释一下我的设置是否需要运行可选的第二步吗?

提前非常感谢。

附注:我愿意付费请人来做,但我的预算仅限于 200 美元。

也许你想把它发到#marketplace。

1 个赞