刺身の上にたんぽぽ乗せる日記

プログラミングしたり、自販機の下に落ちてる小銭を集めたりしてます

ubuntuのmysqlからtritonnへ移行

バイナリをそのまま利用での手順。
http://pw1.atcms.jp/works/index.php?Toritonn
の手順をベースにしてる。

すでにmysqlが動いているから、移行のために、同時にtritonnも動かして、途中で切り替える。

まずはバックアップ。(追記:下記コマンドだと、キャラクエンコーディングがしっかりしていないとおかしいことになる。詳しくはhttp://d.hatena.ne.jp/kudzu/20100815/1281887444)

$ mysqldump **** > dump

で、インストール。バイナリはsourceforgeからダウンロード。
インストール先のサーバから直接ダウンロードしようと思ったら、インスペクタで実際のurlを調べないといけないのが面倒くさい。

$ tar zxvf tritonn-1.0.12-mysql-5.0.87-linux-i686.tar.gz
$ sudo mv tritonn-1.0.12-mysql-5.0.87-linux-i686 /usr/local/tritonn
$ cd /usr/local/tritonn/
$ sudo chown -R root:root .
$ sudo chown -R mysql:root data
$ scripts/mysql_install_db --basedir=/usr/local/tritonn --datadir=/usr/local/tritonn/data --user=mysql
$ sudo ln -s /usr/local/tritonn/support-files/mysql.server /etc/init.d/tritonn
$ sudo cp /usr/local/mysqlt/support-files/my-large.cnf /etc/my.cnf

一応念のため、データは違うところにインストールすることにしてみた。
ちなみに幸いにして、/etc/my.cnfは標準のmysqlからは無視されるっぽい。

$ sudo emacs /etc/my.cnf

重要なのは、clientとmysqld(あとあればmysqld_safeも?)のsocketとportの行。
/etc/mysql/my.cnfに標準のmysqlの設定があるので、とりあえずそれと被らないようにする別のものにする。

  • /etc/mysql/my.cnf (の恐らく標準設定)
    • socket=/var/run/mysqld/mysqld.sock
    • port=3306
  • /etc/my.cnf (tritonn用の新しいやつ)
    • socket=/tmp/mysqld.sock
    • port=3307

socketは被ってなかったから、port変えればいいだけ。

$ sudo /etc/init.d/tritonn start

これでtritonnが立ち上がるはずなので、dbのコピーを行う。

$ /usr/local/tritonn/bin/mysql -u root
データベース(dbname)を作成
$ /usr/local/tritonn/bin/mysql -u root dbname < dump

これでコピー完了。したので、今度はphpから参照するmysqlを標準のmysqlからtritonnに切り替える。
ポートのほうは多分phpからは使われないんだろうけど、なんとなく気持ち悪いから一応変えておく。

  • /etc/mysql/my.cnf
    • socket=/tmp/mysqld.sock
    • port=3305
  • /etc/my.cnf (tritonn用の新しいやつ)
    • socket=/var/run/mysqld/mysqld.sock
    • port=3306

で、サーバを再起動。socketの都合で、mysqlの停止から。

$ sudo /etc/init.d/mysql stop
$ sudo /etc/init.d/tritonn restart

これでtritonnに切り替え完了。
現在fulltext index作成中。