毎度の作業なのにその都度見返す情報でもあるのでメモ用途でここにも記載しておく。
MySQL でのバックアップとリストア等のコマンドメモ。
バックアップ
mysqldump --default-character-set=encode -u user_name -p db_name > filename
#実際に値を入れた例
mysqldump --default-character-set=utf8 -u hoge -p hogedb > ./bkup.sql
encode は環境によって指定。(自分の環境だと大体 utf8・・・。)
WHERE で絞り込んだものをダンプする場合
# 一般的な例
mysqldump -u user_name -p db_name --where 'id=100' > filename
#実際に値を入れた例 日付で~から~までの場合(db_hogeのテーブルとしてdateテーブルがある場合)
mysqldump -u root -p db_hoge --where 'date BETWEEN "2017-07-01" AND "2017-07-29"' > dump.sql
※複数テーブルがある場合でも同じ Where が使われる。
リストア
mysql --default-character-set=encode -u user_name -p db_name < filename
#実際に値を入れた例
mysql --default-character-set=utf8 -u hoge -p hogedb < ./bkup.sql
どちらの場合も「–default-character-set」を明示して文字化けを防止。
slowquery のリストアップ
slouquery のログを出すには下記の設定を前もってしておく。
vi /etc/my.cnf
[mysqld]
・・・略・・・
#指定の時間以上掛かったQueryを記録する。この場合は1秒以上。
long_query_time=1
#ログを残す場所。
log-slow-queries=/var/log/mysql/slow.log
ログが出来ていたら mysqldumpslow で遅い Query を解析する。
mysqldumpslow -s t /var/log/mysql/slow_query.log
#上記だとそのまま出力されて不便なのでファイルに書きだしたほうが色々と楽
mysqldumpslow -s t /var/log/mysql/slow_query.log > ./slowquery.txt
番外編:CentOS7 でスワップを使わないようにする
実メモリにまだ余裕あるのにスワップしてしまうっていう場合、スワップ自体をしないように設定するのも手らしいです。
現在の設定を確認
cat /proc/sys/vm/swappiness
新しい値を設定(今回は 0)
sysctl vm.swappiness=0
又は
echo 0 > /proc/sys/vm/swappiness
で設定が終わったら確認してスワップをメモリに戻してやる。
現在の設定を確認
cat /proc/sys/vm/swappiness
どこにスワップしているのか調べる
cat /proc/swaps
今回の場合「/dev/vdb」だったのでそこを指定してメモリに戻す
swappoff /dev/vdb
完了したらスワップをオンにして終了
swapon -a
swapoff のコマンド使うときはもう一つシェル立ち上げとておいて top とか htop を見ながらやるとスワップからメモリに移動している様子が確認できるので精神的に良いかも知れないです^^