处理Redmine全文搜寻插件MariaDB+Mroonga的更新错误

简而言之

因为听说Redmine 5.0已经发布了,所以我们决定顺便进行一次数据库和其他中间件的更新。然而,我们发现从一个稍旧的mroonga版本无法迁移数据,所以我会记录下具体步骤。

环境

    • windows 10 Pro

 

    • Bitnami redmine 4.2.3-3 => Bitnami redmine 5.0.2-2

 

    • mariadb-10.4.12-with-mroonga-10.01-winx64 => mariadb-10.9.4-with-mroonga-12.10-winx64

 

    full_text_serch 1.0.4 (2020年4月頃) => full_text_serch 1.0.4 (2022年12月頃)

如果您可以在没有使用Bitnami安装程序的情况下进行环境配置,请根据需要进行适当的跳过或替换。

步骤

    1. 将与FTS相关的dump文件解压到测试环境中,并忽略它

 

    1. 将mrn文件复制到测试环境中

 

    创建完整的dump文件,并将其解压到生产环境的新环境中
image.png

错误内容和应对方案

当尝试简单地使用MySQL进行完全转储和展开时会出现以下错误。

C:\Bitnami\redmine-4.2.3-3> mysqldump -uroot -p -P3306 bitnami_redmine --default-character-set=utf8 > backup.mariadb
Enter password: *************

C:\Bitnami\redmine-5.0.2-2> mysql -uroot -p -P3307 bitnami_redmine --default-character-set=utf8 < backup.mariadb
Enter password: *************
ERROR 1026 (HY000) at line 828: <fts_targets.tag_ids>: failed to cast to <Int32>: <"\u0001\u0012\u0001\u0010\u0001\u000E\u0001\f\u0001\u0000\u0000\u0000\u0002\

据说问题是由于full_text_search列从Int32变成Int64的原因,但似乎无法通过redmine的迁移命令来解决这个问题。
通过复制mrn文件,fts相关的数据将会被迁移。

1. 忽略 FTS 相关,将转储文件展开至测试环境。

从生产环境中创建数据文件,其中排除了schema文件和全文搜索插件(fts)表的一部分。
请注意因为旧环境和新环境混杂在一起,所以务必小心。
为了避免错误,我们将测试环境和新环境一起运行在3307端口。

cd C:\Bitnami\redmine-4.2.3-3
mysqldump -uroot -p -P3306 bitnami_redmine --default-character-set=utf8 --no-data > backup_schema.mariadb
mysqldump -uroot -p -P3306 bitnami_redmine --default-character-set=utf8 --no-create-info --ignore-table=bitnami_redmine.fts_targets > backup_ign-fts.mariadb

将此部署到测试环境中。

cd C:\Bitnami\redmine-5.0.2-2
mysql -uroot -p -P3307 bitnami_redmine --default-character-set=utf8 < backup_schema.mariadb
mysql -uroot -p -P3307 bitnami_redmine --default-character-set=utf8 < backup_ign-fts.mariadb

这应该可以顺利展开。

将mrn文件复制到测试环境中。

通过文件复制将C:\Bitnami\redmine-4.2.3-3\mariadb\data目录下的所有.mrn文件一并复制。

image.png

接下来,我们要进行数据库迁移,并确认Redmine能够成功启动。请事先验证插件是否与5.0版本兼容。

cd C:\Bitnami\redmine-5.0.2-2
cd apps/redmine/htdocs
bundle exec rake db:migrate rails_env=production
bundle exec rake redmine:plugins:migrate  rails_env=production
image.png

3. 创建一个完整的转储文件,并将其部署到新的生产环境上。

在成功迁移测试环境的数据库后,我们将创建一个完整的备份文件。

cd C:\Bitnami\redmine-5.0.2-2
mysqldump -uroot -p -P3307 bitnami_redmine --default-character-set=utf8 > backup_full.mariadb
cd C:\Bitnami\redmine-5.0.2-2
mysql -uroot -p -P3307 bitnami_redmine --default-character-set=utf8 < backup_full.mariadb

请重新启动新的生产环境,并确认数据已成功迁移。
使用此步骤可以将全文搜索插件相关的数据迁移。

顺便说一下,使用较新版本的全文搜索插件和mroonga开始的人似乎没有遇到错误。

就是这样了!

广告
将在 10 秒后关闭
bannerAds