MySQLでバックアップやリストア等よく使用するコマンド

Author Image

Enzo

· 2012/12/01 · 4 min read
TopImage
INDEX

毎度の作業なのにその都度見返す情報でもあるのでメモ用途でここにも記載しておく。

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 を見ながらやるとスワップからメモリに移動している様子が確認できるので精神的に良いかも知れないです^^

# DB # Linux