MySQL5.1

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」はエラーになる