mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 05:22:25 +01:00
117 lines
2.8 KiB
Python
Executable file
117 lines
2.8 KiB
Python
Executable file
#!/usr/bin/env python
|
|
|
|
import sys
|
|
import time
|
|
import re
|
|
import MySQLdb
|
|
|
|
def usage():
|
|
print "diff the tokudb engine status"
|
|
print "--host=HOSTNAME (default: localhost)"
|
|
print "--port=PORT"
|
|
print "--sleeptime=SLEEPTIME (default: 10 seconds)"
|
|
print "--q='show engine tokudb status'"
|
|
print "--q='select * from information_schema.global_status'"
|
|
|
|
return 1
|
|
|
|
def convert(v):
|
|
if type(v) == type('str'):
|
|
try:
|
|
v = int(v)
|
|
except:
|
|
v = float(v)
|
|
return v
|
|
|
|
def printit(stats, rs, sleeptime):
|
|
# print rs
|
|
for t in rs:
|
|
l = len(t) # grab the last 2 fields in t
|
|
k = t[l-2]
|
|
v = t[l-1]
|
|
# print k, v # debug
|
|
# try to convert v
|
|
try:
|
|
v = convert(v)
|
|
except:
|
|
pass
|
|
if stats.has_key(k):
|
|
oldv = stats[k]
|
|
if v != oldv:
|
|
print k, "|", oldv, "|", v,
|
|
try:
|
|
d = v - oldv
|
|
if sleeptime != 1:
|
|
if d >= sleeptime:
|
|
e = d / sleeptime
|
|
else:
|
|
e = float(d) / sleeptime
|
|
print "|", d, "|", e
|
|
else:
|
|
print "|", d
|
|
except:
|
|
print
|
|
stats[k] = v
|
|
print
|
|
|
|
def main():
|
|
host = None
|
|
port = None
|
|
user = None
|
|
passwd = None
|
|
sleeptime = 10
|
|
q = 'show engine tokudb status'
|
|
|
|
for a in sys.argv[1:]:
|
|
if a == "-h" or a == "-?" or a == "--help":
|
|
return usage()
|
|
match = re.match("--(.*)=(.*)", a)
|
|
if match:
|
|
exec "%s='%s'" % (match.group(1),match.group(2))
|
|
continue
|
|
return usage()
|
|
|
|
connect_parameters = {}
|
|
if host is not None:
|
|
if host[0] == '/':
|
|
connect_parameters['unix_socket'] = host
|
|
else:
|
|
connect_parameters['host'] = host
|
|
if port is not None:
|
|
connect_parameters['port'] = int(port)
|
|
if user is not None:
|
|
connect_parameters['user'] = user
|
|
if passwd is not None:
|
|
connect_parameters['passwd'] = passwd
|
|
|
|
try:
|
|
db = MySQLdb.connect(**connect_parameters)
|
|
except:
|
|
print sys.exc_info()
|
|
return 1
|
|
|
|
print "connected"
|
|
|
|
stats = {}
|
|
while 1:
|
|
try:
|
|
c = db.cursor()
|
|
n = c.execute(q)
|
|
rs = c.fetchall()
|
|
db.commit()
|
|
c.close()
|
|
except:
|
|
print "db", sys.exc_info()
|
|
return 2
|
|
|
|
try:
|
|
printit(stats, rs, int(sleeptime))
|
|
time.sleep(int(sleeptime))
|
|
except:
|
|
print "printit", sys.exc_info()
|
|
return 3
|
|
|
|
|
|
return 0
|
|
|
|
sys.exit(main())
|