CentOS 6 + mroonga 3.00 の環境で、複数台のslaveのうち一台だけstorage modeのmroongaのテーブルでdeadlockが出てreplicationのsql_threadがずーーーっと待ってしまう現象に出会っている。。
「mysql」タグアーカイブ
PDOでMySQLに接続してプリペアードステートメントを使うと、クエリーキャッシュがきかないことがある
条件は
- MySQL 5.1.17以前
http://dev.mysql.com/doc/refman/5.1/en/query-cache.html (英語のみ記載あり) - PDO::ATTR_EMULATE_PREPARES = false
(PHP 5.1.6はfalseがデフォルト。PHP 5.2以降はtrueになってるみたい)
この二つの条件にあてはまる場合、プリペアードステートメントを使うとクエリーキャッシュがきかない。
CentOS 5.7 にMySQL 5.1を公式rpmからインストール
MySQL の公式 RPM を使おう を参考に。
まずはここから必要なファイルをダウンロードして
- rpm -ivh MySQL-client-community-5.1.59-1.rhel5.i386.rpm
- rpm -ivh MySQL-shared-community-5.1.59-1.rhel5.i386.rpm
- rpm -ivh MySQL-server-community-5.1.59-1.rhel5.i386.rpm
- rpm -ivh MySQL-devel-community-5.1.59-1.rhel5.i386.rpm
これで /etc/ini.d/mysql start から起動して、 mysqlコマンドでもアクセスできたので以上終了。
と、思いきや yum install php-mysql してみたら libmysqlclient.so.15 が原因で競合が発生してしまったので、
- rpm -e MySQL-shared-community-5.1.59-1.rhel5.i386.rpm
- rpm -ivh MySQL-shared-compat-5.1.59-1.rhel5.i386.rpm
と、した後に yum install php-mysql が通ったので、ディストリビューションの用意しているリポジトリとの共存を考えると、MySQLの共有ライブラリは互換ライブラリを使った方が良さそう。
mysqlのストレージエンジンを追加する
MySQLのtmpdirをtmpfsにしてusing filesortのSQLも高速化?
未検証だけど、動きそうな気がする。
ただし、レプリケーションしているときのslave側はちょっと注意が必要で、「MySQLがテンポラリファイルを格納する場所」を読む限りダメって書いてあるんだけど、「レプリケーションスタートアップオプション」を読むと、–slave-load-tmpdir=filename に揮発しないストレージを指定すればよさそう。
mysqldumpが遅いっ
–opt か –quick をつけましょう(5.1以降は –opt がデフォルトらしい)
Amazon EC2のMicro InstanceにAmazon Linuxをインストールしてからやったこと
まずは全体的なところから
- root宛てのメールを自分に転送
vi /etc/aliases で root: {$メールアドレス} にしてから newaliases - タイムゾーンを日本標準時にする
cp /usr/share/zoneinfo/Japan /etc/localtime で、一回ログオフしてつなぎなおせばOK。
(あと crond の再起動が必要) - システム文字コードの変更
vi /etc/sysconfig/i18n で、LANG=”ja_JP.UTF-8″ にすればOK。 - iptablesの設定
続きを読む Amazon EC2のMicro InstanceにAmazon Linuxをインストールしてからやったこと
MySQLにおけるパフォーマンスチューニング
メモリー周りは設定ずみとすると、「インデックスを張る」という一般的なRDBMSにおけるチューニングとやることは同じ。
slowqueryがログに出てくれるのと、log-queries-not-using-indexes をつけておくとインデックスが使えていないものもログに出てくれるんで楽チン。
ただし、インデックスフルスキャンがインデックスを使えていないのと同様にログに出ちゃうので、そもそもシンプルなSQLでアクセスするようにテーブルを設計するのが大事。という結論。
MySQL + SennaでMySQLのデータファイルが破損しているようなエラーが出る
[ERROR] Got error 134 when reading table ‘./dir/table’
mysqlのquery-cacheを有効にしてみた
mysqlは今のところMTでしか使ってないので、チューニングしても効果がわかりにくいかな?と、思って手をつけてなかったんだけど、「query-cacheを有効にすると再構築が早くなる」的なエントリを見かけたので試してみた。
my.cnf に「query_cache_size=32M」って書いてmysqlを再起動。MTで再構築を試してみると、
んーほとんど体感できねーー。
このサーバーAtom330だから完全にCPUがボトルネックになってる感じだなぁ。