Wikipedia英語版のバックエンド、MySQL 5.1からMariaDB 5.5へ移行完了との報告
これまでMySQL 5.1のFacebookによるフォークを利用していたWikipediaが、MariaDBへのマイグレーションを進めています。4月22日、英語版とドイツ語版のWikipediaのバックエンドデータベースが、MariaDB 5.5へのマイグレーションを完了したと報告されました。
なぜMySQL 5.5ではなくMariaDB 5.5を選択したのか。Wikimedia Foundationのサイトアーキテクト Asher Feldman氏は明確な形での説明は避けつつ、次のように書いています。
That said, MariaDB’s optimizer enhancements, the feature set of Percona’s XtraDB (many overlap with the Facebook patch, but I particularly like add-ons such as the ability to save the buffer pool LRU list, avoiding costly warmups on new servers), and of Oracle’s MySQL 5.5 provide compelling reasons to consider upgrading.
MariaDBのオプティマイザー拡張、Percona XtraDBの機能群(多くはFacebookのパッチと重複するが、私は新規サーバで手間のかかるウォームアップを回避できるバッファプールLRUの保存機能のようなアドオンがとりわけ気に入っている)など、そしてオラクルのMySQL 5.5が、アップグレードを検討するべき強力な理由を与えてくれた。
Equally important, as supporters of the free culture movement, the Wikimedia Foundation strongly prefers free software projects;
同様に重要なのが、フリーカルチャームーブメントを支援することだ。Wikimedia財団はフリーソフトウェアを強く推奨している。
前半は機能や性能の面で、後半ではフリーカルチャーをサポートするためにMariaDBを選んだように読めます。
MySQLからMariaDBへと移っていくのか
MariaDBはMySQLからフォークしたオープンソースのデータベース。MySQLと基本的にバイナリ互換で、MySQLをそのままリプレースして使えるようになっています。
MySQLはサン・マイクロシステムズがオラクルによって買収されたときにオラクルのものとなりました。買収後、オラクルがMySQLのプロジェクトを閉鎖的にしていると批判されるようになり、例えばLinuxのおもなディストリビューションの1つであるFedora Projectは、これまで標準のデータベースとして採用していたMySQLの代わりに、Fedora 19からはMariaDBを採用するとして作業を進めています。Fedora以外にopenSUSEもMariaDBを採用するとしています。
今回、世界でも有数の規模のWikipediaがMariaDBへと切り替えたことは、MariaDBにとって実績の大きな裏付けとなることでしょう。
MariaDBへのマイグレーション方法
WikipediaがMariaDB 5.5へのマイグレーションを具体的にどう行ったかについても説明されており、これからアップグレードする人にとって参考になりそうです。以下、説明された文章の内容を簡単にまとめて箇条書きにしておきます。
- 実運用中のマイグレーションは簡単ではない。
- MySQL 4.0から5.1へのマイグレーションは、スキーマの変更などを伴った
- 5.5では以前のバージョンとの非互換部分が数多くある。
- クエリオプティマイザーも変わり、SQLの実行パスが変わるためクエリの性能が良くなることも悪くなることもあった
- レプリケーションの一貫性も壊してしまうことがあった
- そのためきちんとしたテストが必要だった
- Percona Toolkitのpt-upgradeを使い、さまざまなエラーに対してログから実行を再現した
- 実運用サーバのスタンバイサーバとしてデータを読み取り、おおまかなロードテストとベンチマークを実施するスクリプトを開発
- その過程でいくつかのMariaDBのバグも発見し、対応してもらった