すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:ApsaraDB RDS for MySQL の mysqldump オプション

最終更新日:Apr 21, 2026

GTID 機能

MySQL 5.6 では、グローバルトランザクション識別子 (GTID) 機能が導入されました。その結果、MySQL 5.6 以降の mysqldump ユーティリティには set-gtid-purged オプションが含まれています。

パラメーター

デフォルト

説明

set-gtid-purged

AUTO

ON|OFF|AUTO

出力に SET @@GLOBAL.GTID_PURGED 文を含めるかどうかを制御します。

説明
  • ONmysqldump の出力に SET @@GLOBAL.GTID_PURGED 文を含めます。

  • OFFmysqldump の出力に SET @@GLOBAL.GTID_PURGED 文を含めません。

  • AUTO:デフォルト値。ソースインスタンスで GTID が有効になっている場合、SET @@GLOBAL.GTID_PURGED 文を含めます。それ以外の場合、GTID 情報は含まれません。

したがって、MySQL 5.6 以降の mysqldump を使用して ApsaraDB RDS for MySQL 5.5 インスタンスからデータをエクスポートする場合は、set-gtid-purgedOFF に設定する必要があります。そうしないと、次のいずれかのエラーが発生します:

Error: Server has GTIDs disabled.
or
mysqldump: Couldn’t execute ‘SELECT @@GTID_MODE’: Unknown system variable ‘GTID_MODE’ <1193>

テーブルレベルロックの待機回避

デフォルトでは、mysqldumplock-tables オプションを有効にします。このオプションは、エクスポートされるテーブルにテーブルレベルロックを適用し、それらに対するデータ操作言語 (DML) 操作をブロックします。

ApsaraDB RDS for MySQL インスタンスでデフォルトでサポートされている InnoDB および TokuDB ストレージエンジンは、どちらもトランザクションをサポートしています。lock-all-tables または lock-tables オプションを使用する代わりに、single-transaction オプションを使用してデータをエクスポートすることを推奨します。

パラメーター

デフォルト

説明

lock-all-tables

FALSE

TRUE|FALSE

エクスポート中にグローバル読み取りロックを取得します。これにより、すべてのデータベースのすべてのテーブルが読み取り専用になります。このオプションは、lock-tables および single-transaction オプションを自動的に無効にします。このオプションは ApsaraDB RDS for MySQL ではサポートされていません。

lock-tables

TRUE

TRUE|FALSE

エクスポート中にエクスポート対象のテーブルをロックします。このオプションはデフォルトで有効になっています。無効にするには、skip-lock-tables オプションを使用します。

single-transaction

FALSE

TRUE|FALSE

単一のトランザクション内でエクスポートを実行します。このオプションは、lock-tables オプションを自動的に無効にします。

エクスポート文字セットの設定

文字セットを指定しない場合、mysqldump はデフォルトで UTF8 を使用します。

パラメーター

デフォルト

説明

default-character-set

UTF8

インスタンスでサポートされている文字セット

エクスポートの文字セットを設定します。

その他のエクスポートオプション

パラメーター

デフォルト

説明

no-defaults

NA

NA

.mylogin.cnf を除き、オプションファイルを読み取りません。

defaults-file=file_name

NA

NA

指定されたオプションファイルのみを読み取ります。

add-drop-database

FALSE

TRUE|FALSE

CREATE DATABASE 文の前に DROP DATABASE 文を追加します。

add-drop-table

TRUE

TRUE|FALSE

CREATE TABLE 文の前に DROP TABLE 文を追加します。このオプションはデフォルトで有効になっています。無効にするには、skip-add-drop-table オプションを使用します。

add-locks

TRUE

TRUE|FALSE

各テーブルダンプを LOCK TABLES 文と UNLOCK TABLES 文で囲みます。これにより、ダンプファイルをリロードする際のデータインポートが高速化されます。

compatible=name

NA

ansi|postgresql|oracle|mssql

指定されたデータベースタイプとの互換性が高い出力を生成します。

compact

FALSE

TRUE|FALSE

skip-add-drop-tableskip-add-locksskip-commentsskip-disable-keys、および skip-set-charset オプションを有効にします。

databases

FALSE

TRUE|FALSE

複数のデータベースをエクスポートします。デフォルトでは、mysqldump は最初の名前引数をデータベース名として扱い、後続の名前をテーブル名として扱います。このオプションを使用すると、mysqldump はすべての名前引数をデータベース名として扱い、各データベースダンプの前に CREATE DATABASE 文と USE 文を追加します。

disable-keys

TRUE

TRUE|FALSE

INSERT 文を/!40000 ALTER TABLE tab_name DISABLE KEYS / 文と/!40000 ALTER TABLE tab_name ENABLE KEYS / 文で囲みます。これにより、データ挿入が高速化されます。このオプションは、MyISAM テーブルの非一意のインデックスに対してのみ有効です。

events

FALSE

TRUE|FALSE

ダンプされたデータベースからスケジュールされたイベントをエクスポートします。

extended-insert

TRUE

TRUE|FALSE

拡張 INSERT 構文を使用して、単一の文で複数の行を書き込みます。

hex-blob

