mysqldumpとは?MySQLデータベースの論理バックアップを徹底解説
mysqldumpは、MySQLに標準で付属するクライアントユーティリティで、データベースの論理バックアップを行うためのツールです。実行すると、元のデータベースオブジェクト定義(テーブル構造など)とテーブルデータを再現できる一連のSQL文が出力されます。このSQL文を別のサーバーで実行すれば、元の状態をそのまま復元できます。
mysqldumpの主な用途と特徴
1つまたは複数のMySQLデータベースをダンプし、バックアップや他のSQLサーバーへの移行に利用できます。
出力形式はSQL文のほか、CSVやタブ区切りなどの区切りテキスト、XML形式にも対応しています。
mysqldumpを実行するには、ダンプ対象のテーブルに対するSELECT権限、ビューにはSHOW VIEW権限、トリガーにはTRIGGER権限が必要です。また、
--single-transactionオプションを使用しない場合はLOCK TABLES権限、--no-tablespacesオプションを使用しない場合はPROCESS権限も必要になります。開発作業やDBA業務のために既存データベースの複製を作成したり、テスト目的で既存データベースを少し変更したバリエーションを作成したりすることにも活用できます。
大規模なバックアップ・リストアの場合
大規模なバックアップとリストアが頻繁に行われる環境では、論理バックアップよりも物理バックアップが推奨されます。物理バックアップではデータファイルを元のフォーマットのままコピーするため、高速なリストアが可能です。
テーブルが主にInnoDBの場合、あるいはInnoDBとMyISAMが混在している場合は、MySQL Enterprise Backup製品のmysqlbackupコマンドを使用します。InnoDBのバックアップにおいて最高のパフォーマンスを発揮し、稼働中のシステムへの影響も最小限に抑えられます。
ダンプ方式:行単位と一括読み込み
mysqldumpは、テーブルの内容を1行ずつ取得してダンプする方法と、テーブル全体の内容を一度に取得してメモリ上にバッファリングしてからダンプする方法の2通りで動作します。デフォルトでは行単位での取得が行われ、メモリ消費を抑えられます。
mysqldumpの構文
mysqldumpの使い方は大きく分けて3種類あります。「1つ以上のテーブルをダンプする」「1つ以上のデータベース全体をダンプする」「MySQLサーバー全体をダンプする」の3つです。それぞれ以下のように実行します。
shell> mysqldump [options] db_name [tbl_name ...] shell> mysqldump [options] --databases db_name ... shell> mysqldump [options] --all-databases
データベース全体をダンプしたい場合は、db_nameの後にテーブル名を指定せず、--databasesオプションまたは--all-databasesオプションを使用する必要があります。--databasesは指定した複数のデータベースを、--all-databasesはサーバー上のすべてのデータベースを対象とします。
-
MySQL Workbenchを使ったMySQLデータベースのバックアップ方法を徹底解説
MySQL Workbenchでデータベースをバックアップする手順MySQLデータベースのバックアップを作成するには、まずMySQL Workbenchをインストールする必要があります。以下の公式リンクから、お使いの環境に合ったインストーラーをダウンロードしてインストールしてください。https://dev.mysql.com/downloads/windows/installer/8.0.html1. MySQL Workbenchを起動し「Data Export」を選択インストールが正常に完了したら、MySQL Workbenchを開きます。画面上部のメニューから「Data Export(
-
MySQLでデータベース内のテーブル数を表示するクエリの書き方
INFORMATION_SCHEMA.TABLESを使ってテーブル数を取得するここでは例として、「WEB」というデータベースを使用しているものとします。このデータベース内に存在するテーブルの総数を調べたい場合、MySQLではINFORMATION_SCHEMA.TABLESを利用するのが便利です。INFORMATION_SCHEMAは、MySQLサーバーが管理しているメタデータ(データベース名、テーブル名、カラム情報など)を格納する仮想データベースであり、これを参照することでスキーマに関する情報をSQLで簡単に取得できます。テーブル数を表示するクエリ「WEB」データベース内のテーブル数を表示す