MySQLのオンラインバックアップ方法(mysqldump)
いままで使ったことのあるmysqldump でもバックアップの方法をメモ
dumpするたびに、毎回毎回オプションを調べている時間がもったいないので、ほぼ自分用にメモしていきます。今後、追記してく予定なので、流れ次第で、内容が重複しちゃうかもです ほぼ、このあたりをこなしておけば、問題なくさくっとできちゃうと思います
定義のみ出力する
テーブル定義及び、対象のトリガーが含まれます。当該ダンプデータに、DROP DATABASE及び、CREATE DATABASEは含まれません
mysqldump -umyadm -p --no-data database1 > /tmp/database1.def_only.dump
ストアドプロシージャと定義のみ
mysqldump -umyadm -p --no-data --routines database1 > /tmp/database1.def_only.dump
マスター側のポジションと、innodbをロックせずにダンプする
ちなみに--databases オプションをつけると、デフォルトの設定ではスキーマ指定の構文が含まれる為、リストア先に同名のデータベースが存在する場合は、上書きれる危険性がるので注意
mysqldump -h remote_host --databases database1 database2 -u myuser -pmypasswd --master-data --single-transaction --routines > /tmp/database1.dump
マスター側のポジションと、innodbをロックせずにダンプする
データベースのDROP & CREATE 文も含まれないので、リストアする際は、空のデータベースを予め作成しておく必要があります
mysqldump -h remote_host database1 -u myuser -pmypasswd --master-data --single-transaction --routines > /tmp/database1.dump
トリガーのみDUMPする
mysqldump -umyadm -p database2 --no-create-info --no-data --triggers > /tmp/database2.trigger.dump
ストアドプロシージャのみダンプする
mysqldump -umyadm -p database2 --no-create-info --no-data --routines > /tmp/database2.stored_proc.dump
条件を指定してデータをフィルタしたデータをダンプする
mysqldump -umyadm -p database2 --where='id>100' > /tmp/database2.stored_proc.dump