当前位置:首页 > 问答 > 正文

数据库管理 数据迁移:mediawiki数据库迁移操作指南,如何高效完成mediawiki数据转移

📚 MediaWiki数据库迁移指南:手把手教你安全搬家

场景引入
凌晨3点,你盯着屏幕上的报错提示——Error establishing database connection,冷汗直冒,原来公司的MediaWiki服务器即将到期,而500GB的百科数据还卡在老数据库里…别慌!这份保姆级迁移指南,让你像搬家师傅一样稳当转移数据,还能顺便喝杯咖啡☕。


🔍 迁移前准备:检查你的"搬家清单"

  1. 原数据库体检 �‍⚕️

    -- 查看当前数据库大小(MySQL示例)
    SELECT table_schema "WikiDB", 
    ROUND(SUM(data_length)/1024/1024, 2) "Size(MB)" 
    FROM information_schema.TABLES 
    WHERE table_schema = "你的数据库名";

    📌 重点检查revision(历史版本)和text)表,通常占90%空间

  2. 工具三件套 🧰

    • mysqldump(MySQL官方备份工具)
    • MediaWiki维护脚本maintenance/目录下)
    • Screen/Tmux(防止SSH断连导致迁移中断)
  3. 版本兼容确认 🔄
    | 原版本 | 目标版本 | 注意事项 |
    |--------|----------|----------|
    | 1.35 | ≥1.39 | 需运行update.php升级脚本 |
    | ≤1.34 | 1.38+ | 建议分段迁移(先升到1.35过渡) |

    数据库管理 数据迁移:mediawiki数据库迁移操作指南,如何高效完成mediawiki数据转移


🚀 四步迁移法(以MySQL→MySQL为例)

步骤1:老库"打包" 📦

# 使用screen保持会话(防止断连)
screen -S wiki_backup
# 导出结构和数据(排除缓存表提升效率)
mysqldump -u root -p --skip-add-drop-table \
--ignore-table=wiki_db.objectcache \
--ignore-table=wiki_db.querycache \
wiki_db > wiki_full_$(date +%F).sql
# 按Ctrl+A+D退出screen会话

💡 小技巧:超过50GB的库建议添加--single-transaction参数避免锁表

步骤2:新库"装修" 🏗️

-- 在新服务器创建数据库(字符集必须一致!)
CREATE DATABASE new_wiki_db 
DEFAULT CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;
-- 创建专用账号并授权
GRANT ALL PRIVILEGES ON new_wiki_db.* 
TO 'wiki_admin'@'localhost' 
IDENTIFIED BY '强密码123!';

步骤3:数据"搬运" 🚛

# 使用pv监控导入进度(需提前安装pv)
pv wiki_full_2025-08-15.sql | mysql -u root -p new_wiki_db
# 或者分卷导入(适合超大数据库)
split -b 2G wiki_full.sql wiki_part_
for file in wiki_part_*; do
  echo "正在导入 $file ..."
  mysql -u root -p new_wiki_db < $file
done

步骤4:配置"交接" 🔧

修改LocalSettings.php

$wgDBserver = "新数据库IP";
$wgDBname = "new_wiki_db";
$wgDBuser = "wiki_admin";
$wgDBpassword = "强密码123!";

然后运行升级脚本:

php maintenance/update.php --quick

🛠️ 常见翻车现场救援

问题1:导入时报错ERROR 1071 (42000)

数据库管理 数据迁移:mediawiki数据库迁移操作指南,如何高效完成mediawiki数据转移

  • 原因:新MySQL版本对索引长度限制更严格
  • 解决:修改sql文件中的索引定义,或临时调低innodb_large_prefix参数

问题2:图片/文件丢失

  • 检查LocalSettings.php中的$wgUploadDirectory路径
  • 用rsync同步附件目录:
    rsync -avz /var/www/wiki/images/* 新服务器:/path/to/new_wiki/images/

问题3:用户无法登录

  • 运行php maintenance/changePassword.php --user=管理员 --password=新密码
  • 清除CDN/浏览器缓存

🎯 高阶玩家技巧

  • 增量迁移:用--where="rev_id>100000"分批导出,适合24/7运行的wiki
  • 性能优化:导入前临时关闭binlog(SET sql_log_bin=0;
  • 验证工具maintenance/compareDbs.php可对比新旧数据库一致性

最后检查

  1. 测试5个不同页面(含历史版本)
  2. 检查Special:Version确认扩展正常
  3. 监控error_log至少24小时

现在可以优雅地下线旧服务器了!🎉 记得在wiki公告栏挂个"系统升级完成"的横幅~

数据库管理 数据迁移:mediawiki数据库迁移操作指南,如何高效完成mediawiki数据转移

📆 本文方法基于2025年8月MediaWiki LTS版本验证,部分参数需根据实际情况调整

发表评论