私はまだまだエントリー少ないからちょっと重いな程度で終わってたんだけど、BerkeleyDBだとfileinfo.dbが肥大化してひどい人だと500とか返すようになるらしい。(o)さんが素晴らしいプラグインを作られてますが、これを機にMySQLにdbを移行してしまおうかと。
実はMySQL使える環境さえあれば移行はあっさり終わるわけで。むしろMySQLサーバーのセットアップに時間がかかったひみちゅ
まずはMySQLと、perlからMySQLのDBを読むためのmoduleをインスコ。CHARSETのあたりはお好きなように。
# portinstall -M 'WITH_CHARSET=utf8 WITH_XCHARSET=all' databases/mysql41-server databases/p5-DBD-mysql41
# /usr/local/etc/rc.d/mysql-server.sh start
お次はMySQLの初期設定。rootのパスワード設定して、いらないdbとuserを消して、MT用のdbを作成して、そのdbにアクセスする用のユーザーを作成。
# mysqladmin -u root password *******
# mysql -u root -p
mysql> drop database test;
mysql> use mysql;
mysql> delete from user where password = "";
mysql> create database <dbname> character set utf8;
mysql> grant select,insert,update,delete,create,alter on <dbname>.* to <dbuser>@localhost
-> identified by '<dbpass>';
mysql> exit
mt-db-pass.cgiにdbにアクセスするパスワード書くわけだけど、http経由で見られても困るので .htaccess で塞いでおく。cgiではアクセスできるように、所有者をapacheのユーザーにして600に。
<FilesMatch "(mt.cfg|mt-db-pass.cgi)">
deny from all
</FilesMatch>
で、mt.cfgにMySQLを使う設定を追加。但しまだBerkeleyDBの時のDataSourceは残しておく。デフォルトのdbディレクトリ以外にしてたら移行にこけるから。
DataSource ./db
ObjectDriver DBI::mysql
Database <dbname>
DBUser <dbuser>
DBHost localhost
後は、MTのアップデートパッケージにある mt-db2sql.cgi を持ってきてhttpからアクセスするだけ。最後に
Done copying data from Berkeley DB to your SQL database! All went well.
と出れば終了。DataSourceをコメントアウトすればおk。
« 戻す