見出し画像

mysqldumpとは?解説と実行方法

mysqldumpを実行する

はじめに

こんにちは、SHIFT の開発部門に所属しているmurasawaです。今期より中途で入社、バックエンド関連の開発を担当して行きます。

現在、研修でデータベースやRestAPIについて基本的な事から学んでいます。学んだことをアウトプットし理解を深めていくとともに技術の共有として役に立てば幸いです。

今回はmysqldumpについて調べ、基本的なコマンドを学んだのでまとめています。

mysqldumpとは

dump(ダンプ)とは要するにバックアップのことです。 データベース(DB)を復旧(リストア)する際に使います。

どうしてデータ消失が起こるのか」この記事によればデータ消失の原因のうち、ハードウェア障害(44パーセント)と人的ミス(32パーセント)が全体の約8割を占めます。

データ消失の原因を内的・外的要因に分けて考えると内的要因には「プログラム不良」「HDD障害」が、外的要因には「メンテナンスミス/操作ミス」「限界を超えた運用」「災害/不正アクセス」があります。 「プログラム不良」、「メンテナンスミス/操作ミス」、「限界を超えた運用」、「災害/不正アクセス」が原因として挙がる以上、バックアップを取ることは非常に重要なことです。

mysqldump実行方法

mysqlを使用する場合、

mysql -u root -p

などでログイン後操作しますが、mysqlはログインせずにコマンドラインから操作します。 直接コマンドラインから

mysqldump -u ユーザー名 -p -B データベース名 > 出力ファイル名

を実行します。

基本的なオプション

オプション : 詳細(説明)
・ -u : ユーザー(接続に使用するユーザ名)
・ -p : パスワード(パスワードを指定してログイン)
・ -h : ホスト(接続するサーバーのホスト名。無指定でlocalhost)
・ -B : データベース(dumpするDBを指定する(複数指定可能))
・ -A : ALL(すべてのDBをまとめてdumpする)
・ -d : 定義のみ(DBの定義のみ(data無し)をdumpする)
・ -n : データベースを無視(データベース作成を無視してdump)
・ -t : テーブルを無視(テーブル作成を無視してdumpする)

使用例

必要に応じてオプションを指定してください。

定義とデータをdump

単一のデータベース、テーブルをdump

#データベース
mysqldump -u USER_NAME -p -B DB_NAME > ./sql/OUTPUT_FILE_NAME

#テーブル
mysqldump -u USER_NAME -p DB_NAME TABLE_NAME > ./sql/OUTPUT_FILE_NAME

複数のデータベース、テーブルをdump

#データベース
mysqldump -u USER_NAME -p -B DB_NAME1 DB_NAME2 > ./sql/OUTPUT_FILE_NAME

#テーブル
mysqldump -u USER_NAME -p TABLE_NAME1 TABLE_NAME2 > ./sql/OUTPUT_FILE_NAME

#すべてのデータベース
mysqldump -u USER_NAME -p -A > ./sql/OUTPUT_FILE_NAME

#すべてのテーブル
mysqldump -u USER_NAME -p DB_NAME > ./sql/OUTPUT_FILE_NAME

定義のみdump(データ無し)

#データベース,テーブルの定義をdump
$ mysqldump -u USER_NAME -p DB_NAME -d > ./sql/OUTPUT_FILE_NAME

#データベースの定義のみダンプ
$ mysqldump -u USER_NAME -p DB_NAME -d -t > ./sql/OUTPUT_FILE_NAME

#テーブルの定義のみダンプ
$ mysqldump -u USER_NAME -p DB_NAME -d -n > ./sql/OUTPUT_FILE_NAME

データのみのdump

#データベースのデータ
$ mysqldump -u USER_NAME -p -t DB_NAME > ./sql/UTPUT_FILE_NAME

#テーブルのデータ
$ mysqldump -u USER_NAME -p -t DB_NAME TABLE_NAME > ./sql/OUTPUT_FILE_NAME

リストアの実行

dumpしたファイルでmysqlを復元(リストア)する

$ mysql -u USER_NAME -p DB_NAME < ./sql/OUTPUT_FILE_NAME

これでdumpした時点の状態に復元されました。

最後に

障害など起きた際に重要なmysqlついてまとめました。 データベースの定義をsqlとして作ってくれるので、dumpとしての機能だけではなく データベースの定義の共有としても使え便利に感じました。

まだ細かいオプションがあるようですが、実際に必要に迫られた際に再度調査したいと思います。

__________________________________

執筆者プロフィール:Satoshi Murasawa
前社ではRPAツールの技術サポート、開発を1年半経験。 SHIFTでは、バックエンドエンジニアとして入社し、node.jsやmysqlに触れはじめた。
DBに漠然とした興味があり、勉強して部の中でDB関連で役割を持つことができたらよいなと思っています。

お問合せはお気軽に
https://service.shiftinc.jp/contact/

SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/

SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/

SHIFTの導入事例
https://service.shiftinc.jp/case/

お役立ち資料はこちら
https://service.shiftinc.jp/resources/

SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/