Categories: データベース

【保存版】mysqldumpの使い方完全ガイド|バックアップ・復元・オプション解説

MySQLデータベースのバックアップといえば「mysqldump」コマンドが定番です。
サーバーのトラブルや移行作業に備えて、mysqldumpの使い方をしっかりと理解しておくことは、インフラや開発に携わるエンジニアにとって必須の知識といえるでしょう。

本記事では、mysqldumpの基本的な使い方から便利なオプション、復元方法、注意点までを網羅的に解説します。
MySQL初心者の方にもわかりやすいように、実行例やコマンドの意味も丁寧に紹介していきます。


mysqldumpとは?役割と基本機能の理解

mysqldumpは、MySQLに付属するコマンドラインツールで、データベースの内容をSQL形式でエクスポート(書き出し)するために使用されます。
エクスポートされたファイルは、同じMySQL環境または別のサーバーにインポート(復元)することで、データベースを再構築できます。

用途としては主に以下のような場面で使われます。

  • サーバー障害に備えたバックアップ
  • サーバーやホスティング移行時のデータ移行
  • バージョンアップ前のバックアップ取得
  • テスト環境へのデータコピー

基本的なmysqldumpの使い方

mysqldumpは非常にシンプルに使えます。以下は最も基本的な使い方の一例です。

mysqldump -u ユーザー名 -p データベース名 > backup.sql

各オプションの意味

  • -u:MySQLユーザー名を指定
  • -p:パスワード入力を促す(実行後に入力)
  • データベース名:バックアップ対象のDB名
  • > backup.sql:エクスポート先ファイルを指定

特定のテーブルだけをダンプする

特定のテーブルだけバックアップしたい場合は、テーブル名を指定します。

mysqldump -u ユーザー名 -p データベース名 テーブル1 テーブル2 > table_backup.sql

たとえば、usersordersテーブルだけをバックアップしたい場合はこのようになります。


複数のデータベースをバックアップする方法

複数のDBを1つのファイルにまとめてバックアップするには、--databasesオプションを使います。

mysqldump -u ユーザー名 -p --databases db1 db2 db3 > multi_backup.sql

MySQL全体をバックアップする(すべてのDB)

MySQLサーバー上のすべてのデータベースをバックアップするには、--all-databasesオプションを使用します。

mysqldump -u ユーザー名 -p --all-databases > all_backup.sql

ストアドプロシージャやトリガーも含めるには

MySQLにはストアドプロシージャやトリガーが含まれている場合があります。
これらもバックアップしたいときは以下のオプションをつけます。

mysqldump -u ユーザー名 -p --routines --triggers データベース名 > full_backup.sql

バックアップファイルをgzip圧縮する

バックアップファイルのサイズが大きくなる場合、gzipで圧縮すると効率的です。

mysqldump -u ユーザー名 -p データベース名 | gzip > backup.sql.gz


gunzip < backup.sql.gz | mysql -u ユーザー名 -p データベース名

バックアップの復元方法(インポート)

エクスポートしたSQLファイルを使って復元するには、以下のようにします。

mysql -u ユーザー名 -p データベース名 < backup.sql

復元先のデータベースは事前に作成しておく必要があります。
以下のようにして作成します。

mysql -u ユーザー名 -p
CREATE DATABASE データベース名;
EXIT;

自動バックアップのスクリプト例(cron対応)

日次で自動バックアップを取りたい場合は、以下のようなスクリプトを作ってcronで定期実行できます。

#!/bin/bash

DATE=$(date +%Y-%m-%d)
USER="your_user"
PASSWORD="your_password"
DBNAME="your_database"
BACKUP_DIR="/var/backups/mysql"

mkdir -p $BACKUP_DIR
mysqldump -u $USER -p$PASSWORD $DBNAME | gzip > $BACKUP_DIR/${DBNAME}_$DATE.sql.gz

cronで毎日深夜1時に実行したい場合:

0 1 * * * /path/to/backup.sh

mysqldumpを使う際の注意点

  • ロックに注意:mysqldumpは--single-transactionを付けないとテーブルをロックします(InnoDB以外)
  • パスワードを平文で使わない:スクリプトに埋め込むときは.my.cnfに設定するとセキュアです
  • mysqldumpのバージョンとMySQLサーバーの互換性に注意

まとめ:mysqldumpはシンプルで強力なバックアップツール

mysqldumpはMySQLを扱う現場で非常に多く使われているツールです。
バックアップも復元も、基本的なコマンドを押さえておけば安心して扱えます。

トラブルが起きてからでは遅いので、日頃からmysqldumpでバックアップを取る習慣をつけておきましょう。
また、バックアップ後は定期的に復元テストも行うことで、確実な運用につながります。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。