第36回:Oracle Database技術者向けMySQL超入門-バックアップ・リストア編

技術者向け・データベースの技術情報発信

「Oracle Database技術者向けMySQL超入門」シリーズでは、MySQLの機能について、Oracle Databaseと比較しながらご紹介します。

前回の「ユーザー作成・権限付与編」に続き、今回は、データベースの論理バックアップ・リストアの方法についてご説明します。

1.Oracleのデータのバックアップ(expdp)

①データベース全体をバックアップ

$ EXPDP <ユーザー名>/<パスワード>@<接続文字列> DIRECTORY=<出力先ディレクトリ> DUMPFILE=<バックアップファイル名> LOGFILE=<ログファイル名> FULL=Y 

②特定の表領域をバックアップ

$ EXPDP <ユーザー名>/<パスワード>@<接続文字列> DIRECTORY=<出力先ディレクトリ> DUMPFILE=<バックアップファイル名> LOGFILE=<ログファイル名> TABLESPACES=<表領域名> 

③特定のテーブルをバックアップ

$ EXPDP <ユーザー名>/<パスワード>@<接続文字列> DIRECTORY=<出力先ディレクトリ> DUMPFILE=<バックアップファイル名> LOGFILE=<ログファイル名> TABLES=<テーブル名> 

④特定のスキーマをバックアップ

$ EXPDP <ユーザー名>/<パスワード>@<接続文字列> DIRECTORY=<出力先ディレクトリ> DUMPFILE=<バックアップファイル名> LOGFILE=<ログファイル名> SCHEMAS=<スキーマ名> 

上記で使用しているオプションを含め、よく使用するオプションを紹介します。

  • directory バックアップファイルやログファイルの出力先を指定します。
  • dumpfile バックアップファイルのファイル名を指定します。デフォルトの拡張子は「.dmp」です。
  • logfile ログファイル名を指定します。ログファイルには、処理中の作業および完了した作業、発生したエラーに関するメッセージが書き込まれます。
  • content バックアップするデータを「データのみ」、「メタデータのみ」、「データおよびメタデータ」のいずれかに指定できます。
    data_only:データのみ
    metadata_only:メタデータのみ
    all:データおよびメタデータ(デフォルト)

2.MySQLのデータのバックアップ(mysqldump)

①データベース全体をバックアップ

$ mysqldump -u <ユーザー名> -p -h <ホスト名> --all-databases > <バックアップファイル名(フルパス)> 

②特定のデータベースをバックアップ

$ mysqldump -u <ユーザー名> -p -h <ホスト名> --databases <データベース名> [<データベース名2> ...] > <バックアップファイル名(フルパス)> 

③特定のテーブルをバックアップ

$ mysqldump -u <ユーザー名> -p -h <ホスト名> <テーブル名>[<テーブル名2> ...] > <バックアップファイル名(フルパス)> 

上記で使用しているオプションを含め、よく使用するオプションを紹介します。

  • –all-databases(-A):すべてのデータベース内のすべてのテーブルをバックアップ対象に指定します。
  • –databases(-B) 1~:複数のデータベースをバックアップ対象に指定します。
  • –no-data(-d):「メタデータのみ」バックアップ対象とします。
  • –single-transaction:内部的にスナップショットを取って、DBをロックせずに整合性の取れたダンプを取ります。

3.Oracleのデータのリストア(impdp)

①データベース全体をリストア

$ IMPDP <ユーザー名>/<パスワード>@<接続文字列> DIRECTORY=<バックアップファイル格納先ディレクトリ> DUMPFILE=<バックアップファイル名> LOGFILE=<ログファイル名> FULL=Y 

②特定の表領域をリストア

$ IMPDP <ユーザー名>/<パスワード>@<接続文字列> DIRECTORY=<バックアップファイル格納先ディレクトリ> DUMPFILE=<バックアップファイル名> LOGFILE=<ログファイル名> TABLESPACES=<表領域名> 

③特定のテーブルをリストア

$ IMPDP <ユーザー名>/<パスワード>@<接続文字列> DIRECTORY=<バックアップファイル格納先ディレクトリ> DUMPFILE=<バックアップファイル名> LOGFILE=<ログファイル名> TABLES=<テーブル名> 

④特定のスキーマをリストア

$ IMPDP <ユーザー名>/<パスワード>@<接続文字列> DIRECTORY=<バックアップファイル格納先ディレクトリ> DUMPFILE=<バックアップファイル名> LOGFILE=<ログファイル名> SCHEMAS=<スキーマ名> 

よく使用するオプションについては、「1.Oracleのデータのバックアップ(expdp)」と同様です。

4.MySQLのデータのリストア(mysqldump)

①データベース全体をリストア

$ mysqldump -u <ユーザー名> -p -h <ホスト名> < <バックアップファイル名(フルパス)> 

②特定のデータベースをリストア

$ mysqldump -u <ユーザ名ー> -p -h <ホスト名> <データベース名> < <バックアップファイル名(フルパス)> 

※特定のテーブルへリストアも同様のコマンドを使用します。

よく使用するオプションについては、「2. MySQLのデータのバックアップ(mysqldump)」と同様です。

5.最後に

今回はそれぞれの代表的なバックアップ・リストア方法についてご紹介しました。

今回紹介したコマンドは、データ移行時にも使用できるコマンドで、多数のオプションが存在します。
オプションを学ぶことで、各種細かい設定を行うことが可能となるので、必要に応じて本ブログに記載されていないオプションも確認してみてください。