在本教程中,我们将学习如何使用官方 MyBB 导入脚本 将 MyBB 论坛迁移到
平台。
可迁移的内容
- 分类
- 根分类 => 根分类
- 子分类 => 子分类
- 根论坛 => 子分类
- 子论坛 => 子分类
- 主题和回复 => 主题和帖子
- 用户
- 用户名
- 邮箱
- 权限状态
- 加入状态
- 重定向
我们的计划非常简单:
- 搭建本地开发环境。
- 导出生产数据库。
- 将生产数据库导入 Discourse。
- 运行 MyBB 导入脚本。
让我们开始吧 ![]()
搭建本地开发环境
首先,您需要按照以下指南之一安装 Discourse 平台本身。如果遇到问题,请参阅 本指南。
安装 MySQL 数据库服务器;
MacOS:
$ brew install mysql@5.7
$ echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile
检查服务状态:
$ brew services list
您应该看到类似以下内容:
mysql@5.7 started
如果没有,请运行以下命令并重试:
$ brew services start mysql@5.7
Ubuntu 18.04:
$ sudo apt update
$ sudo apt install mysql-server -y
完成 MySQL 安装后,检查其状态:
$ systemctl status mysql.service
如果未运行,请运行以下命令:
$ sudo systemctl start mysql
对于 Windows,您可以遵循官方 安装指南。
我们将此环境称为:Discourse 服务器。
导出生产数据库
通过运行以下命令导出/备份生产数据库(来自 MyBB 生产服务器):
$ mysqldump -u USER_NAME -p DATABASE_NAME > mybb_dump.sql
- 将此数据库转储文件复制到 Discourse 服务器。
您可以使用
scp或rsync来复制数据库。
将生产数据库导入 Discourse
在 Discourse 服务器 上,创建一个数据库:
$ mysql -u root
如果您的数据库用户有密码,则应使用:
mysql -u root -p,然后输入您的密码。
mysql> CREATE DATABASE mybb;
通过运行以下命令确保数据库已成功创建:
mysql> SHOW DATABASES;
您应该看到类似以下内容:
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| mybb |
| sys |
+--------------------+
此时 mybb 数据库是空的。我们的下一步是将生产数据库导入其中。
$ mysql -u root mybb < mybb_dump.sql
稍后我们将需要表前缀。因此,趁现在在这里,让我们获取它。
$ mysql -u root
mysql> USE mybb;
mysql> SHOW TABLES;
您将看到类似以下内容:
+--------------------------+
| Tables_in_mybb |
+--------------------------+
| mybb_adminlog |
| mybb_adminoptions |
| mybb_adminsessions |
| mybb_adminviews |
| mybb_announcements |
| mybb_attachments |
| mybb_attachtypes |
| ...其余表...|
+--------------------------+
如输出所示,我们的表前缀是 mybb_。
运行 MyBB 导入脚本
- 首先安装导入器的依赖项。在 Discourse 服务器 上:
$ cd ~/discourse
$ echo "gem 'mysql2', require: false" >> Gemfile
$ bundle install
接下来,您应该配置脚本以使其正常运行。将以下内容复制并粘贴到您的 shell 中(如有需要请更改值):
export DB_HOST="localhost"
export DB_NAME="mybb"
export DB_PW=""
export DB_USER="root"
export TABLE_PREFIX="mybb_"
您还有另一种配置脚本的方法。使用您选择的任何编辑器打开 script/import_scripts/mybb.rb,并更改双引号内的值以适应您的需求:
DB_HOST ||= ENV['DB_HOST'] || "localhost"
DB_NAME ||= ENV['DB_NAME'] || "mybb"
DB_PW ||= ENV['DB_PW'] || ""
DB_USER ||= ENV['DB_USER'] || "root"
TABLE_PREFIX ||= ENV['TABLE_PREFIX'] || "mybb_"
使用干净的 Discourse 实例运行导入器:
$ bundle exec rails db:drop
$ bundle exec rails db:create
$ bundle exec rails db:migrate
$ bundle exec ruby script/import_scripts/mybb.rb
导入器将连接到 MySQL 服务器,并将您的 MyBB 数据库迁移到 Discourse 数据库。
导入器完成后,通过运行以下命令启动 Discourse 实例:
$ bundle exec rails server
接下来,启动 Sidekiq(后台作业处理器)以处理迁移的数据:
$ bundle exec sidekiq
您可以在
http://localhost:3000/sidekiq/queues监控 Sidekiq 进度。
按照本 教程 设置您的 Discourse 生产服务器。
按照本 教程 对 Discourse 平台(本地 Discourse 服务器)进行备份,并将其上传到您的 Discourse 生产服务器。
![]()
如果您对该过程有任何疑问,我很乐意提供帮助。
祝迁移顺利 ![]()


