建立了基于GTID的主从复制系统。我想得到最新的GTID的主或从,我知道GTID的方式通过显示变量,如'%gtid %',但这种方式需要不断的定时查询。有没有什么办法关于mariadb服务器可以主动通知,如果我提供一个脚本或函数。如果我提供一个脚本或函数,Mmariadb服务器可以主动通知最新的GTID
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
1条答案
按热度按时间wlzqhblo1#
MariaDB和MySQL都不能在没有客户端请求的情况下向客户端发送数据。
跟踪GTID由几个客户端连接器(如MariaDB Connector/C或MariaDB Connector/Python)支持,其中GTID将从先前提交的OK数据包的会话状态信息中获得。
下面是一个简单的Python示例:
结果/输出: