转换MediaWiki的MySQL数据库格式MyISAM-InnoDB及字符集latin1-utf8

来自Jamesqi
跳转至: 导航搜索

--James Qi 2009年6月17日 (三) 13:51 (CST)

  2006年初最早安装MediaWiki的时候,我们使用的是老版本MySQL,设置的时候是选择的MyISAM格式、Latin1字符集。

  但在2007年后的设置中都是改成了新版本的MySQL,然后使用了InnoDB格式、Utf8字符集。

  站点之间基本是独立的,虽然有用Interwiki链接,但数据库格式、字符集没有什么影响。

  不过还是存在一个问题,用户数据库采取共享以后,在两种采用不同数据库格式、字符集的网站中查看用户列表,就会发现中文有了乱码。

  这个问题一直存在,让同事反复试验进行数据库转换都没有成功。

  今天趁着MediaWiki升级的过程,我拿了一个很少数据的站点Wiki.18dao.com:来做实验,可以成功转换,记录如下:

  • 新建一个站点,创建一个新的数据库wiki18daocom-new,使用新的InnoDB格式、Uft8字符集;
  • 在新站点的数据库中手工加入Interwiki数据,注意1.15.0中URL需要用文件上传而不是以前的文本;
  • 从已经升级到1.15.0的原来站点的maintenance下进行用php dumpBackup.php --full及php dumpBackup.php --logs导出所有版本数据及每页日志;
  • 在新站点maintenance下用php importDump.php导入上面的两个xml文件;
  • 运行rebuildrecentchanges.php,默认生成最近一周的“最近更改”数据;
  • 复制老站点images目录下的文件到新站点对应目录,在新站点maintenance下用php rebuildImages.php --missing扫描恢复上传的文件;
    • 后来看到dumpBackup.php还有一个--uploads参数,还没有测试,应该可以更好解决文件恢复的问题
  • 仔细全面检查新网站,做必要的调整(例如上传文件的复制等)。

  这个办法有些麻烦,但好歹算是可以基本完成这个转换。

  还有几个网站:en.18dao.net:027:cn.18dao.net:等也是用的最早的数据库格式和字符集,以后有时间、有必要的时候再去转换。

后记

--James Qi 2009年11月8日 (日) 22:16 (CST)

  6月份将Wiki.18dao.com:转换不久把027:也转了,但因为MediaWiki 1.15.0本身的一些问题不了解以及对应繁体克隆网站总是有些问题,所以一直没有继续把剩下的两个转换。不过这个工作迟早总是要做的,不可能一直停留在1.15.0版本以及延续以前的格式和字符集,2009年11月准备在MediaWiki年底推出1.16版本以前解决所有剩下的问题。这两天周末正在进行转换,先是把cn.18dao.net:tw.18dao.net:进行升级到1.15.0,然后把以前升级过的en.18dao.net:和这次刚升级的cn.18dao.net:进行格式和字符集的转换,tw.18dao.net:的格式和字符集是不需要转换的。

  在转换中使用了--uploads参数,但还是需要使用php rebuildImages.php --missing来恢复文件。具体是使用下面的两个命令生成两个备份文件:

/usr/local/php/bin/php dumpBackup.php --full --uploads --output=file:full_uploads.xml
/usr/local/php/bin/php dumpBackup.php --logs --output=file:logs.xml

  然后用两个命令导入:

/usr/local/php/binp importDump full_uploads.xml
/usr/local/php/binp importDump logs.xml

  还要使用的命令:

/usr/local/php rebuildImages.php --missing #恢复文件
/usr/local/php runJobs.php #更新链接、重新生成文件缓存
/usr/local/php rebuildrecentchanges.php #重建最近更改

  对于导出、导入中间报错的一些地方还要仔细检查、处理。

标签:MediaWikiMySQLMyISAMInnoDBLatin1Utf8
相关内容:
  1. 2010-11-10 22:20:28 MediaWiki-1.15升级到1.16.0步骤
  2. 2010-11-04 22:52:58 开启MediaWiki的搜索建议(Search Suggest)功能
  3. 2010-11-03 11:26:02 MediaWiki-1.15.0升级到1.16.0中出现的问题
  4. 2010-11-02 23:52:05 MediaWiki-1.15准备升级到1.16
  5. 2010-10-22 22:29:00 想写一本关于MediaWiki的书,有人需要吗?
  6. 2010-09-20 11:33:29 直接操作MediaWiki的MySQL数据库
  7. 2010-09-04 00:20:09 修改模板对付MediaWiki及扩展程序的Bug
  8. 2010-08-31 00:47:49 分割大容量MediaWiki数据库
  9. 2010-07-08 23:08:13 用HTML和站间链接减小MediaWiki数据库记录
  10. 2010-06-12 12:27:01 将数据导入MediaWiki进行到底
  11. 2010-06-01 12:00:27 终于让.idb文件中的MySQL数据重见天日
  12. 2010-05-26 13:35:48 从InnoDB文件挽救MySQL数据
  13. 2010-05-22 12:21:42 数据库出了大问题:无法启动、数据丢失、备份失效
  14. 2010-05-20 22:01:46 导入大量名录数据到MediaWiki网站的例子
  15. 2010-05-05 15:06:09 不懂PHP编程也可以修改MediaWiki程序

关于“转换MediaWiki的MySQL数据库格式MyISAM-InnoDB及字符集latin1-utf8”的留言:

目前暂无留言

新增相关留言