mysql

memo MySQL互換 のマルチマスタ - Percona XtraDB Cluster

あとでまじめに調べる http://qiita.com/mita2/items/70ca2dbe8f08e943c747 perconaはMySQL互換で独自機能を加えたRDBサーバ Slowログに拡張がされてたりするのは良い感じ。http://qiita.com/nownabe/items/7d4420f8a657aafe85f6 http://qiita.com/nownabe/i…

MySQLの公式yum リポジトリ

RHELのyumのmysqlはバージョン低いから今までdev.mysql.domからbinary取ってきてたんだけど、これだと構成管理上めんどくせーなーと思っていた。 が、いつのまにかyum/rpmが用意されてた。ありがたや http://dev.mysql.com/downloads/repo/yum/ # wget http:…

mysql MyISAM の同時insert (concurrent_insert) の条件

http://www.kinusati.net/2011/01/27/mysql%E3%81%8A%E5%8B%89%E5%BC%B7%E3%83%A1%E3%83%A2myisam%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3/ http://dev.mysql.com/doc/refman/5.1/ja/concurrent-inserts.html ht…

flush status でmysqlの(一部の)統計情報(show statusの結果)をreset する

show global status で取得できる値のうち、いくつかはflush status でreset できる(Uptime、Questions などresetできないのもある) ということを知った。Growthforecast のMySQL pluginをカスタマイズしてMax_used_connections をグラフに描いてるんだけど…

mysql コマンドのpagerとtee

show global status が一気に表示されすぎて困るのでless使いたい、grepしたい、sqlの記録とかをログを残したい等を思ってたけど(mysqlに入る前にscript叩けばできるけど) mysql内で出来るの初めて知った。 mysql> \h (略) pager (\P) Set PAGER [to_pager]…

percona toolkit (旧maatkit)でmysql クエリ解析

http://www.percona.com/doc/percona-toolkit/2.1/ percsona toolkit には色んなブツがあるけど、そのなかでもpt-query-digest が良いですね。tcpdump でパケットをキャプチャしてそのまま食わせられるので、mysql 5.0未満で細かい分解能でslowログを出せな…

mysqldump --tab を使う場合、ディレクトリにはmysql ユーザの書き込み権限が必要

mysqldumpコマンドを叩いているユーザの権限かと思っていたけど、mysqlプロセス上からSELECT ... OUTFILE で書き出すからmysqlの権限が必要ということ?テーブルのschemaの.sql は実行したユーザで作成されていたけどデータの.txt はmysqlユーザだった。 $ c…

mysql リストア時のチューニング

巨大なデータをimportで少しでもリストア時間を短縮したいとき。 my.cnf restore時は堅牢性は必要ないので、binlogやinnodbの二重書き込み等を無効にする。 # log-bin の項目をコメントして起動 # bin_logを無効にできない場合は、せめてsync_binlog = 0 ski…

mysql の複合インデックス復習

mysqlは1つのSQLで、1つのテーブルには1つのインデックスしか利用されない。 なので、whereで2つのカラムを条件に指定する場合それぞれのカラムにインデックスを張っていたとしても、(where id = 0 and name = 'hoge' のような) どちらか1つしか利用されない…

innodbのinnodb_log_file_size を大きくする

mysql停止後ib_logfile* を削除した後、innodb_log_file_size を変更しmysqlを起動する。が、停止する際にログの内容をデータに確実に反映させるために mysql> set global innodb_fast_shutdown = 0;を実行してから停止したほうが良いとのこと。出典忘れた。…

mysqltunerでmysqlの設定値を診断してチューニングする

https://github.com/rackerhacker/MySQLTuner-perl/ mysqltuner.pl を実行するだけ。 $ git clone git://github.com/rackerhacker/MySQLTuner-perl.git $ cd MySQLTuner-perl $ perl mysqltuner.pl"!!"の項目が改善すべき項目。 $ perl mysqltuner.pl >> MyS…

mysql innodbの行ロック/テーブルロック

http://dev.mysql.com/doc/refman/5.1/ja/innodb-next-key-locking.html innodbは行ロックできるstorage engine という認識だったけど、適当に作ったテーブルで適当に遊んでたら、どうも行ロックになっちゃってるぞ。。。?と思ってドキュメント読んだ。この…

mysqlのトランザクション分離レベル おさらい

http://ja.wikipedia.org/wiki/%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B6%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E5%88%86%E9%9B%A2%E3%83%AC%E3%83%99%E3%83%AB http://dev.mysql.com/doc/refman/5.1/ja/innodb-transaction-isolation.html http://dev.mysql.co…

mysqlbinlog で指定した時刻のログだけ表示する

man mysqlbinlogこの辺のオプションを使う。 --start-position --start-datetime --stop-position --stop-datetime $ mysqlbinlog --start-datetime="2011-12-25 11:25:56" binlog.000003

mysqlbinlog unknown variable 'default-character-set=utf8'

$ mysqlbinlog mysqlbinlog: unknown variable 'default-character-set=utf8'oops!! you must add '--no-defaults' option. $ mysqlbinlog --no-defaults mysql-bin.000001

