Blog ブログ

mysqldumpの使い方

こんにちは。
プログラマの吉行と申します。

今回は、MySQLのmysqldumpコマンドを使用したデータバックアップについてお話ししたいと思います。

MySQLにはmysqldumpというバックアップ機能が用意されています。

◼︎mysqldumpの実行

mysqldumpコマンドを実行してMySQLデータベースのバックアップを行いましょう。
mysqldumpはバックアップの取り方をカスタマイズできる便利オプション機能を備えています。
また、DB丸ごとではなく、テーブルだけデータだけなど出力に仕方も色々あります。

1、特定データベースのみバックアップ
 mysqldump [オプション] データベース名 > ダンプファイル名

2、特定テーブルのみバックアップ
 mysqldump [オプション] データベース名 テーブル1 テーブル2 > ダンプファイル名

3、複数データベースをバックアップ
 mysqldump [オプション] -database データベース1 データベース2 > ダンプファイル名

4、全てのデータベースをバックアップ
 mysqldump [オプション] -all-databases > ダンプファイル名

◼︎実際にやってみよう

バックアップする時は、次のようにコマンドを打てばできます。たった一行だけでバックアップが可能です。
 mysqldump -u root -p 0000 –all-databases > hoge.sql
これは、ユーザ:root、パスワード:0000でMySQLに接続して、全データベースのデータをhoge.sqlファイルに保存することになります。

特定のデータベースのみバックアップする時はデータベース名を指定すればできます。
 mysqldump -u root -p 0000 database > hoge.sql

また、構造のみ、データのみのバックアップを行う場合は下記をデータベース名の後ろに追加してください。
 構造のみ: –no-data
 データのみ: –no-create-info

◼︎リストアについて

逆にリストアする時は、mysqlコマンドを使用して次のようにコマンドを打てば簡単にリストアできます。
 mysql -u root -p < hoge.sql

◼︎出力されたバックアップの中身

mysqldumpは格納されているテーブルデータを、そのテーブルを構築する為のSQL文として出力します。
再構成するために必要なSQL文の形で構成されていますので、テキストデータとして確認/修正が行えます。
バックアップは比較的高速ですが、デメリットとして、リストアはSQLを実行するのでかなり時間がかかりますので、データベースサイズが大きい場合は注意が必要です。

リストアにどれほど時間がかかるか不透明なので事前に計測などをしておいて、復旧時にかかる時間の見積もりを行っておくことで、もしもの時に対応しやすくなるのではないでしょうか。

◼︎最後に

デジタルデータは膨大な量の情報が場所を取らずに保存できるというメリットがありますが、ハードウェア障害、ヒューマンエラー、災害等で大量のデータを一瞬にして喪失しかねないデメリットも兼ね備えています。
データを失えば過去に蓄積されてきたあらゆる情報が喪失しますので、大切なデータを失くさない為にデータの保護は真剣に考えなければなりません。

採用情報

クラウドクリエイティブスタジオでは絶賛エンジニア募集中でございます。
ご興味があれば、以下のリンクをご覧くださいませ。
採用情報