FALSE

TRUE|FALSE

BINARYVARBINARY、および BLOB 列を16進数表記を使用してエクスポートします。異なるバージョン間でデータを移行する場合は、このオプションを使用することを推奨します。

ignore-table=db.tab

NA

NA

指定されたテーブルまたはビューを除外します。フォーマットは db_name.table_name です。このオプションを複数回使用して、複数のテーブルを無視できます。

max-allowed-packet

24 MB

24 MB から 1 GB

クライアントサーバー通信の最大バッファサイズを設定します。デフォルト値は 24 MB です。最大値は 1 GB です。

no-create-db

FALSE

TRUE|FALSE

出力内の CREATE DATABASE 文を抑制します。

no-create-info

FALSE

TRUE|FALSE

出力内の CREATE TABLE 文を抑制します。

no-data

FALSE

TRUE|FALSE

行データを書き込みません。

opt

TRUE

TRUE|FALSE

add-drop-tableadd-lockscreate-optionsdisable-keysextended-insertlock-tablesquick、および set-charset オプションを有効にします。このオプションはデフォルトで有効になっています。無効にするには、skip-opt を使用します。

dump-date

TRUE

TRUE|FALSE

出力の最後にダンプタイムスタンプをコメントとして追加します。これには comments オプションが必要です。このオプションと comments は両方ともデフォルトで有効になっています。

routines

FALSE

TRUE|FALSE

ストアドプロシージャと関数をエクスポートします。このオプションはデフォルトで無効になっています。

result-file

NA

NA

出力を指定されたファイルにリダイレクトします。

set-charset

TRUE

TRUE|FALSE

出力に SET NAMES default_character_set を追加します。

triggers

TRUE

TRUE|FALSE

ダンプされた各テーブルのトリガーをエクスポートします。

サポートされていないオプション

パラメーター

デフォルト

説明

all-databases

FALSE

TRUE|FALSE

mysql データベースを含むすべてのデータベースをエクスポートします。

flush-logs

FALSE

TRUE|FALSE

エクスポートを開始する前にflush logs; コマンドを実行します。

flush-privileges

FALSE

TRUE|FALSE

mysql データベースがエクスポートされた後、出力にflush privileges; コマンドを追加します。

lock-all-tables

FALSE

TRUE|FALSE

エクスポート中にグローバル読み取りロックを取得し、すべてのデータベースのすべてのテーブルを読み取り専用にします。このオプションは、lock-tables および single-transaction オプションを自動的に無効にします。

tab=dir_name

NA

NA

指定されたディレクトリに、tbl_name.sql ファイル (CREATE TABLE 文を含む) とタブ区切りの tbl_name.txt データファイルを生成します。

サポートされていないオプションとその理由

  • all-databases:このオプションはサポートされていません。ApsaraDB RDS for MySQL の標準ユーザーアカウントには、mysql データベース内の一部のテーブルに対する権限がありません。このオプションを使用するとエラーが発生します。

    エラーメッセージ

    
    mysqldump: Couldn’t execute ‘show create table slow_log‘: SHOW command denied to user ‘xxx’@’xx.xx.xx.xx’ for table ‘slow_log’ (1142)
  • flush-logs:このオプションはサポートされていません。ApsaraDB RDS for MySQL の標準ユーザーアカウントには RELOAD 権限がないため、flush logs; コマンドを実行できません。

    エラーメッセージ

    mysqldump: Couldn’t execute ‘FLUSH TABLES’: Access denied; you need (at least one of) the RELOAD privilege(s) for this operation (1227)
  • flush-privileges:ApsaraDB RDS for MySQL は mysql データベースのエクスポートをサポートしていないため、このオプションは不要です。

  • lock-all-tables:このオプションはサポートされていません。ApsaraDB RDS for MySQL の標準ユーザーアカウントには RELOAD 権限がありません。

    エラーメッセージ

    mysqldump: Couldn’t execute ‘FLUSH TABLES’: Access denied; you need (at least one of) the RELOAD privilege(s) for this operation (1227)
  • tab=dir_name:このオプションは、ApsaraDB RDS for MySQL インスタンスをホストする物理マシンと同じマシンで mysqldump を実行する必要があるため、サポートされていません。ただし、このオプションを no-data オプションと組み合わせて使用すると、CREATE TABLE 文を含むファイルを生成できます。

    # このオプションを no-data オプションと組み合わせて使用すると、test データベース内の各テーブルの CREATE TABLE 文を含む tab_name.sql ファイルを取得できます。
    mysqldump  —no-defaults -uuser_name -ppass_word -hxxx.mysql.rds.aliyuncs.com -P3306 —set-gtid-purged=off —single-transaction —tab=/tmp —no-data test
    # --no-data オプションを使用せずにデータをエクスポートした場合に返されるエラーメッセージ:
    mysqldump  —no-defaults -uuser_name -ppass_word -hxxx.mysql.rds.aliyuncs.com -P3306 —set-gtid-purged=off —single-transaction —tab=/tmp test
    mysqldump: Got error: 1045: Access denied for user ‘xxx’@’%’ (using password: YES) when executing ‘SELECT INTO OUTFILE’