有没有一种方法可以主动获取最新的MariaDB GTID,而无需不断查询服务器?

vyswwuz2  于 2023-06-22  发布在  其他
关注(0)|答案(1)|浏览(147)

建立了基于GTID的主从复制系统。我想得到最新的GTID的主或从,我知道GTID的方式通过显示变量,如'%gtid %',但这种方式需要不断的定时查询。有没有什么办法关于mariadb服务器可以主动通知,如果我提供一个脚本或函数。
如果我提供一个脚本或函数,Mmariadb服务器可以主动通知最新的GTID

wlzqhblo

wlzqhblo1#

MariaDB和MySQL都不能在没有客户端请求的情况下向客户端发送数据。
跟踪GTID由几个客户端连接器(如MariaDB Connector/C或MariaDB Connector/Python)支持,其中GTID将从先前提交的OK数据包的会话状态信息中获得。
下面是一个简单的Python示例:

import mariadb

def status_tracker(connection, status):
    if 'last_gtid' in status:
      print("last_gtid changed: %s" % status['last_gtid'])

conn= mariadb.connect(status_callback=status_tracker, db="test")

cursor= conn.cursor()

# tell the server to submit last_gtid in session_state_information
cursor.execute("SET @@session.session_track_system_variables='last_gtid'")

cursor.execute("CREATE TEMPORARY TABLE t1 (a int)")
conn.commit()
cursor.execute("CREATE TEMPORARY TABLE t2 (a int)")
conn.commit()
cursor.execute("SET gtid_seq_no=1000")
cursor.execute("CREATE TEMPORARY TABLE t3 (a int)")
conn.commit()

结果/输出:

last_gtid changed: 0-1-40802
last_gtid changed: 0-1-40803
last_gtid changed: 0-1-1000

相关问题