MySQLのバックアップ
phpMyBackupProでとってたんだけど、正確に言うと、とってたつもりになってたんだけど、小さいDBはとれるけど、ある程度のサイズ以上の、つまりバックアップの必要性が高いDBのバックアップはとれてないという、なんだこれ!という現象を発見し唖然。
phpMyBackupPro自体、評判はいいし、いろんなところで取り上げられているので、十中八九うちの環境の問題だと思うんだけど(メモリが足りないとかパーミッションがなんとかとか)、どこで失敗してるか調べるガッツがたまたまなかったので、ググって「AutoMySQLBackup」というのを見つけてきた。
AutoMySQLBackup
これは1本の shファイルで、なかを見るといろいろできそうだけど、とりあえず使うには、http://kunik.no-ip.com/2007/06/13/2106/install-automysqlbackup.htmlを参考にちょろちょろっとやればOK。
USERNAME=user PASSWORD=password DBHOST=localhost DBNAMES="wpmu wpmu29" BACKUPDIR="/home/www/backups" #DATE=`date +%Y-%m-%d_%Hh%Mm` DATE=`date +%Y-%m-%d_%H%M` #DOW=`date +%A` DOW=`date +%w`
DB関係を変えただけだと、日本語UTF-8ロケールなうちの環境では、できるファイルが「wpmu_2010-01-21_19h07m.木曜日.sql.gz」みたいになって、これを解凍するとさらに悲惨なこんなファイル「wpmu_2010-01-21_13h47m.譛ィ譖懈律.sql」ができてしまうので、曜日のところを曜日番号にしてみた。
ちょっとしたこと
でもって、crontab -e で毎日起動にしておいた。
30 0 * * * /home/www/automysqlbackup0.sh > /dev/null 2>&1 30 12 * * * /home/www/automysqlbackup12.sh > /dev/null 2>&1
実は 0:30と 12:30の2回起動にしたくて、*/12とかで登録したかったんだけど、こいつは賢いことにデイリーバックアップを曜日で持つようになっているので、つまり、ファイルを作成する前にその曜日のファイルを消してしまうので、2回バックアップが起動しても常に最後のやつしか残らないという罠。
やりたいのは、1日2回分を7日分、計14履歴を保持したいんで、曜日で消してるところを「曜日+午前午後」で消すようにすればいいんだけど、dateの%指定に午前午後を数字で返すのがみつからなかったので、ひよって shファイルを分けて、午前と午後を別々のフォルダに書きだすようにしてしまった。
1日4回バックアップとかのニーズがでてきたら、ちゃんとやることにする。
いろいろTips
起動時に実行させたいコマンド
/etc/rc.localに記述しておく。(ここに書いちゃダメという意見はあるけど)
cd /home/www/2.5-55.jp ruby lib/yahoo_psearch.rb loop sudo -u nobody ruby /home/hml/sendlater.rb sudo -u nobody ruby /home/fmail/sendml.rb exit 0
圧縮ファイルをダウンロードしてきて解凍
$ wget http://nanchara.com/xxx.tar.gz $ tar xfvs xxx.tar.gz
WordPress MUに memcachedを導入
※ やっぱり外した
管理ページの挙動がおかしい。プラグインを使用しないにしてもサイドバーのプラグイン設定が有効で、実際そのプラグインが生きていたり、サイトの切替えをやったら設定項目に全然別のサイトの項目が表示されたり。
WordPressが自前でオブジェクト・キャッシュしている内容と memcachedがキャッシュしてる内容が混ざるような気がする。memcachedが悪いとは思えないので、memcachedはそのまま有効にして、object-cache.phpを使わないようにして様子をみます。でも使わないと全然キャッシュが効いてこないんだよね。
特に遅くなったわけじゃないんだけど、劇速ということらしいのでテスト環境のWordPress MUに memcachedを入れてみた。
手順1
http://blog.f14s.biz/?p=760の通り。
# apt-get install php-pear # apt-get install php5-dev # apt-get install build-essential # pecl install memcache
手順2
# e /etc/php5/apache2/conf.d/memcache.ini extension=memcache.so
このファイル(/etc/php5/apache2/conf.d/memcache.ini)はないから作ります。apache2/conf.dに設定を置いておくと、apacheが起動時に読み込んでくれると。
# apt-get install memcached # /etc/init.d/apache2 restart
これで memcachedが起動します。
手順4
次に、http://plugins.trac.wordpress.org/browser/memcached/trunk/object-cache.phpから object-cache.phpをダウンロード。
Plain Textがテキストファイルとしてのダウンロード・リンク。
この object-cache.phpを wp-content/ 直下におく。
手順5
MySQLのチューニング。
$ e /etc/mysql/my.cnf [mysqld] query_cache_limit = 1M query_cache_size = 24M query_cache_min_res_unit= 4k query_cache_type = 1
memcachedのチューニング。Kosei Kitahara's Blog: ubuntu で nginx から memcache を利用するを参考にしました。
$ e /etc/memcached.conf -m 128
# /etc/init.d/mysql restart # /etc/init.d/memcached restart
http://www.alink.co.jp/tech/blog/2009/05/06/memcached-php%E3%81%A7memcached%E3%81%AE%E7%A8%BC%E5%83%8D%E7%8A%B6%E6%B3%81%E3%82%92%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF/で紹介されている memcache.phpを入れておけば、キャッシュのヒット率なんかがわかってベターです。
Google Adsenseの規約違反
これは規約違反じゃなかろかと見るたび思う。
マウスオーバーで表示文字を変える
今時こんなことでそう悩む人はいないだろうけど、あれっと思ったので自分用の覚書きとして。
<a href="/newitem/" onMouseOver="jQuery('#new_li').text('新着'); jQuery('#new_li').css('color','#46D7FA');" onMouseOut ="jQuery('#new_li').text('new'); jQuery('#new_li').css('color','#191919');" style='color:#191919;'> <img src="/item.jpg" alt="新着" width="92" height="76"></a> <a href="/newitem/" onMouseOver="jQuery('#new_li').text('新着'); jQuery('#new_li').css('color','#46D7FA');" onMouseOut ="jQuery('#new_li').text('new'); jQuery('#new_li').css('color','#191919');" style='color:#191919;' id="new_li">new</a></li>
jQueryが入っている前提。別にこれしきの事に jQueryを入れろということではなく、普通に入っていたから。しかも、$がコンフリクトして使えない環境で。
画像と文字が上下に並んでいて、どっちにマウスオーバーしても文字の方を「new」から「新着」に変えて、表示色も変えるという処理。styleで初期の色を指定しておくのがコツかな。(スタイル継承が効いているとき)