MySQL/バックアップ(データをダンプする)

MySQL/バックアップ(データをダンプする)

データベースごとバックアップをとる

mysqldump -u root -phoge hoge_db > 何かファイル

こうするポイントは-pオプションのあとにスペースをあけない

特定のテーブルのみのバックアップする

mysqldump -u root -phoge hoge_db hoge_table > 何かファイル

オプション

バイナリデータが入っているカラムをダンプする

--hex-blob

オプションをつけることによりバイナリデータが入っているカラムが全部16進リテラルとして書き出されます。なのでSQLとしてダンプしてテキストに保存するときはつけたほうがよい。

1レコード1insert文でダンプする

普通にダンプするとinsert文が一個になってしまうので、後で加工する場合や分割したい場合に具合がわるいので

--opt --skip-extended-insert

のオプションをつけると1レコード1insert文に分割してダンプしてくれる。

insert文にカラム名付きでダンプする

ダンプした後カラムを削ったりする場合あったほうがいいのでこの場合はcオプションをつけてやる

-c

定義のみをバックアップする

定義のみをバックアップするには

-d

オプションをつける

データのみをバックアップする

データのみをバックアップするには

-t

オプションをつける

データベースの定義もバックアップする

デフォルトではデータベースの定義はダンプされないので、丸々バックアップというときにはdatabaseオプションを付ける

--database

条件付きでバックアップする

一部のデータしかいらない場合がある時where句同様の書き方で条件を指定することができる。

--where="hoge='piyo' AND fuga=123"

整合性を保つ

DBを動作させながらバックアップをとる場合に

--single-transaction

として、整合性を保つ。

リストアする

バックアップが単なるSQLでやったのでそれを流し込んでやるだけ。

mysql -u root -phoge masters < 「何かファイル」

巨大なSQLを読み込む場合エラーが出て落ちる場合がある。そういうときは my.ini とかに

max_allowed_packet = 16M

のように指定して限界値を上げておく

環境によっては

Unknown Command

みたいなエラーが出ることもある。そういう時は文字コード指定を入れて

mysql -u root -phoge --default-character-set=utf8 masters < 「何かファイル」

こんな感じにする。

タグ

db/mysql/backup.txt · 最終更新: 2018-03-13 09:55 by ore