mydumperの '' --use-savepoints "オプションはメタデータのロックをどのように減らしますか


8

MyDumper 0.6.1は新しいオプションを追加します--use-savepoints。マニュアルから、それは意味します:

セーブポイントを使用してメタデータのロックの問題を軽減します。SUPER権限が必要です

分からない。「メタデータのロックの問題を軽減する」方法と、「SUPER特権」が必要な理由 私が思うに、メタデータは他のDDL変更テーブル構造を防ぐために不可欠です。

回答:


3

この質問に対する答えを見つけるには、mydumperのソースコードを少し掘り下げる必要がありました。mydumperの実際のソースコードを見ると:

次の行は、プロセスキューの一部として415行目から始まります。

if(use_savepoints && mysql_query(thrconn, "SET SQL_LOG_BIN = 0")){
    g_critical("Failed to disable binlog for the thread: %s",mysql_error(thrconn));
    exit(EXIT_FAILURE);
}

これは、mydumperで--use-savepointsを使用するには、MySQL binログをオフにする機能が必要であることを示しています。MySQLをベースDBMSとして使用している自分のMariaDBサーバーでこれを試行し、非管理者アカウントを使用すると次のエラーが発生しました。

MariaDB [(なし)]> SET SQL_LOG_BIN = 0; エラー1227(42000):アクセスが拒否されました。この操作には(少なくとも1つの)SUPER特権が必要です

実際のコードを読んで自分のMySQLサーバーでこの条件をテストしていたことから、mydumperは実行中にbinlogへのロギングを無効にするため、「SUPER特権」が必要であることを理解しています。これは、ドキュメントで言及されているSUPERの「ロギングの有効化または無効化」機能の一部です。

binlogのより具体的な情報はここにあります:

http://dev.mysql.com/doc/refman/5.6/en/set-sql-log-bin.html

セーブポイントに関する限り:

http://dev.mysql.com/doc/refman/5.6/en/savepoint.html

マニュアルとこのバグレポートを読んだ後、セーブポイントが解放されると、作業中のテーブルのロックが解除され、MySQL 5.5と同様にmysqldumpで見られたロックの問題を防ぐことができるようになります。

これにより、mydumperツールについてもう少し洞察が得られることを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.