Database JUNKY

MySQL,MariaDBを中心としたブログです

MySQLのオンラインバックアップ方法(mysqldump)

いままで使ったことのあるmysqldump でもバックアップの方法をメモ

dumpするたびに、毎回毎回オプションを調べている時間がもったいないので、ほぼ自分用にメモしていきます。今後、追記してく予定なので、流れ次第で、内容が重複しちゃうかもです ほぼ、このあたりをこなしておけば、問題なくさくっとできちゃうと思います

f:id:hit10231023:20180309104332j:plain

定義のみ出力する

テーブル定義及び、対象のトリガーが含まれます。当該ダンプデータに、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