跳转到主要内容

从 DiscuzX 迁移

Casnode 提供了很多Go 脚本来帮助用户将他们的论坛从 DiscuzX 3.x 迁移到Casnode。 脚本位于:https://github.com/casbin/casnode/tree/master/discuzx

Xorm支持的数据库(例如MySQL) 由 Cansode 用于存储主题和回复等论坛数据。 Casnode 用于存储图像和附件文件的对象存储(作为Casdoor 存储提供商的形式)。

准备工作

您需要在进行迁移之前准备好以下环境:

  1. 云端虚拟机(含4个核心和8GB内存,8个核心和16GB更高), 更快地使用内联网与数据库的连接。 此 VM 用于运行迁移脚本。
  2. 上面虚拟机中带有迁移脚本的 Casnode git 仓库(Casnode 实例可以运行或停止)。
  3. 正在运行的 Casdoor 实例 (在同一个云端虚拟机中更优越,速度更快), 至少有一个对象存储被配置为Casdoor 存储提供商。 这用于将DiscuzX的图像和附件文件上传到对象存储。
  4. 您的 DiscuzX 实例已上线。

配置

首先根据他们的安装指南正确配置Casdoor 和 Casnode ,确保他们在迁移前正常工作。

tip

让casdoor和casnode连接到DB的内联网URL, 让Cassdoor的存储提供商的端点成为云对象存储的内联网URL。 这将会更快一些。

在 Casnode的 app.conf中配置Casdoor 数据库,所以Casnode 可以直接连接到Cassdoor的数据库并创建用户。 这将比调用 Cassdoor's RESTful API 来创建用户更快。

casdoorDbName = casdoor

配置迁移脚本: https://github.com/casbin/casnode/blob/master/discuzx/conf.go。

  1. dbname: 你的 DiscuzX's 数据库名称
  2. discuzxDomain: 你的 DiscuzX's 公共域名, 带有尾随斜杠的
  3. discuzxAttachmentBaseUrl: 你的 DiscuzX的附件基URL, 带有尾随斜杠(你可以从你DiscuzX的附件文件 URL 获取)
  4. 头像PoolBaseUrl: 不要更改
package discuzx

var dbname = "ultrax"
var discuzxDomain = "https://www.discuz.net/"
var discuzxAttachmentBaseUrl = "https://attachment.discuz.net/forum/"
tip

在Casnode中,我们假定你对所有3个DB使用相同的DB用户名和密码:Casnode的DB、Cassdoorer DB和DiscuzX的DB。 所以请确保此数据库用户可以访问所有3个DB。

Migration

您可能会在脚本顶端看到 XXXConcurrency 被定义, 这是要进行迁移的并行线程数。 您可以根据您的环境调整此值。 如果移徙规模太小,移徙将非常缓慢。 如果太高,数据库连接将更有可能报告“连接太多”错误。

var SyncAvatarsConcurus = 20
tip

我们在以下章节中提供的估计时间是在一个与数据库和对象存储有远程互联网连接的机器中测量的。 如果您的虚拟机与数据库和对象存储在同一个子网中,您将会更快一些。

1. 用户迁移

将您的DiscuzX的所有UCenter 成员迁移到Cassdoor的用户:

运行 TestAddUser : https://github.com/casbin/casnode/blob/master/discuzx/user_test.go

这一步大约需要2分钟的时间给60 000名用户。

2. 用户头像迁移

要将您DiscuzX的所有UCenter成员的头像迁移到Cassdoor的资源 (通过Cassdoor的存储提供商,由云对象存储支持):

运行 TestSyncAvatars in: https://github.com/casbin/casnode/blob/master/discuzx/avatar_test.go

这一步骤大约需要10分钟的时间给60 000名用户。

3. 论坛迁移

要将您的所有DiscuzX论坛迁移到Castor的标签页和节点:

运行 TestAddForums : https://github.com/casbin/casnode/blob/master/discuzx/forum_test.go

这个步骤通常在 2 秒内完成。

4. 线程和帖子迁移

要将您所有的 DiscuzX 线程 & 帖子迁移到Cassdoor 的主题 & 答复:

运行 TestAddThreads in: https://github.com/casbin/casnode/blob/master/discuzx/thread_test.go

这一步大约需要7分钟的时间来处理10 000名用户。

最后完成

在迁移过程中,您可以同时保持Casnode 实例运行。 这样您就可以通过在Casnode的公开主页中按 F5 来立即看到效果。

如果您在运行迁移脚本时遇到恐慌,请联系Casnode 作者