最近、宅内用サーバ(NetBSD)を自作のi386マシンからML110G6/x86_64(amd64)へ置き換えたのですが、新マシンに移行したCactiで、グラフが正常に描画されないという事象が生じました。
具体的には、グラフの描画を試みた際、/var/log/httpd/error_logで;
ERROR: This RRD was created on other architecture
というエラーが表示されます。
この件について調べてみたところ、http://www.rawiriblundell.com/?p=916に同じ様なトラブルに見舞われた方がいらっしゃいました。
この方の解決方法をごく簡単にまとめると;
- SQLサーバに蓄積されているデータをmysqldumpでdumpし、新サーバにrestoreする。
- rrdtoolsで作られたデータも、rrdtoolコマンドでdumpし、新サーバへrestoreする。
というものです。具体的には:
1. DBのマイグレーション
oldcacti# mysqldump -u cacti -p > /tmp/cacti.sql
Enter password:
oldcacti# scp cacti.sql root@newcacti:/etc/cacti/
root@newcacti's password:
cacti.sql 100% 463KB 462.5KB/s 00:00
oldcacti#
とした後、新マシンで;
newcacti# mysql -u cacti -p < cacti.sql
Enter password:
newcacti#
とします。
2. rrdtoolsデータの移行
oldcacti# rrdtool dump filename.rrd > filename.xml
としてデータをXML形式でdump、その後dumpしたファイルをnewcactiへコピーして;
newcacti# rrdtool restore filename.xml > filename.rrd
でrestoreします。言うまでも無い事ですが、cronでkickされているscriptは新旧cacti共にあらかじめ停止しておかないと大変なことになります。
なお大抵の場合、rrdファイルは数十個にのぼるケースが大半ですので、そういう場合は先に示したWebペイジにある様なsh、awk、sedを屈指する方法で一気にデータを変換するのが得策でしょう。