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

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

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

-ソフトウェア
-,

© 2020 ENZO.NET(えんぞーどっとねっと)