Difference between revisions of "Zmdbintegrityreport"

(Created page with "== zmdbintegrityreport == === Crontab job === As noted in the ZCS Administration Guide [http://www.zimbra.com/docs/ne/latest/administration_guide/wwhelp/wwhimpl/js/html/wwhelp....")
 
Line 1: Line 1:
== zmdbintegrityreport ==
+
= zmdbintegrityreport =
  
=== Crontab job ===
+
== Description ==
  
 
As noted in the ZCS Administration Guide [http://www.zimbra.com/docs/ne/latest/administration_guide/wwhelp/wwhimpl/js/html/wwhelp.htm], zmdbintegrityreport is a crontab task that runs once a week, to check the MySQL database for corruption. zmdbintegrityreport essentially is a wrapper for mysqlcheck, a standard MySQL tool that is distributed with the MySQL package.
 
As noted in the ZCS Administration Guide [http://www.zimbra.com/docs/ne/latest/administration_guide/wwhelp/wwhimpl/js/html/wwhelp.htm], zmdbintegrityreport is a crontab task that runs once a week, to check the MySQL database for corruption. zmdbintegrityreport essentially is a wrapper for mysqlcheck, a standard MySQL tool that is distributed with the MySQL package.
  
=== Report on any database inconsistencies===
+
zmdbintegrityreport is run weekly to check the MySQL database for corruption and will notify the administrator if any corruption is found. When this is run, it may consume a significant amount of I/O. If you find that it is an issue, you may want to change the frequency with which zmdbintegrityreport is run by editing the ZCS crontab entry.
  
zmdbintegrityreport is run weekly to check the MySQL database for corruption and will notify the administrator if any corruption is found. When this is run, it may consume a significant amount of I/O. If you find that it is an issue, you may want to change the frequency with which zmdbintegrityreport is run by editing the ZCS crontab entry. This report runs at 11:00 p.m. Sundays.
+
== Usage ==
  
Large sites may opt to disable this by setting the following:
+
zmdbintegrityreport should be run by the user "zimbra". zmdbintegrityreport can be run with the following options:
 +
 
 +
<pre>
 +
Usage: /opt/zimbra/libexec/zmdbintegrityreport [-m] [-v] [-h] [-r]
 +
-m emails report to admin account, otherwise report is presented on stdout
 +
-v verbose output
 +
-r attempt auto repair of tables
 +
-h help
 +
</pre>
 +
 
 +
== Crontab entry ==
 +
 
 +
The default crontab entry is the following, running at 11pm on Sunday evenings:
 +
 
 +
<pre>
 +
0 23 * * 7 /opt/zimbra/libexec/zmdbintegrityreport -m
 +
</pre>
 +
 
 +
== mysqlcheck ==
 +
 
 +
zmdbintegrityreport is just a wrapper for mysqlcheck, a standard MySQL database tool. The mysqlcheck in zmdbintegrityreport runs this command by default:
 +
 
 +
<pre>
 +
/opt/zimbra/mysql/bin/mysqlcheck --defaults-file=/opt/zimbra/conf/my.cnf -S /opt/zimbra/db/mysql.sock -A -C -s -u root --password=xxxxxxxxxxxxxxxxxxxxxxxxxx
 +
</pre>
 +
 
 +
zmdbintegrityreport just runs a standard mysqlcheck. There are options to mysqlcheck that allow more extensive checks, such as "-m" and "-e". The standard check puts a lower load on the MySQL database, and requires less time. However, a more extensive check can be used to perform a row-by-row table analysis:
 +
 
 +
<pre>
 +
  -m, --medium-check  Faster than extended-check, but only finds 99.99 percent
 +
                      of all errors. Should be good enough for most cases.
 +
 
 +
  -e, --extended      If you are using this option with CHECK TABLE, it will
 +
                      ensure that the table is 100 percent consistent, but will
 +
                      take a long time. If you are using this option with
 +
                      REPAIR TABLE, it will force using old slow repair with
 +
                      keycache method, instead of much faster repair by
 +
                      sorting.
 +
</pre>
 +
 
 +
== Database Load ==
 +
 
 +
zmdbintegrityreport (mysqlcheck) does put load on the MySQL database, which in turn can cause higher latency and slower performance from mailboxd. It runs by default late on Sunday nights in order to limit impact to users. It is important to confirm it is completing by the time of peak load - if it is not, the crontab entry can be adjusted to use a different time (note: check cron entries again after every upgrade).
 +
 
 +
If choosing to disable zmdbintegrityreport altogether, Zimbra would recommend running zmdbintegrityreport manually regularly in order to check the database integrity.
 +
 
 +
== Configuration ==
 +
 
 +
Sites may opt to disable this by setting the following:
  
 
<pre>
 
<pre>
Line 16: Line 64:
  
 
If you choose to disable this, it is recommended that the integrity report be run by hand during the normal maintenance windows and prior to running any ZCS upgrades.
 
If you choose to disable this, it is recommended that the integrity report be run by hand during the normal maintenance windows and prior to running any ZCS upgrades.
 +
 +
== Timing ==
 +
 +
Your mileage may vary, but an example time is provided here. For reference, the database size of this server is:
 +
 +
# du -sh /opt/zimbra/db/data
 +
46G    /opt/zimbra/db/data
 +
 +
For this database, it takes approximately 45 minutes to run.
 +
 +
$ time /opt/zimbra/libexec/zmdbintegrityreport -v
 +
 +
real    45m36.724s
 +
user    0m0.082s
 +
sys    0m0.035s

Revision as of 18:59, 15 December 2011

zmdbintegrityreport

Description

As noted in the ZCS Administration Guide [1], zmdbintegrityreport is a crontab task that runs once a week, to check the MySQL database for corruption. zmdbintegrityreport essentially is a wrapper for mysqlcheck, a standard MySQL tool that is distributed with the MySQL package.

zmdbintegrityreport is run weekly to check the MySQL database for corruption and will notify the administrator if any corruption is found. When this is run, it may consume a significant amount of I/O. If you find that it is an issue, you may want to change the frequency with which zmdbintegrityreport is run by editing the ZCS crontab entry.

Usage

zmdbintegrityreport should be run by the user "zimbra". zmdbintegrityreport can be run with the following options:

Usage: /opt/zimbra/libexec/zmdbintegrityreport [-m] [-v] [-h] [-r]
-m emails report to admin account, otherwise report is presented on stdout
-v verbose output
-r attempt auto repair of tables
-h help

Crontab entry

The default crontab entry is the following, running at 11pm on Sunday evenings:

0 23 * * 7 /opt/zimbra/libexec/zmdbintegrityreport -m

mysqlcheck

zmdbintegrityreport is just a wrapper for mysqlcheck, a standard MySQL database tool. The mysqlcheck in zmdbintegrityreport runs this command by default:

/opt/zimbra/mysql/bin/mysqlcheck --defaults-file=/opt/zimbra/conf/my.cnf -S /opt/zimbra/db/mysql.sock -A -C -s -u root --password=xxxxxxxxxxxxxxxxxxxxxxxxxx

zmdbintegrityreport just runs a standard mysqlcheck. There are options to mysqlcheck that allow more extensive checks, such as "-m" and "-e". The standard check puts a lower load on the MySQL database, and requires less time. However, a more extensive check can be used to perform a row-by-row table analysis:

  -m, --medium-check  Faster than extended-check, but only finds 99.99 percent
                      of all errors. Should be good enough for most cases.

  -e, --extended      If you are using this option with CHECK TABLE, it will
                      ensure that the table is 100 percent consistent, but will
                      take a long time. If you are using this option with
                      REPAIR TABLE, it will force using old slow repair with
                      keycache method, instead of much faster repair by
                      sorting.

Database Load

zmdbintegrityreport (mysqlcheck) does put load on the MySQL database, which in turn can cause higher latency and slower performance from mailboxd. It runs by default late on Sunday nights in order to limit impact to users. It is important to confirm it is completing by the time of peak load - if it is not, the crontab entry can be adjusted to use a different time (note: check cron entries again after every upgrade).

If choosing to disable zmdbintegrityreport altogether, Zimbra would recommend running zmdbintegrityreport manually regularly in order to check the database integrity.

Configuration

Sites may opt to disable this by setting the following:

zmlocalconfig -e zmdbintegrityreport_disabled=TRUE

If you choose to disable this, it is recommended that the integrity report be run by hand during the normal maintenance windows and prior to running any ZCS upgrades.

Timing

Your mileage may vary, but an example time is provided here. For reference, the database size of this server is:

  1. du -sh /opt/zimbra/db/data

46G /opt/zimbra/db/data

For this database, it takes approximately 45 minutes to run.

$ time /opt/zimbra/libexec/zmdbintegrityreport -v

real 45m36.724s user 0m0.082s sys 0m0.035s

Jump to: navigation, search