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

ApsaraDB RDS:RDS MySQL mysqldumpオプション

最終更新日:Jan 23, 2024

GTID機能

MySQL 5.6にバンドルされているmysqldumpユーティリティにset-GTID-purgeオプションを追加するために、ApsaraDB RDS for MySQL 5.6でgtid機能が導入されました。

オプションフィールドのデフォルト値。オプション値目的
set-gtid-purpedオートオン | オフ | AUTOmysqldump出力にSET @ @ GLOBAL.GTID_PURGEDステートメントを含めるかどうかを指定します。
説明
  • ON: mysqldump出力にSET @ @ GLOBAL.GTID_PURGEDステートメントが含まれます。
  • OFF: SET @ @ GLOBAL.GTID_PURGEDステートメントはmysqldump出力に含まれません。
  • AUTO: デフォルト値。 GTIDが有効なインスタンスの場合、SET @ @ GLOBAL.GTID_PURGEDステートメントがmysqldump出力に含まれます。 起動されていない、またはGTIDをサポートしていないインスタンスの場合、GTID情報は生成されません。
MySQL 5.6以降のバージョンのmysqldumpを使用してRDS MySQL 5.5バージョンのインスタンスにデータをエクスポートする場合は、set-gtid-purgeをOFFに設定する必要があります。 それ以外の場合、次のエラーが発生します:
エラー: サーバーでGTIDが無効になります。
または
mysqldump: 'SELECT @ @ GTID_MODE 'を実行できませんでした: 不明なシステム変数 'GTID_MODE' <1193> 

テーブルレベルのロック待機を避ける

mysqldumpでは、lock-tablesオプションがデフォルトで有効になっており、すべてのテーブルをダンプする前にロックし、これらのテーブルに対するDML操作を防止します。

apsaradb RDS for MySQLインスタンスでサポートされているInnoDBおよびTokuDBエンジンは、トランザクションをサポートしています。 テーブルをダンプするには、lock-all-tablesまたはlock-tablesオプションを設定するのではなく、single-transactionオプションを使用することを推奨します。

オプションフィールドのデフォルト値。オプション値目的
lock-all-tablesFALSETRUE | 偽すべてのデータベースですべてのテーブルをロックするかどうかを指定します。 これは、ダンプ全体の期間中にグローバル読み取りロックを取得することによって実現されます。 ダンプ中は、すべてのデータベースのすべてのテーブルが読み取り専用です。 このオプションは、ロックテーブルおよび単一トランザクションオプションを自動的に無効にします。 ApsaraDB for RDSはこのオプションをサポートしていません。
ロックテーブルTRUETRUE | 偽テーブルをダンプする前にロックするかどうかを指定します。 デフォルトでは、このオプションは有効です。 このオプションを無効にするには、skip-lock-tablesオプションを指定します。
単一トランザクションFALSETRUE | 偽データをダンプする前にトランザクションを開始するかどうかを指定します。 このオプションは、lock-tablesオプションを自動的に無効にします。

ダンプするデータの文字セットを设定する

文字セットを指定しない場合、mysqldumpはUTF-8文字セットを使用してデータをダンプします。

オプションフィールドのデフォルト値。オプション値目的
default-character-setUTF8ApsaraDB RDS for MySQLインスタンスでサポートされている文字セットエクスポートの文字セットを設定します。

データがダンプされるときに注意する追加オプション

オプションフィールドのデフォルト値。オプション値目的
no-デフォルトN/ANAを読み取ります。mylogin.cn fオプションファイルのみ。
defaults-file=file_nameN/ANA指定したオプションファイルを読み込みます。
add-drop-databaseFALSETRUE | 偽各CREATE DATABASEステートメントの前にDROP DATABASEステートメントを追加するかどうかを指定します。
add-drop-tableTRUETRUE | 偽各CREATE TABLEステートメントの前にDROP TABLEステートメントを追加するかどうかを指定します。 デフォルトでは、このオプションは有効です。 このオプションを無効にするには、skip-add-drop-tableオプションを使用できます。
add-locksTRUETRUE | 偽各テーブル関連ステートメントをLOCK TABLES tab_name WRITEおよびUNLOCK TABLESステートメントで囲むかどうかを指定します。 これにより、ダンプファイルのリロード時に挿入が高速化されます。
compatible=nameNAansi | postgresql | オラクル | mssql指定されたデータベースタイプとの互換性を強化します。
compactFALSETRUE | 偽skip-add-drop-table、skip-add-locks、skip-comments、skip-disable-keys、およびskip-set-charsetオプションを有効にするかどうかを指定します。
データベースTRUETRUE | 偽複数のデータベースをダンプするかどうかを指定します。 デフォルトでは、mysqldumpはコマンドラインの最初の名前の引数をデータベース名として扱い、次の名前をテーブル名として扱います。 このオプションを指定すると、mysqldumpはすべてのname引数をデータベース名として解釈し、新しい各データベースの前の出力にCREATE databaseステートメントとUSE DATABASEステートメントを含めます。
disable-keysTRUETRUE | 偽INSERTステートメントを /! で囲むかどうかを指定します。 40000 ALTER TABLE tab_name DISABLE KEYS //! ALTER TABLE tab_name ENABLE KEYS /ステートメントを40000して、ダンプファイルの読み込みを高速化します。 このオプションは、MyISAMテーブルの非一意インデックスに対してのみ有効です。
eventsFALSETRUE | 偽スケジュールされたイベントをダンプデータベースからダンプするかどうかを指定します。
拡張インサートTRUETRUE | 偽単一行のINSERTステートメントを、複数のテーブル行を挿入する単一のステートメントに結合するかどうかを指定します。
hex-blobFALSETRUE | 偽BINARY、VARBINARY、およびBLOBタイプのデータを16進表記でエクスポートするかどうかを指定します。 異なるデータベースバージョン間でデータを移行する場合は、このオプションを追加することを推奨します。
ignore-table=db.tabTRUETRUE | 偽テーブルまたはビューを無視するかどうかを指定します。 形式: データベース名。テーブル名 (db.tab) 。 このオプションを複数回使用して、複数のテーブルを無視できます。
max-allowed-packet24MB24MB-1GBmysqldumpとApsaraDB RDS for MySQLインスタンス間の通信用のバッファの最大サイズを指定します。 デフォルト値は24MBです。 最大値は1GBです。
no-create-dbFALSETRUE | 偽CREATE DATABASEステートメントを出力から除外するかどうかを指定します。
no-create-infoFALSETRUE | 偽CREATE TABLEステートメントを出力から除外するかどうかを指定します。
no-データFALSETRUE | 偽ApsaraDB RDS for MySQLデータベースをデータなしでダンプファイルにエクスポートするかどうかを指定します。
optTRUETRUE | 偽add-drop-table、add-locks、create-options、disable-keys、extended-insert、lock-tables、quick、およびset-charsetオプションを有効にするかどうかを指定します。 skip-optオプションを指定すると、デフォルトで有効になっているoptオプションを無効にできます。
dump-dateTRUETRUE | 偽commentsオプションが指定されている場合、出力の末尾にダンプの日付を追加するかどうかを指定します。 デフォルトでは、コメントオプションが有効になっています。
ルーチンFALSETRUE | 偽ダンプされたデータベースからストアドプロシージャと関数をダンプするかどうかを指定します。 デフォルトでは、ストアドプロシージャと関数はダンプされません。
結果ファイルTRUETRUE | 偽指定したファイルに直接出力するかどうかを指定します。
set-charsetTRUETRUE | 偽SET NAMES default_character_setを出力に追加するかどうかを指定します。
トリガーTRUETRUE | 偽出力にダンプされたテーブルごとにトリガーを含めるかどうかを指定します。

