summaryrefslogtreecommitdiff
path: root/scripts/mytop.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/mytop.sh')
-rwxr-xr-xscripts/mytop.sh146
1 files changed, 77 insertions, 69 deletions
diff --git a/scripts/mytop.sh b/scripts/mytop.sh
index a36fddf7368..480805e90b1 100755
--- a/scripts/mytop.sh
+++ b/scripts/mytop.sh
@@ -1,6 +1,6 @@
#!/usr/bin/perl -w
#
-# $Id: mytop,v 1.90 2010/05/23 10:51:21 mark Exp $
+# $Id: mytop,v 1.91 2012/01/18 16:49:12 mgrennan Exp $
=pod
@@ -20,7 +20,7 @@ use Socket;
use List::Util qw(min max);
use File::Basename;
-$main::VERSION = "1.9a";
+$main::VERSION = "1.91a";
my $path_for_script= dirname($0);
$|=1;
@@ -96,7 +96,7 @@ my %config = (
resolve => 0,
slow => 10, # slow query time
socket => '',
- sort => 0, # default or reverse sort ("s")
+ sort => 1, # default or reverse sort ("s")
user => 'root',
fullqueries => 0
);
@@ -378,12 +378,11 @@ while (1)
## keystroke command processing (if we get this far)
##
- # ! - Force past a replication error
-
- if ($key eq 'r')
+ if ($key eq '!')
{
- Execute("STOP SLAVE; SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; START SLAVE;");
- next;
+ Execute("stop slave");
+ Execute("set global sql_slave_skip_counter=1");
+ Execute("start slave");
}
# t - top
@@ -415,7 +414,7 @@ while (1)
next;
}
- ## m - mode swtich to qps
+ ## m - mode switch to qps
if ($key eq 'm')
{
@@ -425,17 +424,7 @@ while (1)
next;
}
- ## M - mode swtich to qps
-
- if ($key eq 'M')
- {
- $config{mode} = 'status';
- Clear() unless $config{batchmode};
- print "Queries Per Second [hit q to exit this mode]\n";
- next;
- }
-
- ## c - mode swtich to command summary
+ ## c - mode switch to command summary
if ($key eq 'c')
{
@@ -467,8 +456,6 @@ while (1)
next;
}
- # Change the SLOW query value
-
if ($key eq 'S')
{
cmd_S();
@@ -755,7 +742,9 @@ while (1)
ReadKey(0);
}
- if ($key eq 'S')
+ # Switch to show status mode
+
+ if ($key eq 'M')
{
$config{mode} = 'status';
}
@@ -931,6 +920,11 @@ sub GetData()
}
}
+ open L, "</proc/loadavg";
+ my $l = <L>;
+ close L;
+ chomp $l;
+
$last_time = $now_time;
## Server Uptime in meaningful terms...
@@ -962,6 +956,7 @@ sub GetData()
printf "%-.${host_width}s %${up_width}s\n",
"$server on $config{host} ($db_version)",
"up $uptime $current_time";
+# "load $l up $uptime $current_time";
$lines_left--;
@@ -1055,19 +1050,29 @@ sub GetData()
if ($t_delta)
{
+ my $rows_read;
+ if (defined($STATUS{Rows_read}))
+ {
+ $rows_read= $STATUS{Rows_read} - $OLD_STATUS{Rows_read};
+ }
+ else
+ {
+ $rows_read=
+ ($STATUS{Handler_read_first}+$STATUS{Handler_read_key}+
+ $STATUS{Handler_read_next}+$STATUS{Handler_read_prev}+
+ $STATUS{Handler_read_rnd}+$STATUS{Handler_read_rnd_next} -
+ $OLD_STATUS{Handler_read_first}-$OLD_STATUS{Handler_read_key}-
+ $OLD_STATUS{Handler_read_next}-$OLD_STATUS{Handler_read_prev}-
+ $OLD_STATUS{Handler_read_rnd}-
+ $OLD_STATUS{Handler_read_rnd_next});
+ }
printf(" Handler: (R/W/U/D) %5d/%5d/%5d/%5d Tmp: R/W/U: %5d/%5d/%5d\n",
- ($STATUS{Handler_read_first}+$STATUS{Handler_read_key}+
- $STATUS{Handler_read_next}+$STATUS{Handler_read_prev}+
- $STATUS{Handler_read_rnd}+$STATUS{Handler_read_rnd_next} -
- $OLD_STATUS{Handler_read_first}-$OLD_STATUS{Handler_read_key}-
- $OLD_STATUS{Handler_read_next}-$OLD_STATUS{Handler_read_prev}-
- $OLD_STATUS{Handler_read_rnd}-
- $OLD_STATUS{Handler_read_rnd_next})/$t_delta,
+ $rows_read/$t_delta,
($STATUS{Handler_write} - $OLD_STATUS{Handler_write}) /
$t_delta,
($STATUS{Handler_update} - $OLD_STATUS{Handler_update}) /
$t_delta,
- ($STATUS{Handler_delete} - $OLD_STATUS{Handler_delete}) /
+ ($STATUS{Handler_delete} - $OLD_STATUS{Handler_delete}) /
$t_delta,
($STATUS{Rows_tmp_read} - $OLD_STATUS{Rows_tmp_read}) /
$t_delta,
@@ -1083,7 +1088,7 @@ sub GetData()
$lines_left--;
- printf(" MyISAM Key Efficiency: %2.1f%% Bps in/out: %5s/%5s ",
+ printf(" ISAM Key Efficiency: %2.1f%% Bps in/out: %5s/%5s ",
$cache_hits_percent,
make_short($STATUS{Bytes_received} / $STATUS{Uptime} ),
make_short($STATUS{Bytes_sent} / $STATUS{Uptime}));
@@ -1095,35 +1100,40 @@ sub GetData()
$lines_left--;
- my($data) = Hashes('SHOW SLAVE STATUS');
- if (defined($data->{Master_Host}))
+ my($data) = Hashes('show global variables like "read_only"');
+ if ($data->{Value} ne "OFF")
{
- print " Replication ";
- if ($HAS_COLOR) {
- print GREEN();
- print RED() if ($data->{Slave_IO_Running} ne "Yes") ;
- }
- print "IO:$data->{Slave_IO_Running} ";
+ print RED() if ($HAS_COLOR) ;
+ print " ReadOnly";
RESET() if ($HAS_COLOR);
+ }
- if ($HAS_COLOR) {
- print GREEN();
- print RED() if ($data->{Slave_SQL_Running} ne "Yes") ;
+ ($data) = Hashes('SHOW SLAVE STATUS');
+ if (defined($data->{Master_Host}))
+ {
+ if (defined($data->{Seconds_Behind_Master}))
+ {
+ if ($HAS_COLOR) {
+ print GREEN();
+ print YELLOW() if ($data->{Seconds_Behind_Master} > 60);
+ print MAGENTA() if ($data->{Seconds_Behind_Master} > 360);
+ }
}
+ print " Replication ";
+ print "IO:$data->{Slave_IO_Running} ";
print "SQL:$data->{Slave_SQL_Running} ";
print RESET() if ($HAS_COLOR);
- my $SlaveDelay = $data->{Seconds_Behind_Master};
- if ($SlaveDelay)
+ if (defined($data->{Seconds_Behind_Master}))
{
if ($HAS_COLOR) {
print GREEN();
- print YELLOW() if ($SlaveDelay > 10);
- print MAGENTA() if ($SlaveDelay > 120);
+ print YELLOW() if ($data->{Seconds_Behind_Master} > 60);
+ print MAGENTA() if ($data->{Seconds_Behind_Master} > 360);
}
- print "Delay: $SlaveDelay sec.";
+ print "Delay: $data->{Seconds_Behind_Master} sec.";
} else {
- my $free = $width - 35;
+ my $free = $width - 45;
my $Err = substr $data->{Last_Error},0 ,$free;
printf(" ERR: %-${free}s", $Err) if ( $Err ne "" );
}
@@ -1198,6 +1208,7 @@ sub GetData()
if ($is_ip and $config{resolve})
{
$thread->{Host} =~ s/:\d+$//;
+# my $host = $thread->{Host};
my $host = gethostbyaddr(inet_aton($thread->{Host}), AF_INET);
# $host =~ s/^([^.]+).*/$1/;
$thread->{Host} = $host;
@@ -1483,7 +1494,7 @@ sub GetShowStatus()
Clear() unless $config{batchmode};
my @rows = Hashes("SHOW STATUS");
- printf "%32s %10s %10s\n", 'Counter', 'Total', 'Change';
+ printf "%32s %10s %10s Toggle idle with 'i'\n", 'Counter', 'Total', 'Change';
printf "%32s %10s %10s\n", '-------', '-----', '------';
for my $row (@rows)
@@ -1519,9 +1530,7 @@ sub GetShowStatus()
}
}
- if ($delta != 0) {
- printf "%32s: %10s %10s\n", $name, $value, $delta;
- }
+ printf "%32s: %10s %10s\n", $name, $value, $delta;
print RESET() if $HAS_COLOR;
$statcache{$name} = $value;
@@ -1703,12 +1712,11 @@ sub trim($)
sub PrintHelp()
{
my $help = qq[
-Help for mytop version $main::VERSION by Mark Grennan <${YELLOW}Mark\@Grennan.com${RESET}>
-Origional work by Jeremy D. Zawodny <${YELLOW}Jeremy\@Zawodny.com${RESET}>
+Help for mytop version $main::VERSION by Jeremy D. Zawodny <${YELLOW}Jeremy\@Zawodny.com${RESET}>
+ with updates by Mark Grennan <${YELLOW}mark\@grennan.com${RESET}>
? - display this screen
# - toggle short/long numbers (not yet implemented)
- ! - force past replication error
c - command summary view (based on Com_* counters)
C - turn color on and off
d - show only a specific database
@@ -1733,8 +1741,9 @@ Origional work by Jeremy D. Zawodny <${YELLOW}Jeremy\@Zawodny.com${RESET}>
S - change slow quiery hightlighting
t - switch to thread view (default)
u - show only a specific user
- V - show variablesi
+ V - show variables
: - enter a command (not yet implemented)
+ ! - Skip an error that has stopped replications (at your own risk)
L - show full queries (do not strip to terminal width)
Base version from ${GREEN}http://www.mysqlfanboy.com/mytop${RESET}
@@ -2317,11 +2326,8 @@ having the User column appear, for example.
mytop was developed and is maintained by Jeremy D. Zawodny
(Jeremy@Zawodny.com).
-(Mark Grennan) After weeks and months of trying to get Jeremy's
-attention I desided to release my own update to mytop. I use it
-every day as a part of my job. Thanks Jeremy for creating mytop.
-I hope you find my updates as helpful as I have. I can be
-reached at (Mark@Grennan.com).
+If you wish to e-mail me regarding this software, B<PLEASE> subscribe
+to the B<mytop> mailing list. See the B<mytop> homepage for details.
=head1 DISCLAIMER
@@ -2330,12 +2336,6 @@ for it. Yahoo! does not necessarily support this software in any
way. It is merely a personal idea which happened to be very useful in
my job.
-=head1 RECRUITING
-
-If you hack Perl and grok MySQL, come work at Yahoo! Contact me for
-details. Or just send me your resume. Er, unless we just had layoffs,
-in which case we're not hiring. :-(
-
=head1 SEE ALSO
Please check the MySQL manual if you're not sure where some of the
@@ -2344,7 +2344,6 @@ output of B<mytop> is coming from.
=head1 COPYRIGHT
Copyright (C) 2000-2010, Jeremy D. Zawodny.
-Copyright (C) 2010, Mark T. Grennan.
=head1 CREDITS
@@ -2358,6 +2357,15 @@ Many thanks go to these fine folks:
Added --fullqueries and reading of .my.cnf
+=item Mark Grennan (mark@grennan.com) www.linuxfangoy.com
+
+Added updates for MySQL 5.x. Added 'S' (slow) highlighting.
+Added 'C' to turn on and off Color. Added 'l' command to change
+color for long running queries. Fixed a few documentation issues.
+Monitors Slave status. Added color to Queue hit ratio.
+Added number of rows sorted per second.
+Created release 1.7.
+
=item Sami Ahlroos (sami@avis-net.de)
Suggested the idle/noidle stuff.