NDB 8.0.16 以降、NDB
の自動同期は NDB Cluster 内部ディクショナリと MySQL Server データディクショナリの間のメタデータのすべての不一致を自動的に検出して同期しようとします。 これは、ndb_metadata_check
を使用して無効にしたり、ndb_metadata_sync
を設定してオーバーライドしたりしないかぎり、デフォルトで ndb_metadata_check_interval
システム変数によって決定される一定の間隔でバックグラウンドで実行されます。 NDB 8.0.21 より前は、このプロセスに関してユーザーがすぐにアクセスできる情報は、ステータス変数 Ndb_metadata_detected_count
、Ndb_metadata_synced_count
、および Ndb_metadata_excluded_count
(NDB 8.0.22 より前) として使用可能なロギングメッセージとオブジェクト数の形式のみで利用可能でした (NDB 8.0.18 から)、(ステータス変数 Ndb_metadata_detected_count
、Ndb_metadata_synced_count
、および Ndb_metadata_excluded_count
) (NDB 8.0.22 以前、この変数は Ndb_metadata_blacklist_size
という名前でした)。 NDB 8.0.21 以降、自動同期の現在の状態に関するより詳細な情報は、NDB クラスタ内で次の 2 つの「パフォーマンススキーマ」テーブルで SQL ノードとして機能する MySQL サーバーによって公開されます:
ndb_sync_pending_objects
:NDB
ディクショナリと MySQL データディクショナリの間で不一致が検出されたNDB
データベースオブジェクトに関する情報を表示します。 このようなオブジェクトを同期しようとすると、NDB
は同期を待機しているキューおよびこのテーブルからオブジェクトを削除し、不一致の調整を試みます。 一時エラーのためにオブジェクトの同期が失敗した場合、次回NDB
が不一致検出を実行したときに、オブジェクトが取得されてキュー (およびこのテーブル) に追加されます。永続エラーのために試行が失敗した場合、オブジェクトはndb_sync_excluded_objects
テーブルに追加されます。ndb_sync_excluded_objects
: 不一致による永続的エラーのために自動同期が失敗したNDB
データベースオブジェクトに関する情報を表示します。これらのオブジェクトは手動操作なしではリコンサイルできません。これらのオブジェクトはブロックされ、これが完了するまで不一致検出のために再度考慮されません。
ndb_sync_pending_objects
および ndb_sync_excluded_objects
テーブルは、MySQL で NDBCLUSTER
ストレージエンジンのサポートが有効になっている場合にのみ存在します。
これらのテーブルについては、次の 2 つのセクションで詳しく説明します。