MySQLのストアドプロシージャとファンクションの違い

http://dev.mysql.com/doc/refman/5.1/ja/stored-procedure-logging.html http://www.klab.jp/media/mysql/index5.html ストアドプロシージャ callで呼び出す。 戻り値がないストアドファンクションみたいなもの ストアドファンクション selectなどのSQLに組…

mysql の table size確認

次のどっちかでいけそ? mysql> SHOW TABLE STATUS; mysql> USE information_schema; mysql> SELECT table_schema,SUM(data_length) FROM information_schema.tables Group By table_schema ORDER BY SUM(data_length);

64bitOSでphpとmysqlをsourceからinstallする

phpのconfigureで --with-libdir=lib64 \ --with-mysql=/usr/local/mysql \をつけると/usr/local/mysql/lib64 に libmysqlclient_r を探しに行く。 だけどmysqlをsourceから入れても/usr/local/mysql/lib しかできないので # ln -s /usr/local/mysql/lib /us…

mysql プロシージャ作成

http://dev.mysql.com/doc/refman/5.1/ja/stored-procedures.html とりあえず中身はNOW() を呼び出すだけの関数を作る。 作成 mysql> CREATE PROCEDURE hogehoge -> SELECT NOW(); プロシージャ一覧確認 mysql> SHOW PROCEDURE STATUS; プロシージャ詳細確認…

mysqldump の option 復習

mysql 5.5 GA が年内にreleaseされるとかいう噂を聞いていて、ふとdumpについて知りたくなったので調べた。主にlock関連で。 http://dev.mysql.com/doc/refman/5.1/ja/mysqldump.html --opt defaultで有効。 "--add-drop-table --add-locks --create-options…

mysqlのprofiling

http://nippondanji.blogspot.com/2009/02/mysql.html 正式に利用可能になったのはmysql 5.1から。 > SET profiling=1; ## 何かSQLを実行 > SHOW PROFILE;

mysql 5.1.49 で mmeasureのinnodb statusが表示されない

元々mmeasureがmysql 5.0までしか対応してないんだけど http://d.hatena.ne.jp/hogem/20090827/1251381817 この辺で一応対応できてた。で、最新のmysql 5.1.49にすると"InnoDBステータスを表示"をクリックしても InnoDB と表示されるだけでステータスが出な…

mMeasureのinstall

久々にinstallしてみたら、公式通りにやっても一部動作しなかったので復習メモ。(昔はどうやってinstallしたんだろ。。。。) mmeasure mysql(主にMyISAM)のパラメータ、ステータスを見てアドバイスしてくれるsoftware。 http://mmeasure.sourceforge.jp/inst…

MySQL 5.1.46のInnodb plugin

5.1.46から正式版になった。 http://d.hatena.ne.jp/sh2/20100427 http://nippondanji.blogspot.com/2010/03/innodb-plugin.html innodb pluginを有効にする ignore-builtin-innodb plugin-load = innodb=ha_innodb_plugin.so;innodb_trx=ha_innodb_plugin.s…

mysql 5.1のmysql_install_db

試験でデータをめちゃくちゃにしたので再構築しようとしたんだけど、my.cnfをカスタマイズしているとmysql_install_dbで失敗する? わけないですよねー。logの場所とかを変更してたせいかな? とりあえず一旦mvしてmysql_instalL_db再挑戦していけた。

mysqlのUSER消すときはDROP USER

http://dev.mysql.com/doc/refman/5.1/ja/drop-user.html 今更なんだけどすごい初歩的なことメモ。mysql.userからdeleteしてたけど、それだと権限は残っちゃってるんだなー。権限が残っててもuserからは削除されてて、接続できないからたぶん問題ないんだろ…

mysqlのログローテート

今さらだけど。FLUSH LOGSすればいいんだろうけど、定期的にローテートするにはlogrotateでmysqladmin flush-logsでいい? /etc/logrotate.d/mysql /var/log/mysql/*.log { notifempty sharedscripts postrotate /usr/local/mysql/bin/mysqladmin flush-logs…

mysql 5.1で変更になったログ関連のmy.cnfの設定

変更になったというか正確には、mysql 7.0deprecatedになるよというwarningが出るようになった。もちろん、warningなだけなので5.0以前の設定でも動くけど。せっかくなので新しい書式になおそう。5.0前まではログファイル名のみをmy.cnfに記述していたのに対…

mysqlでinnodbのデータ領域をテーブルごとに分割する

デフォルトだとinnodbのテーブル領域はibdata1とかにまとめられるけど、innodb_file_per_tableを設定するとテーブルごとにわかれる。 http://dev.mysql.com/doc/refman/5.1/ja/multiple-tablespaces.html- http://nippondanji.blogspot.com/2009/01/innodb_1…

mysqlでindex再構築

http://dev.mysql.com/doc/refman/5.1/ja/alter-table.html http://dev.mysql.com/doc/refman/5.1/ja/create-index.html sennaを使ってるとoptimizeしたときにindex再構築する必要があるらしいのでお勉強。 index 削除/再作成 indexの名前を確認 show indexe…