5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MySQLでストアド, トリガー, イベントスケジューラーもフルバックアップする

Last updated at Posted at 2019-08-18

前置き

小ネタになります:pushpin:
「MySQLでリストアしたらストアドが無くなった」という相談があり、実行したmysqldumpのコマンドを聞いたらmysqldump -u root -p --all-databases > dump.sqlのようなコマンドでした:confounded:
このコマンドは非常に多く紹介されていますが「全データベースのバックアップ」という紹介のされ方が多いので誤解されやすいのかもしれません。もしくは世間的にストアド、トリガー、イベントスケジューラーの存在は薄いのでしょうか:question:
mysqldumpのオプションを指定してストアド、トリガー、イベントスケジューラーをダンプする必要があります。

mysqldumpオプションを指定する

当初はストアドなどが無くても、いつの間に作成されたりするので、筆者は以下のオプションを常時付与してバックアップをしています。

オプション 備考
--routines ストアドプロシージャー、ストアドファンクションをダンプする。
--triggers トリガーをダンプする。
--events イベントスケジューラーをダンプする。

コマンドの実行例

筆者はMySQL 8.0(InnoDB、レプリケーション無し)で以下のコマンドでフルバックアップしています。最終的には「全データベースのバックアップ」の定義はそれぞれだと思いますが:sweat_smile:、ストアド, トリガー, イベントスケジューラーはダンプされます:thumbsup:

Linux/macOSなど
mysqldump -u root -p --single-transaction --routines --triggers --add-drop-trigger --events --all-databases > dump.sql
Windows(特にPowerShellはこちらをお勧めします)
mysqldump -u root -p --single-transaction --routines --triggers --add-drop-trigger --events --all-databases --result-file="dump.sql"

補足

以下のオプションは改めて指定する必要が無いと考えています。

オプション 理由
--opt デフォルトで指定されているため。 故に以下のオプションも改めて指定する必要はない。
--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset
--skip-lock-tables --single-transactionと--lock-tablesは排他利用であるため。

終わりに

筆者は--routinesは知っていましたが、「--triggers--eventsもあるのか」と思ったことがあります。ストアドなどを含めたコマンドが少しでも広まって、リストア時に「真っ青なる方々」が少なくなれば良いと思い記事にしました。
余談ですが、そろそろmysqlpumpに移行したいと考えています。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?