There's an echo in my head

日々のメモ。

mysql

MySQLで実際にINSERTされたレコード数

INSERT INTO animals (id,name) VALUES (1,"dog"),(2,"cat"), ... ON DUPLICATE KEY UPDATE name = VALUES(name) みたいなクエリで重複することなく新規にINSERTされたレコード数は、VALUES句の要素数とROW_COUNT()とから算出できる。 VALUES句の要素数がval…

innobackupex --move-backでファイルの移動

xtrabackupからファイルを復元するとき、ネットの記事とかPerconaの記事とかを見ると--copy-backを目にすることが多いんだけど、コピーするほどのディスク領域などない…!という場合には--move-backを使えばいい。 innobackupex --move-back /path/to/BACKUP…

レプリケーションのパスワードはmaster.infoに書かれている

MySQLでレプリケーションする際にCHANGE MASTER TOで設定したパスワードは、データディレクトリ下のmaster.infoファイルに書かれている。

mysqlのスローログの出力をオンラインで停止、再開する

停止: mysql> SET GLOBAL slow_query_log = 0; 再開: mysql> SET GLOBAL slow_query_log = 1; 現状: mysql> show variables like "slow_query_%"; mysqldumpしたデータをインポートしていたらことごとくスローログに積もり積もっていって慌てて停止したとい…

OSXでmysqlが"Too many open files in system”を起こした時の対処

10.7あたりからパーティションを切っていると頻発するようになっていて、最近ようやく対処方法が分かった。 3つのファイルに次のような設定をしたのちMacを再起動する。 /etc/sysctl.conf: kern.maxfiles=20480 kern.maxfilesperproc=18000 /etc/launchd.con…

MySQLでUPDATE+INNER JOIN

UPDATE foo INNER JOIN bar ON bar.id = foo.bar_id SET foo.col1 = bar.col1 WHERE foo.id < 1000; こんな感じ。 ぱっと調べるとFROM句を付けて説明してるページがヒットしたけど、MySQL 5.6では構文エラーになって悩んだ。

Homebrewで入れたmysqlを再起動するにはLaunchAgentのKeepAliveをfalseに設定しておく

~/Library/LaunchAgents/homebrew.mxcl.mysql.plistのKeepAliveがtrueになっていると、mysqlのプロセスが止まった時点でlaunchctlが頑張って起動しなおそうとする。 で、mysqlを再起動しようとmysql.server restartするとうまくいかない。stop/startもだいた…

MySQLでインデックスを使っていないクエリをログに書き出す

[mysqld] slow_query_log=1 long_query_time=0.01 slow_query_log_file=/usr/local/var/mysql/slow.log log-queries-not-using-indexes

MySQLでタイムゾーンの設定

MySQLでその接続セッション中のタイムゾーンを設定しようとしたらエラーが出た: mysql> SET @@SESSION.time_zone = "Asia/Tokyo"; ERROR 1298 (HY000): Unknown or incorrect time zone: 'Asia/Tokyo' 原因はMySQLにタイムゾーンに関する情報が入っていなか…

MySQL 5.5から使えるようになったRANGE COLUMNSによるパーティショニング

それまでDATEやDATETIMEによるパーティショニングではTO_DAYS()関数を使って数値に変換する必要があったけど、MySQL 5.5からはRANGE COLUMNSを使うことによって日付や時刻をそのまま書けるようになった。 DATETIMEだとこんな感じ。DATEも同様。 /* パーティ…

MySQL 5.6.10を入れなおした

Homebrewの公式のFormulaが出たので、独自のFormulaで入れたものを削除して入れなおした。 launchctl unload -w ~/Library/LaunchAgents/com.mysql.mysqld.plist brew update brew uninstall mysql brew install mysql --enable-memcached ln -sfv /usr/loca…

MySQL 5.6.10がリリースされたのでHomebrewのFormulaを書いてみた

見よう見まねで書いてみた(意図がわからず削った部分もあるのでpull req.は据え置き)。 書き方 Formulaを書くときにはソースを落とせるURLとSHA1ハッシュが必要になる。SHA1はスクリプトを書いて計算した(適当なツールがあるのかな)。 cd /usr/local/Lib…

innotop入れた

innotopが便利そうなので入れた。OSX 10.8.2、Perlはplenvで入れてあってv5.17.8。 入れ方: cpanm DBI cpanm Time::HiRes cpanm Term::ReadKey cpanm DBD::mysql wget http://innotop.googlecode.com/files/innotop-1.9.0.tar.gz tar zxf innotop-1.9.0.tar…

MySQLとPostgreSQLのCLI使い方対応表

普段がMySQLばかりなのでPostgreSQLのクライアントpsqlの使い方がわからないので、使う頻度の高いコマンドの比較表をメモっておく。 そもそもの起動方法 mysql: $ mysql -u *user_name* -p *db_name* psql: $ psql -U *user_name* -W *db_name* コマンド対応…

MySQL InnoDBの行ロック

ロックがわからない。MySQL InnoDBの行レベルロックを読んだけど、イマイチわからない。というわけで、社内の勉強会で知ったことをまとめてみる。 FOR UPDATEかLOCK IN SHARE MODEによって、そのトランザクション中に走る別画面でのクエリの処理のタイミング…

MySQLの整数値の幅

5.5のリファレンスのNumeric Typesより type bytes min max TINYINT 1 -128 127 TINYINT UNSIGNED 1 0 255 SMALLINT 2 -32,768 32,767 SMALLINT UNSIGNED 2 0 65,535 MEDIUMINT 3 -8,388,608 8,388,607 MEDIUMINT UNSIGNED 3 0 16,777,215 INT 4 -2,147,483,…

このブログに出てくるコードスニペッツは、引用あるいは断りがない限りMITライセンスです。