MySQL5.1へのアップグレードメモ

amd64 な環境で、 MySQL が 5.0 → 5.1 系になってたので、メモ。正しいかどうかは知らない。

インストール前に

Gentoo からアップグレードに関するニュースが来ているので読んでおく。

ニュースの一覧の取得

eselect news list で取得できる。

$ eselect news list
News items:
  [1]   read    2010-03-25  Python 3.1
  [2]   read    2009-07-02  kdeprefix and monolithic ebuilds issues
  [3]   read    2010-08-01  --as-needed enabled in default profiles
  [4]   read    2010-02-21  MySQL 5.1 unmasking and upgrade procedures
ニュースを読んでみる

eselect news read 番号orタイトル で読むことができる。今回は4番を選択。

$ eselect news read 4
2010-02-21-mysql-upgrade
  Title                     MySQL 5.1 unmasking and upgrade procedures
  Author                    Robin H. Johnson 
  Posted                    2010-02-21
  Revision                  4

The 5.1 series of MySQL is going to be unmasked at the same time as the release
of this news item. When upgrading from an older major version (including 5.0),
you will be required to rebuild everything linked to the libmysqlclient.so.15
and libmysqlclient_r.so.15.

You can do this by installing app-portage/gentoolkit and running:
# revdep-rebuild --library libmysqlclient.so.15
# revdep-rebuild --library libmysqlclient_r.so.15

If you use the Portage 2.2 series, you may also use:
# emerge @preserved-rebuild

The official upgrade documentation is available here:
http://dev.mysql.com/doc/refman/5.1/en/upgrade.html

Note that existing databases may need converting as well, again including those
upgrading from 5.0 to 5.1. Details are in the update documentation.

サービスの停止

とりあえず MySQL のサービスを停止しておく。後でもいいとは思うし、全ての作業が終わった後 restart しても多分問題ないとは思う。

$ sudo /etc/init.d/mysql stop
 * Stopping  ...
 * Stopping mysqld (0)

マージする

いつも通りマージする。今回 world で全部まとめてアップグレードされてる。

$ sudo emerge -vuND world
とか
$ sudo emerge -u1 mysql
とか

コンフィグファイルを確認

dispatch-conf か etc-update をかける。

$ sudo dispatch-conf

ニュースの内容に従って作業する

先ほど読んだニュースの内容に従って作業する。 revdep-rebuild するだけ。インストールしてあるパッケージによっては、何個かリビルドがかかるはず。

$ sudo revdep-rebuild --library libmysqlclient.so.15
$ sudo revdep-rebuild --library libmysqlclient_r.so.15

一応書いておくけど、 revdep-rebuild は app-portage/gentoolkit に含まれているので、いれてない人はいれておく。


ちなみに、ライブラリに関してはこんな感じになってる。

$ ls /usr/lib64/libmysqlclient*
/usr/lib64/libmysqlclient.so       /usr/lib64/libmysqlclient.so.16.0.0  /usr/lib64/libmysqlclient_r.so.16.0
/usr/lib64/libmysqlclient.so.16    /usr/lib64/libmysqlclient_r.so       /usr/lib64/libmysqlclient_r.so.16.0.0
/usr/lib64/libmysqlclient.so.16.0  /usr/lib64/libmysqlclient_r.so.16

新しいのしか入ってません。古いライブラリを参照しているやつをリビルドする必要があるのね。

サービスを再開する

全部終わったら、 MySQL のサービスを再開しておく。とめてない場合は restart する。

$ sudo /etc/init.d/mysql start
とか
$ sudo /etc/init.d/mysql restart


こんだけ。あとはうまく動けば…いいな。


追記

DB のアップグレードが必要な場合もあるので、以下の作業も行ったほうが良い。多分。