siteTitleImage

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

    Comment