Apache,MySQL用top

apachetopとmytopというApache用、MySQL用のtopのようなものを見つけたのでインストールして試してみました。

mytopのインストール

mytop – a top clone for MySQL
http://jeremy.zawodny.com/mysql/mytop/

入手したtarボールを展開
# mv mytop-1.6.tar.gz /usr/local/src/
# cd /usr/local/src/
# tar zxf mytop-1.6.tar.gz
# cd mytop-1.6

Makefileの作成
# perl Makefile.PL
Checking if your kit is complete…
Looks good
Warning: prerequisite Term::ReadKey 2.1 not found.
Writing Makefile for mytop

コンパイル
# make
cp mytop blib/script/mytop
/usr/bin/perl “-MExtUtils::MY” -e “MY->fixin(shift)” blib/script/mytop
Manifying blib/man1/mytop.1

テスト
# make test
PERL_DL_NONLAZY=1 /usr/bin/perl “-Iblib/lib” “-Iblib/arch” test.pl
1..1
ok 1

インストール
# make install
Installing /usr/local/man/man1/mytop.1
Installing /usr/local/bin/mytop
Writing /usr/local/lib/perl5/site_perl/5.8.7/i386-freebsd/auto/mytop/.packlist
Appending installation info to /usr/local/lib/perl5/5.8.7/i386-freebsd/perllocal.pod

試しに実行
# mytop
Can’t locate Term/ReadKey.pm in @INC (@INC contains: /usr/local/lib/perl5/5.8.7/i386-freebsd /usr/local/lib/perl5/5.8.7 /usr/local/lib/perl5/site_perl/5.8.7/i386-freebsd /usr/local/lib/perl5/site_perl/5.8.7 /usr/local/lib/perl5/site_perl .) at /usr/local/bin/mytop line 175.

実行にはReadKey.pmが必要ということで失敗したのでReadKeyを追加します。

ReadKeyをCPANから入手して展開

Jonathan Stowe – TermReadKey-2.30 – search.cpan.org
http://search.cpan.org/~jstowe/TermReadKey-2.30/

# mv TermReadKey-2.30.tar.gz /usr/local/src/
# cd /usr/local/src/
# tar zxf TermReadKey-2.30.tar.gz
# cd TermReadKey-2.30

Makefileの作成
# perl Makefile.PL
Checking if your kit is complete…
Looks good
Writing Makefile for Term::ReadKey

コンパイル
# make
cp ReadKey.pm blib/lib/Term/ReadKey.pm
AutoSplitting blib/lib/Term/ReadKey.pm (blib/lib/auto/Term/ReadKey)
/usr/bin/perl -I/usr/local/lib/perl5/5.8.7 genchars.pl

インストール
# make install
Installing /usr/local/lib/perl5/site_perl/5.8.7/i386-freebsd/auto/Term/ReadKey/ReadKey.so
Installing /usr/local/lib/perl5/site_perl/5.8.7/i386-freebsd/auto/Term/ReadKey/ReadKey.bs
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Installing /usr/local/lib/perl5/site_perl/5.8.7/i386-freebsd/Term/ReadKey.pm
Installing /usr/local/lib/perl5/site_perl/5.8.7/i386-freebsd/auto/Term/ReadKey/autosplit.ix
Installing /usr/local/man/man3/Term::ReadKey.3
Writing /usr/local/lib/perl5/site_perl/5.8.7/i386-freebsd/auto/Term/ReadKey/.packlist
Appending installation info to /usr/local/lib/perl5/5.8.7/i386-freebsd/perllocal.pod

mytopの再実行
# mytop -uhoge -phogehoge
オプションの内容は-u[ユーザ名] -p[パスワード]です。
これでMySQLの負荷を簡単に確認できるようになりました。

次にapachetopを試します。

apachetopを入手して展開

ApacheTop – Trac
http://www.webta.org/projects/apachetop/

