[MySQL] MySQL資料庫中唯一識別符號(ID)的梳理總結

千千寰宇發表於2024-10-18

0 引言

  • mysql 資料庫中有各類id,在近期初步研究 flink cdc 、debezium、mysql server id、server uuid、gtid、sesion id/connection id等相關概念後,基本有了一定的認知,趁熱打鐵,記錄總結下來。

概述

server id = debezium BinaryLogClient 的 sid

  • 定義
  • server-id用於標識資料庫叢集例項的節點,防止在鏈式主從、多主多從拓撲中導致SQL語句的無限迴圈
  • 配置、檢視、使用
  • [資料庫] 淺談mysql的serverId/serverUuid - 部落格園/千千寰宇

server uuid

  • 定義
  • server-uuid引數並不能取代server-id,他們有不同的作用。當主從同步時,如果主從例項的server-uuid相同會報錯退出
  • server-uuid 與 gtid 的關係 : gtid = {server-uuid}:{transaction-id}
  • 配置、檢視、使用
  • [資料庫] 淺談mysql的serverId/serverUuid - 部落格園/千千寰宇

transaction id = Xid = 事務ID

gtid = {server uuid}:{transaction id}

  • 定義
  • GTID,又叫全域性事務ID(Global Transaction ID)
  • 用於取代過去傳統的主從複製(即:基於binlog和position的非同步複製)。
  • 檢視、使用
  • [資料庫] MYSQL之binlog概述 - 部落格園/千千寰宇

connection id = information_schema.processlist.id = session id = debezium BinaryLogClient 的 cid = debezium BinaryLogClient 的 thread id

  • 定義
  • 資料庫連線ID(connection id) = 會話ID(session id)
  • = information_schema.processlist.id
  • = debezium BinaryLogClient 的 cid
  • = debezium BinaryLogClient 的 thread id
> select connection_id() as session;
45730

> SELECT * FROM information_schema.processlist limit 10;
+-------+--------+-----------------------+---------------+---------+------+-------+------+
| ID    | USER   | HOST                  | DB            | COMMAND | TIME | STATE | INFO |
+-------+--------+-----------------------+---------------+---------+------+-------+------+
| 45730 | kkuser | 192.168.0.2:50753   | landray_kk_db | Sleep   |    2 |       | NULL |
...
  • 檢視、使用
  • 使用SHOW PROCESSLIST命令 | [資料庫] 排查MySQL鎖表情況及解決思路 - 部落格園/千千寰宇

Y 推薦文獻

  • [資料庫] 淺談mysql的serverId/serverUuid - 部落格園/千千寰宇
  • 試驗 : Flink CDC 監聽 mysql 表的資料增量同步 - 部落格園/千千寰宇
  • [資料庫] MYSQL之binlog概述 - 部落格園/千千寰宇

X 參考文獻

  • MySQL8.x 中 performance_schema 下 processlist表的說明 - 部落格園

相關文章