How to migrate a mediawiki site

From 清冽之泉
Jump to navigation Jump to search

相同版本的迁移很简单,重建旧环境,再把 database 和 file system 移过去就行。所以本文重点讨论升级式迁移:新 code + 旧重点备份 + update.php 等于升级成功。

新版本的数据,恢复至旧版本 MediaWiki,不支持。

旧版本的数据,恢复至新版本 MediaWiki,支持。不过要运行 update script.

  • 若 mediawiki/ 全量备份,则不用再装 mediawiki
  • 若 mediawiki/* 部分备份,则需在服务器安装同版本 mediawiki,再把备份部分移到它应去的位置

最好的迁移,是保持相同 MediaWiki 版本。不过,现实中多数是在新服务器上安装更新版本的 MediaWiki,把数据迁移进去后,在新服务器上做一个 upgrade 操作。

传文件进新服务器的方法有 putty 或 WinSCP 或 SSH 或 FTP。

步骤概览:

  1. 重建数据库、用户、权限
  2. 导入 database
  3. 导入 files
  4. 检查 configuration
  5. 测试

对公共 MediaWiki 迁移前,先把权限改为只读,避免丢失用户在迁移期间编辑的内容。在 LocalSettings.php 中添加:

$wgReadOnly = 'Down for maintenance: access will be restored shortly';

而且,记得重启 apache2 的 php 模块:

sudo a2enmod php8.2

迁移 Database

Database 包含页面内容、用户配置、metadata、索引内容。

备份 Database

sudo apt install automysqlbackup
sudo automysqlbackup
sudo find /var/lib/automysqlbackup/
sudo cp /var/lib/automysqlbackup/weekly/my_wiki/my_wiki_week.18.2016-05-07_15h32m.sql.gz /some/place/you/want

除了用 automysqlbackup,用 mysqldump 一样也能实现 Database 的备份,这是第二种方法。

mysqldump --default-character-set=binary --user=wikidb_user --password=wikidb_userpassword wikidbname > dump_of_wikidb.sql

创建 MySQL 环境

多数重要数据存在 database 中。迁移的前提准备:创建一个正常使用的 MySQL 环境,合适的 MySQL 用户权限。备份在旧机器上操作,备份后的步骤到新机器做。

  1. create a NEW mysql user (new_mysql_user)
  2. create a NEW mysql database my_wiki
  3. GRANT the NEW mysql user access to the NEW created mysql database my_wiki
mysqladmin -u wikidb_user -p
drop wikidb
sudo mysql -u root -p 
mysql> CREATE USER 'new_mysql_user'@'localhost' IDENTIFIED BY 'THISpasswordSHOULDbeCHANGED';
mysql> quit;

sudo mysql -u root -p
mysql> CREATE DATABASE my_wiki;
mysql> use my_wiki;

mysql> GRANT ALL ON my_wiki.* TO 'new_mysql_user'@'localhost';
mysql> commit;
mysql> quit;

迁移 Database

sudo chown user:user somebackup.sql
gunzip < var/lib/automysqlbackup/weekly/my_wiki/my_wiki_week.18.2016-05-07_15h32m.sql.gz|mysql -uUSER -pPASSWORD my_wiki mysql -u wikidb_user -p wikidb < dump_of_wikidb.sql
php wikifolder/maintenance/update.php

迁移 File System

  • LocalSettings.php 一般复制过去能直接用
  • logo 也要备份
  • 如果有 .htaccess,也需要备份
  • 上传的文件,包括删除文件、缩略图、渲染的数学图、svg图,多半都放在 images/ 文件夹下
  • extensions/ 也需要备份

不要覆盖文件夹。可先在别处解压备份文件。把 File System 移到相应位置,再打开浏览器运行 Config script 以生成 LocalSettings.php。需要迁移的文件如上。以下仅为压缩、解压缩示例。

备份 File System

sudo tar zcvhf mediawikimybackup.tgz /var/lib/mediawiki

迁移 File System

tar -xvzf mediawikimybackup.tgz