.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== .de Sh \" Subsection heading .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. | will give a .\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to .\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' .\" expand to `' in nroff, nothing in troff, for use with C<>. .tr \(*W-|\(bv\*(Tr .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .\" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .hy 0 .if n .na .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "MYSQL-HEARTBEAT 1" .TH MYSQL-HEARTBEAT 1 "2007-10-15" "perl v5.8.8" "User Contributed Perl Documentation" .SH "NAME" mysql\-heartbeat \- Monitor MySQL replication delay. .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 2 \& mysql-heartbeat -D test --update -h master-server \& mysql-heartbeat -D test --monitor -h slave-server .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" MySQL Heartbeat is a two-part MySQL replication delay monitoring system that doesn't require the slave \s-1SQL\s0 thread to be running. The first part updates a timestamp every second on the master. You must create a table on the master as follows: .PP .Vb 5 \& CREATE TABLE heartbeat ( \& id int NOT NULL PRIMARY KEY, \& ts datetime NOT NULL \& ); \& INSERT INTO heartbeat(id) VALUES(1); .Ve .PP Now you connect MySQL Heartbeat to the master and run it in \*(L"\-\-update\*(R" mode to generate the heartbeat. This completes the first part. .PP The second part is to monitor the slave's delay with \*(L"\-\-monitor\*(R" or \&\*(L"\-\-check\*(R". This works even on daisy-chained slaves to any depth. .PP MySQL Heartbeat has a one-second resolution. It depends on the clocks on the master and slave servers being closely synchronized via \s-1NTP\s0. \*(L"\-\-update\*(R" checks happen on the edge of the second, and \*(L"\-\-monitor\*(R" checks happen halfway between seconds. As long as the servers' clocks aren't skewed much and the replication events are propagating in less than half a second, MySQL Heartbeat will report zero seconds of delay. .PP MySQL Heartbeat will try to reconnect if the connection has an error, but will not retry if it can't get a connection when it first starts. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\-\-askpass" 4 .IX Item "--askpass" Prompts the user for a password when connecting to MySQL. .IP "\-\-check" 4 .IX Item "--check" Reports slave delay and exits. .IP "\-\-daemonize" 4 .IX Item "--daemonize" Fork to the background and detach from the shell. This probably doesn't work on Microsoft Windows. .IP "\-\-database" 4 .IX Item "--database" The database to use for the connection. .IP "\-\-defaults\-file" 4 .IX Item "--defaults-file" Only read default options from the given file. You must give an absolute pathname. .IP "\-\-file" 4 .IX Item "--file" When \*(L"\-\-monitor\*(R" is given, prints output to the specified file instead of to \&\s-1STDOUT\s0. The file is opened, truncated, and closed every second, so it will only contain the most recent statistics. Useful when \*(L"\-\-daemonize\*(R" is given. .IP "\-\-frames" 4 .IX Item "--frames" Specifies the timeframes over which to calculate moving averages when \&\*(L"\-\-monitor\*(R" is given. The default value is one, five and fifteen minutes. Specify as a comma-separated list of numbers with suffixes. The suffix can be s for seconds, m for minutes, h for hours, or d for days. The size of the largest frame determines the maximum memory usage, as up the specified number of per-second samples are kept in memory to calculate the averages. You can specify as many timeframes as you like. .IP "\-\-help" 4 .IX Item "--help" Displays a help message. .IP "\-\-host" 4 .IX Item "--host" Connect to host. .IP "\-\-monitor" 4 .IX Item "--monitor" Specifies that mysql-heartbeat should check the slave's delay every second and report to \s-1STDOUT\s0 (or if \*(L"\-\-file\*(R" is given, to the file instead). The output is the current delay followed by moving averages over the timeframe given in \&\*(L"\-\-frames\*(R". For example, .Sp .Vb 1 \& 5s [ 0.25s, 0.05s, 0.02s ] .Ve .IP "\-\-password" 4 .IX Item "--password" Password to use when connecting. .IP "\-\-port" 4 .IX Item "--port" Port number to use for connection. .IP "\-\-socket" 4 .IX Item "--socket" Socket file to use for connection. .IP "\-\-table" 4 .IX Item "--table" The table to use for the heartbeat. The default is 'heartbeat'. Don't specify database.table; use \*(L"\-\-database\*(R" to specify the database. .IP "\-\-update" 4 .IX Item "--update" Assumes the server is a master and updates the heartbeat every second. .IP "\-\-user" 4 .IX Item "--user" User for login if not current user. .IP "\-\-version" 4 .IX Item "--version" Output version information and exit. .SH "SYSTEM REQUIREMENTS" .IX Header "SYSTEM REQUIREMENTS" You need Perl, \s-1DBI\s0, DBD::mysql, and some core packages that ought to be installed in any reasonably new version of Perl. .SH "SEE ALSO" .IX Header "SEE ALSO" See also mysql-slave-delay and mysql-slave-restart. .SH "BUGS" .IX Header "BUGS" Please use the Sourceforge bug tracker, forums, and mailing lists to request support or report bugs: . .SH "COPYRIGHT, LICENSE AND WARRANTY" .IX Header "COPYRIGHT, LICENSE AND WARRANTY" This program is copyright (c) 2006 Proven Scaling \s-1LLC\s0 and SixApart Ltd, and (c) 2007 Baron Schwartz. Feedback and improvements are welcome. .PP \&\s-1THIS\s0 \s-1PROGRAM\s0 \s-1IS\s0 \s-1PROVIDED\s0 \*(L"\s-1AS\s0 \s-1IS\s0\*(R" \s-1AND\s0 \s-1WITHOUT\s0 \s-1ANY\s0 \s-1EXPRESS\s0 \s-1OR\s0 \s-1IMPLIED\s0 \&\s-1WARRANTIES\s0, \s-1INCLUDING\s0, \s-1WITHOUT\s0 \s-1LIMITATION\s0, \s-1THE\s0 \s-1IMPLIED\s0 \s-1WARRANTIES\s0 \s-1OF\s0 \&\s-1MERCHANTIBILITY\s0 \s-1AND\s0 \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. .PP This program is free software; you can redistribute it and/or modify it under the terms of the \s-1GNU\s0 General Public License as published by the Free Software Foundation, version 2; \s-1OR\s0 the Perl Artistic License. On \s-1UNIX\s0 and similar systems, you can issue `man perlgpl' or `man perlartistic' to read these licenses. .PP You should have received a copy of the \s-1GNU\s0 General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, \s-1MA\s0 02111\-1307 \s-1USA\s0. .SH "AUTHOR" .IX Header "AUTHOR" Proven Scaling \s-1LLC\s0, SixApart Ltd, and Baron Schwartz. .SH "VERSION" .IX Header "VERSION" This manual page documents Ver 1.0.1 Distrib 1053 \f(CW$Revision:\fR 940 $.