web-dev-qa-db-ja.com

mysql gtid_executedおよびgtid_purged変数

gtid_executedおよびgtid_purged変数はデータベースエンジンに格納されます。これらが単なるランタイム変数の場合、どのように正確に初期化されますか?

2
Jeff

特定のストレージエンジンの一部ではありません。 GTID変数は、次のコマンドを実行して確認できます。

SHOW GLOBAL VARIABLES LIKE 'gtid%';

または

SELECT * FROM information_schema.global_variables
WHERE variable_name LIKE 'gtid%';

DBサーバーでRESET MASTERを実行すると、これらの値は空白になります。

MySQLドキュメント について gtid_executed

RESET MASTERを発行すると、この変数のグローバル値(セッション値ではない)が空の文字列にリセットされます。 GTIDは、RESET MASTERによってセットがクリアされた場合を除いて、このセットから削除されません。サーバーがシャットダウンされ、すべてのバイナリログが削除された場合も、セットは消去されます。

MySQLドキュメント について gtid_purged について

RESET MASTERを発行すると、この変数の値が空の文字列にリセットされます。

SQLステートメントが実行されると、 gtid_executed がGTIDセット値で更新されます。

MySQLドキュメント について gtid_executed

サーバーが起動すると、@@ global.gtid_executedは次の2つのセットの和集合に初期化されます。

  • 最新のバイナリログのPrevious_gtids_log_eventにリストされているGTID

  • 最新のバイナリログのすべてのGtid_log_eventで見つかったGTID。

その後、トランザクションが実行されると、GTIDがセットに追加されます。

gtid_purged は、空白の場合にのみ設定できます。通常、この変数は、ソースでGTIDが有効になっているmysqldumpのリロード中に設定されます。

2
RolandoMySQLDBA
  1. ここから始める必要があります: MySQLソースコードのガイド付きツアー
  2. 次に、MySQLソースコードで GitHub を検索して、gtid_executedおよびgtid_purgedを検索します。

あなたはおそらくいくつかの掘り下げを行う必要がありますが、それは私が行きたかった限りでは、幸運です。

0
Dave