2

pt-online-schema-changeを使用してRDSDBテーブルの2列に一意のインデックスを追加しようとしましたが、次のようなエラーで失敗しました。

DBD::mysql::db do failed: Access denied; you need (at least one of) the SUPER privilege(s) for this operation [for Statement "SET SQL_LOG_BIN=0"] at /usr/bin/pt-online-schema-change line 4663.

しかし、oak-online-alter-tableを使用すると、私のテーブルが変更されます。手順は完了していませんが、エラーは表示されず、出力は次のようになります。

...
-- Copying range (1230004), (1231683), progress: 24%

これらのツールは、テーブルを変更するためのさまざまなアプローチを実装していますか?

4

1 に答える 1

3

この場合、本当に心配することは何もありません。

SUPER特権に関するMySQLドキュメントによると

SUPER特権により、アカウントはCHANGE MASTER TO、KILL、またはmysqladmin killを使用して、他のアカウントに属するスレッドを強制終了でき(いつでも独自のスレッドを強制終了できます)、バイナリログをパージし、SETGLOBALを使用して構成を変更してグローバルシステム変数を変更できます。mysqladmin debugコマンド、ログの有効化または無効化、read_onlyシステム変数が有効になっている場合でも更新の実行、スレーブサーバーでのレプリケーションの開始と停止、保存されたプログラムとビューのDEFINER属性でのアカウントの指定、および接続(1回)を可能にするmax_connectionsシステム変数によって制御される接続制限に達した場合。

バイナリロギングが有効になっている場合にストアド関数を作成または変更するには、18.7項「ストアドプログラムのバイナリロギング」で説明されているように、SUPER特権も必要になる場合があります。

DBセッションでステートメントのバイナリロギングを無効にするには、SUPER特権が必要です。

実際、上のドキュメントによるとpt-online-schema-change

--bin-log

バイナリロギングを許可します(SETSQL_LOG_BIN = 1)。ほとんどの場合、-tmp-tableを複製する必要がないため、デフォルトではバイナリロギングはオフになっています。また、レプリケーション環境でオンラインスキーマ変更を実行するには、慎重な計画が必要です。そうしないと、レプリケーションが破損する可能性があります。「複製」を参照してください。

このことから、これはpt-online-schema-changeの実際の正常な動作であると結論付けることができます。デフォルトでは、セッションでバイナリロギングを無効にしようとしました。

おすすめ

pt-online-schema-changeroot@localhostとして実行してみてください。そのユーザーはすべての特権をアクティブにする必要があります。

于 2012-02-16T16:10:00.013 に答える