GTID機能
MySQL 5.6にバンドルされているmysqldumpユーティリティにset-GTID-purgeオプションを追加するために、ApsaraDB RDS for MySQL 5.6でgtid機能が導入されました。
オプション | フィールドのデフォルト値。 | オプション値 | 目的 |
set-gtid-purped | オート | オン | オフ | AUTO | mysqldump出力に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-tables | FALSE | TRUE | 偽 | すべてのデータベースですべてのテーブルをロックするかどうかを指定します。 これは、ダンプ全体の期間中にグローバル読み取りロックを取得することによって実現されます。 ダンプ中は、すべてのデータベースのすべてのテーブルが読み取り専用です。 このオプションは、ロックテーブルおよび単一トランザクションオプションを自動的に無効にします。 ApsaraDB for RDSはこのオプションをサポートしていません。 |
ロックテーブル | TRUE | TRUE | 偽 | テーブルをダンプする前にロックするかどうかを指定します。 デフォルトでは、このオプションは有効です。 このオプションを無効にするには、skip-lock-tablesオプションを指定します。 |
単一トランザクション | FALSE | TRUE | 偽 | データをダンプする前にトランザクションを開始するかどうかを指定します。 このオプションは、lock-tablesオプションを自動的に無効にします。 |
ダンプするデータの文字セットを设定する
文字セットを指定しない場合、mysqldumpはUTF-8文字セットを使用してデータをダンプします。
オプション | フィールドのデフォルト値。 | オプション値 | 目的 |
default-character-set | UTF8 | ApsaraDB RDS for MySQLインスタンスでサポートされている文字セット | エクスポートの文字セットを設定します。 |
データがダンプされるときに注意する追加オプション
オプション | フィールドのデフォルト値。 | オプション値 | 目的 |
no-デフォルト | N/A | NA | を読み取ります。mylogin.cn fオプションファイルのみ。 |
defaults-file=file_name | N/A | NA | 指定したオプションファイルを読み込みます。 |
add-drop-database | FALSE | TRUE | 偽 | 各CREATE DATABASEステートメントの前にDROP DATABASEステートメントを追加するかどうかを指定します。 |
add-drop-table | TRUE | TRUE | 偽 | 各CREATE TABLEステートメントの前にDROP TABLEステートメントを追加するかどうかを指定します。 デフォルトでは、このオプションは有効です。 このオプションを無効にするには、skip-add-drop-tableオプションを使用できます。 |
add-locks | TRUE | TRUE | 偽 | 各テーブル関連ステートメントをLOCK TABLES tab_name WRITEおよびUNLOCK TABLESステートメントで囲むかどうかを指定します。 これにより、ダンプファイルのリロード時に挿入が高速化されます。 |
compatible=name | NA | ansi | postgresql | オラクル | mssql | 指定されたデータベースタイプとの互換性を強化します。 |
compact | FALSE | TRUE | 偽 | skip-add-drop-table、skip-add-locks、skip-comments、skip-disable-keys、およびskip-set-charsetオプションを有効にするかどうかを指定します。 |
データベース | TRUE | TRUE | 偽 | 複数のデータベースをダンプするかどうかを指定します。 デフォルトでは、mysqldumpはコマンドラインの最初の名前の引数をデータベース名として扱い、次の名前をテーブル名として扱います。 このオプションを指定すると、mysqldumpはすべてのname引数をデータベース名として解釈し、新しい各データベースの前の出力にCREATE databaseステートメントとUSE DATABASEステートメントを含めます。 |
disable-keys | TRUE | TRUE | 偽 | INSERTステートメントを /! で囲むかどうかを指定します。 40000 ALTER TABLE tab_name DISABLE KEYS / と /! ALTER TABLE tab_name ENABLE KEYS / ステートメントを40000して、ダンプファイルの読み込みを高速化します。 このオプションは、MyISAMテーブルの非一意インデックスに対してのみ有効です。 |
events | FALSE | TRUE | 偽 | スケジュールされたイベントをダンプデータベースからダンプするかどうかを指定します。 |
拡張インサート | TRUE | TRUE | 偽 | 単一行のINSERTステートメントを、複数のテーブル行を挿入する単一のステートメントに結合するかどうかを指定します。 |
hex-blob | FALSE | TRUE | 偽 | BINARY、VARBINARY、およびBLOBタイプのデータを16進表記でエクスポートするかどうかを指定します。 異なるデータベースバージョン間でデータを移行する場合は、このオプションを追加することを推奨します。 |
ignore-table=db.tab | TRUE | TRUE | 偽 | テーブルまたはビューを無視するかどうかを指定します。 形式: データベース名。テーブル名 (db.tab) 。 このオプションを複数回使用して、複数のテーブルを無視できます。 |
max-allowed-packet | 24MB | 24MB-1GB | mysqldumpとApsaraDB RDS for MySQLインスタンス間の通信用のバッファの最大サイズを指定します。 デフォルト値は24MBです。 最大値は1GBです。 |
no-create-db | FALSE | TRUE | 偽 | CREATE DATABASEステートメントを出力から除外するかどうかを指定します。 |
no-create-info | FALSE | TRUE | 偽 | CREATE TABLEステートメントを出力から除外するかどうかを指定します。 |
no-データ | FALSE | TRUE | 偽 | ApsaraDB RDS for MySQLデータベースをデータなしでダンプファイルにエクスポートするかどうかを指定します。 |
opt | TRUE | TRUE | 偽 | add-drop-table、add-locks、create-options、disable-keys、extended-insert、lock-tables、quick、およびset-charsetオプションを有効にするかどうかを指定します。 skip-optオプションを指定すると、デフォルトで有効になっているoptオプションを無効にできます。 |
dump-date | TRUE | TRUE | 偽 | commentsオプションが指定されている場合、出力の末尾にダンプの日付を追加するかどうかを指定します。 デフォルトでは、コメントオプションが有効になっています。 |
ルーチン | FALSE | TRUE | 偽 | ダンプされたデータベースからストアドプロシージャと関数をダンプするかどうかを指定します。 デフォルトでは、ストアドプロシージャと関数はダンプされません。 |
結果ファイル | TRUE | TRUE | 偽 | 指定したファイルに直接出力するかどうかを指定します。 |
set-charset | TRUE | TRUE | 偽 | SET NAMES default_character_setを出力に追加するかどうかを指定します。 |
トリガー | TRUE | TRUE | 偽 | 出力にダンプされたテーブルごとにトリガーを含めるかどうかを指定します。 |
apsaradb RDS for MySQLでサポートされていないオプション
オプション | フィールドのデフォルト値。 | オプション値 | 目的 |
すべてのデータベース | FALSE | ApsaraDB RDS for MySQLインスタンスでサポートされている文字セット | mysqlデータベースを含むすべてのデータベースをダンプするかどうかを指定します。 |
flush-logs | FALSE | TRUE | 偽 | ダンプを開始する前に、ApsaraDB RDS for MySQLインスタンスでflush logs; ステートメントを実行するかどうかを指定します。 |
フラッシュ特権 | FALSE | TRUE | 偽 | mysqlデータベースのダンプ後にflush privileges; ステートメントをダンプ出力に追加するかどうかを指定します。 |
lock-all-tables | FALSE | TRUE | 偽 | すべてのデータベースですべてのテーブルをロックするかどうかを指定します。 これは、ダンプ全体の期間中にグローバル読み取りロックを取得することによって実現されます。 ダンプ中は、すべてのデータベースのすべてのテーブルが読み取り専用です。 このオプションは、ロックテーブルおよび単一トランザクションオプションを自動的に無効にします。 |
tab=dir_name | N/A | NA | 指定したディレクトリに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) のアクセスが拒否されました