mysqldumpのオプションについて

D
2024-11-13
2024-11-13

 

おつかれさまです。Dです。

たまにmysqldumpコマンドを利用してデータベースのリストアやバックアップを行ったりするのですが、ふとどんなオプションがあるんだろう思ったので、少し調べてみました。

備忘録がてらにまとめていきたいと思います。

内容

一般的によく使いそうな最低限のオプションは以下になります。

オプション 内容
-u データベースへ接続するユーザー名を指定するオプション
-p

パスワードを指定するオプション
ちなみにパスワード直書きで実行する場合は「-p」にスペースを空けてパスワードを追記するのではなく、連続で記載する必要があることが落とし穴です。

例)パスワードがabcdの場合
-pabcd

-h 接続するデータベースサーバーのホスト名やIPアドレスを指定するオプション
省略すると自ホストを示す「localhost」になるので、リモート越しで接続する場合はほぼ必須になります

 

以下はその他知ってたら便利なオプションになります。
(使ったことないやつばっかりやんけっていうのはご了承を。。)

 

オプション 内容
-B 複数のデータベースを指定するオプション
特定のデータベースだけダンプしたいなって時に便利です
-A 全てのデータベースを指定するオプション
まどろっこしいことせずに全部移したいんやって時に便利です
--ignore-table 特定のテーブルだけ除外するオプション
セッション情報など一時的に格納するデータが大きすぎるため、そのテーブルは除外してダンプしたいなみたいな時に便利らしいです(筆者未使用)
--no-create-info テーブル内のデータのみダンプするオプション
既存のテーブルにデータだけをリストアしたい場合に便利らしいです(筆者未使用)
--no-data テーブルの構造のみダンプするオプション
テーブルのデータを後から一気にリストアしたいけど、先にテーブルだけリストアしたいみたいな時に便利らしいです(筆者未使用)
--single-transaction ダンプを行う時にデータの整合性を保ちながらダンプを取得出来るオプション
稼働しているデータベースのダンプを取得する際は便利です
注意点としてはInnoDBのみ効果があります
--quick 大きなテーブルをダンプする際にメモリ消費率を抑えるオプションです
通常、ダンプの際はメモリにバッファをするのですが、そのバッファをせずに1行ずつ実行するためメモリの消費率が低くなります
--add-drop-table

ダンプファイル内の各テーブルの作成前に「DROP TABLE IF EXISTS」を追記してダンプするオプションになります
リストア時に既存のテーブルが存在する際に一度、該当のテーブルを削除してからリストアを実施するため、リストア時のエラーを軽減できるらしいです(筆者未使用)

 

【まとめ】

これだけでもなかなかのオプションの数なんですが、まだまだ記載出来ていないものがあります、、
今回は気になったものを記載していきました。

これを読んで他のオプションも気になった人はぜひ調べてみてください!