# mv apachetop-0.12.6.tar.gz /usr/local/src/
# cd /usr/local/src/
# tar zxf apachetop-0.12.6.tar.gz
# cd apachetop-0.12.6

設計
# ./configure

コンパイル
# make

インストール
# make install
Making install in man
/bin/sh ../config/mkinstalldirs /usr/local/man/man1
/usr/bin/install -c -m 644 ./apachetop.1 /usr/local/man/man1/apachetop.1
Making install in src
/bin/sh ../config/mkinstalldirs /usr/local/bin
/usr/bin/install -c apachetop /usr/local/bin/apachetop
Making install in config

実行
/usr/local/bin/apachetop -f ログファイル名
apachetopはログファイルのリアルタイム監視を行います。私の環境ではログファイル名を常に変える形のローテーションなので日付変更と同時に中断して新しいログファイル名でコマンドを打ちます。rpm版Apacheのようにデフォルトがシステムでローテーションさせてる場合はどうなるんでしょうね?そこまで気長に放置しませんがw

DBD-mysqlのインストール

昨日のMT4BETAのインストールですっかりPerlにMySQLコネクタをインストールし忘れていたので今度BETA4を入れる前までに用意します。

# mv DBD-mysql-4.005.tar.gz /usr/local/src/
# cd /usr/local/src
# tar zxf DBD-mysql-4.005.tar.gz
# cd DBD-mysql-4.005

ここまではいつも通りの前準備

まずPerlコマンドを利用してMakefileを作成します。
# perl Makefile.PL

Can’t exec “mysql_config”: No such file or directory at Makefile.PL line 76.

Cannot find the file ‘mysql_config’! Your execution PATH doesn’t seem
not contain the path to mysql_config. Resorting to guessed values!
Can’t exec “mysql_config”: No such file or directory at Makefile.PL line 466.
Can’t exec “mysql_config”: No such file or directory at Makefile.PL line 466.
Can’t exec “mysql_config”: No such file or directory at Makefile.PL line 466.
Can’t exec “mysql_config”: No such file or directory at Makefile.PL line 466.
Can’t exec “mysql_config”: No such file or directory at Makefile.PL line 466.
Can’t exec “mysql_config”: No such file or directory at Makefile.PL line 466.
Failed to determine directory of mysql.h. Use

perl Makefile.PL –cflags=-I<dir>

to set this directory. For details see the INSTALL.html file,
section “C Compiler flags” or type

perl Makefile.PL –help

…う、mysql_configへパスを通してなかったorz。

# find / -name mysql_config
/usr/local/src/mysql-5.0.18/scripts/mysql_config
/usr/local/mysql/bin/mysql_config

.cshrcを確認
set path=(/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin /usr/X11R6/bin $HOME/bin)

以上より一時的に/usr/local/mysql/binをPATHに追加

set path=(/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin /usr/X11R6/bin $HOME/bin /usr/local/mysql/bin)

後はmakeとmake installで完了です。
# make
# make install

MySQLにCSVでインポート

これはver3のころよくやっていた方法ですがここ数年ずっと使用してなくて思い出すように検索してました。一応健忘録。

以下は全フィールドでのインポート・エクスポートに難がある場合に使用します。
※主キーが内容に特別意味を持たないauto_incrementの場合等、インポート時にキー重複でエラーになると困るもの。

CSVにおいてもエクスポート・インポート共にフィールド指定。

【エクスポート】
mysql> select text,cre_date into outfile ‘/tmp/db.tsv’ lines terminated
by ‘n’ from csvtest;
Query OK, 24 rows affected (0.00 sec)

【インポート】
mysql> load data infile ‘/tmp/db.tsv’ into table csvtest lines
terminated by ‘n’ (text,cre_date);
Query OK, 24 rows affected (0.00 sec)
Records: 24 Deleted: 0 Skipped: 0 Warnings: 0

但しtimestampのフィールドは00000000000000になったので無視できないですね。