percona-toolkitでログの解析
スロークエリログから
pt-query-digest mysql-slow.log > rsult.txt
tcpdumpから
#ログ取って
tcpdump -s 65535 -x -nn -q -tttt -i any -c 10000 port 3306 > mysql.tcpdump
#解析
pt-query-digest --type tcpdump mysql.tcpdump > result.txt
バックアップとリカバリ
・dbnameデータベース全体のダンプを取得
mysqldump -u username -p dbname > /path/to/filename.dump
・tablenameテーブルを条件付きでダンプを取得(-t データのみ)
mysqldump -t -u root -p dbname tablename -w 'modified >= "2013-07-25 00:00:00"' > /path/to/filename.dump
・dbnameデータベースにダンプをリカバリ
mysql -u username -p dbname < /path/to/filename.dump
・リカバリ時に「ERROR at line 3392: Unknown command '\''」のようなエラーがでる場合は文字コードを明示
mysql -u username -p dbname --default-character-set=utf8 < /path/to/filename.dump
CSVファイルのエクスポートとインポート
SELECT * FROM tablename INTO OUTFILE "/path/to/filename.csv" FIELDS TERMINATED BY ',';
LOAD DATA LOCAL INFILE "/path/to/filename.csv" INTO TABLE tablename FIELDS TERMINATED BY ',';
DB作成時に文字コードを指定
CREATE DATABASE dbname CHARSET UTF8;
Insert時とUpdate時に自動で日時が更新されるフィールド「bar」を作成
CREATE TABLE `foo` ( `bar` timestamp default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );
※1テーブルに1フィールドだけ作成できる
※デフォルト値を動的に定義できるのはtimestamp型だけ
「datetime default CURRENT_TIMESTAMP」はエラーになる