apsaradb RDS for MySQLでサポートされていないオプション

オプションフィールドのデフォルト値。オプション値目的
すべてのデータベースFALSEApsaraDB RDS for MySQLインスタンスでサポートされている文字セットmysqlデータベースを含むすべてのデータベースをダンプするかどうかを指定します。
flush-logsFALSETRUE | 偽ダンプを開始する前に、ApsaraDB RDS for MySQLインスタンスでflush logs; ステートメントを実行するかどうかを指定します。
フラッシュ特権FALSETRUE | 偽mysqlデータベースのダンプ後にflush privileges; ステートメントをダンプ出力に追加するかどうかを指定します。
lock-all-tablesFALSETRUE | 偽すべてのデータベースですべてのテーブルをロックするかどうかを指定します。 これは、ダンプ全体の期間中にグローバル読み取りロックを取得することによって実現されます。 ダンプ中は、すべてのデータベースのすべてのテーブルが読み取り専用です。 このオプションは、ロックテーブルおよび単一トランザクションオプションを自動的に無効にします。
tab=dir_nameN/ANA指定したディレクトリにtbl_name.sqlファイル (テーブル作成文を含む) とtbl_name.txtテキスト形式のデータファイルがタブで区切られて生成されます。

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

  • all-databases:RDS MySQLの共通ユーザーは、mysqlデータベースの一部のテーブルに対する権限を持っていないため、すべてのデータベーステーブルをエクスポートできません。

    エラーメッセージ

    
    mysqldump: 'show create table slow_log 'を実行できませんでした: SHOWコマンドがユーザー 'xxx' に拒否されました @ 'xx.xx.xx.xx' テーブル 'slow_log' (1142) 
  • flush-logs: RDS MySQL共通ユーザーにはリロード権限がないため、実行できません。 flush logs; コマンド。

    エラーメッセージ

    mysqldump: 'FLUSH TABLES' を実行できませんでした。アクセスが拒否されました。この操作 (1227) のRELOAD特権が必要です。
  • flush-privileges: apsaradb RDS for MySQLではmysqlデータベースをエクスポートできないため、このオプションは不要です。
  • lock-all-tables:RDS MySQL共通ユーザーにはリロード権限がないため、使用できません。

    エラーメッセージ

    mysqldump: 'FLUSH TABLES' を実行できませんでした。アクセスが拒否されました。この操作 (1227) のRELOAD特権が必要です。
  • tab=dir_name: mysqldumpとapsaradb RDS for MySQLインスタンスは同じ物理マシン上にあるため、このオプションはサポートされていません。 ただし、このオプションをno-dataオプションと一緒に使用して、テーブルを作成するCREATE TABLEステートメントを取得できます。
    # このオプションをno-dataオプションと共に使用すると、テストデータベースの各テーブルのCREATE TABLEステートメントを含むtab_name.sqlファイルを取得できます。
    mysqldump -no-defaults -uuser_name -ppass_word -hxxx.mysql.rds.aliyuncs.com -P3306 -set-gtid-purge=off -single-transaction -tab=/tmp-データテストなし
    # no-dataオプションを使用してデータをダンプすると、次のエラーメッセージが表示されます。mysqldump -no-defaults -uuser_name -ppass_word -hxxx.mysql.rds.aliyuncs.com -P3306 -set-gtid-purge=off -single-transaction -tab=/tmp test
    mysqldump: エラーが発生しました: 1045: 「SELECT INTO OUTFILE」を実行すると、ユーザー 'xxx' @ '%' (パスワードを使用: YES) のアクセスが拒否されました