Merge lp:~hrvojem/percona-xtrabackup/xb-1.6-docsplit into lp:percona-xtrabackup/1.6

Proposed by Hrvoje Matijakovic
Status: Merged
Merged at revision: 328
Proposed branch: lp:~hrvojem/percona-xtrabackup/xb-1.6-docsplit
Merge into: lp:percona-xtrabackup/1.6
Diff against target: 6083 lines (+5624/-0)
77 files modified
doc/Makefile (+130/-0)
doc/make.bat (+170/-0)
doc/source/conf.py (+258/-0)
doc/source/faq.rst (+61/-0)
doc/source/glossary.rst (+113/-0)
doc/source/how-tos.rst (+72/-0)
doc/source/how_xtrabackup_works.rst (+17/-0)
doc/source/howtos/enabling_tcp.rst (+22/-0)
doc/source/howtos/permissions.rst (+54/-0)
doc/source/howtos/recipes_ibkx_inc.rst (+64/-0)
doc/source/howtos/recipes_ibkx_local.rst (+49/-0)
doc/source/howtos/recipes_ibkx_stream.rst (+36/-0)
doc/source/howtos/recipes_xbk_full.rst (+32/-0)
doc/source/howtos/recipes_xbk_inc.rst (+64/-0)
doc/source/howtos/recipes_xbk_restore.rst (+10/-0)
doc/source/howtos/setting_up_replication.rst (+246/-0)
doc/source/howtos/ssh_server.rst (+25/-0)
doc/source/index.rst (+81/-0)
doc/source/innobackupex/creating_a_backup_ibk.rst (+74/-0)
doc/source/innobackupex/how_innobackupex_works.rst (+73/-0)
doc/source/innobackupex/importing_exporting_tables_ibk.rst (+46/-0)
doc/source/innobackupex/incremental_backups_innobackupex.rst (+119/-0)
doc/source/innobackupex/innobackupex_option_reference.rst (+166/-0)
doc/source/innobackupex/innobackupex_script.rst (+72/-0)
doc/source/innobackupex/parallel_copy_ibk.rst (+18/-0)
doc/source/innobackupex/partial_backups_innobackupex.rst (+88/-0)
doc/source/innobackupex/pit_recovery_ibk.rst (+65/-0)
doc/source/innobackupex/preparing_a_backup_ibk.rst (+36/-0)
doc/source/innobackupex/privileges.rst (+66/-0)
doc/source/innobackupex/remote_backups_ibk.rst (+18/-0)
doc/source/innobackupex/replication_ibk.rst (+19/-0)
doc/source/innobackupex/restoring_a_backup_ibk.rst (+20/-0)
doc/source/innobackupex/streaming_backups_innobackupex.rst (+34/-0)
doc/source/innobackupex/throttling_ibk.rst (+11/-0)
doc/source/installation.rst (+33/-0)
doc/source/installation/apt_repo.rst (+50/-0)
doc/source/installation/compiling_xtrabackup.rst (+67/-0)
doc/source/installation/yum_repo.rst (+77/-0)
doc/source/intro.rst (+165/-0)
doc/source/manual.rst (+27/-0)
doc/source/percona-theme/layout.html (+473/-0)
doc/source/percona-theme/searchbox.html (+22/-0)
doc/source/percona-theme/static/default.css_t (+469/-0)
doc/source/percona-theme/static/jquery.min.js (+154/-0)
doc/source/percona-theme/static/percona.com.css (+1/-0)
doc/source/percona-theme/static/percona.com.js (+242/-0)
doc/source/percona-theme/static/sidebar.js (+151/-0)
doc/source/percona-theme/theme.conf (+32/-0)
doc/source/release-notes.rst (+35/-0)
doc/source/release-notes/1.3.rst (+17/-0)
doc/source/release-notes/1.4.rst (+39/-0)
doc/source/release-notes/1.5.rst (+35/-0)
doc/source/release-notes/1.6/1.6.0.rst (+64/-0)
doc/source/release-notes/1.6/1.6.2.rst (+40/-0)
doc/source/release-notes/1.6/1.6.3.rst (+40/-0)
doc/source/release-notes/1.6/1.6.4.rst (+39/-0)
doc/source/release-notes/1.6/1.6.5.rst (+30/-0)
doc/source/release-notes/2.0/1.9.0.rst (+45/-0)
doc/source/tar4ibd/tar4ibd_binary.rst (+27/-0)
doc/source/trademark-policy.rst (+23/-0)
doc/source/xtrabackup_bin/analyzing_table_statistics.rst (+118/-0)
doc/source/xtrabackup_bin/choosing_binary.rst (+19/-0)
doc/source/xtrabackup_bin/configuring.rst (+22/-0)
doc/source/xtrabackup_bin/creating_a_backup.rst (+52/-0)
doc/source/xtrabackup_bin/exporting_importing_tables.rst (+48/-0)
doc/source/xtrabackup_bin/implementation_details.rst (+28/-0)
doc/source/xtrabackup_bin/incremental_backups.rst (+90/-0)
doc/source/xtrabackup_bin/limitation.rst (+13/-0)
doc/source/xtrabackup_bin/partial_backups.rst (+44/-0)
doc/source/xtrabackup_bin/preparing_the_backup.rst (+45/-0)
doc/source/xtrabackup_bin/restoring_a_backup.rst (+6/-0)
doc/source/xtrabackup_bin/scripting_backups_xbk.rst (+41/-0)
doc/source/xtrabackup_bin/throttling_backups.rst (+11/-0)
doc/source/xtrabackup_bin/working_with_binary_logs.rst (+39/-0)
doc/source/xtrabackup_bin/xbk_option_reference.rst (+146/-0)
doc/source/xtrabackup_bin/xtrabackup_binary.rst (+67/-0)
doc/source/xtrabackup_bin/xtrabackup_exit_codes.rst (+9/-0)
To merge this branch: bzr merge lp:~hrvojem/percona-xtrabackup/xb-1.6-docsplit
Reviewer Review Type Date Requested Status
Alexey Kopytov (community) Approve
Review via email: mp+93460@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Alexey Kopytov (akopytov) wrote :

Approved. Will merge to 1.6 and null-merge to trunk.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added file 'doc/Makefile'
--- doc/Makefile 1970-01-01 00:00:00 +0000
+++ doc/Makefile 2012-02-16 17:09:19 +0000
@@ -0,0 +1,130 @@
1# Makefile for Sphinx documentation
2#
3
4# You can set these variables from the command line.
5SPHINXOPTS =
6SPHINXBUILD = sphinx-build
7PAPER =
8BUILDDIR = build
9
10# Internal variables.
11PAPEROPT_a4 = -D latex_paper_size=a4
12PAPEROPT_letter = -D latex_paper_size=letter
13ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
14
15.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
16
17help:
18 @echo "Please use \`make <target>' where <target> is one of"
19 @echo " html to make standalone HTML files"
20 @echo " dirhtml to make HTML files named index.html in directories"
21 @echo " singlehtml to make a single large HTML file"
22 @echo " pickle to make pickle files"
23 @echo " json to make JSON files"
24 @echo " htmlhelp to make HTML files and a HTML help project"
25 @echo " qthelp to make HTML files and a qthelp project"
26 @echo " devhelp to make HTML files and a Devhelp project"
27 @echo " epub to make an epub"
28 @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
29 @echo " latexpdf to make LaTeX files and run them through pdflatex"
30 @echo " text to make text files"
31 @echo " man to make manual pages"
32 @echo " changes to make an overview of all changed/added/deprecated items"
33 @echo " linkcheck to check all external links for integrity"
34 @echo " doctest to run all doctests embedded in the documentation (if enabled)"
35
36clean:
37 -rm -rf $(BUILDDIR)/*
38
39html:
40 $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
41 @echo
42 @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
43
44dirhtml:
45 $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
46 @echo
47 @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
48
49singlehtml:
50 $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
51 @echo
52 @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
53
54pickle:
55 $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
56 @echo
57 @echo "Build finished; now you can process the pickle files."
58
59json:
60 $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
61 @echo
62 @echo "Build finished; now you can process the JSON files."
63
64htmlhelp:
65 $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
66 @echo
67 @echo "Build finished; now you can run HTML Help Workshop with the" \
68 ".hhp project file in $(BUILDDIR)/htmlhelp."
69
70qthelp:
71 $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
72 @echo
73 @echo "Build finished; now you can run "qcollectiongenerator" with the" \
74 ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
75 @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/PerconaXtraBackup.qhcp"
76 @echo "To view the help file:"
77 @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/PerconaXtraBackup.qhc"
78
79devhelp:
80 $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
81 @echo
82 @echo "Build finished."
83 @echo "To view the help file:"
84 @echo "# mkdir -p $$HOME/.local/share/devhelp/PerconaXtraBackup"
85 @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/PerconaXtraBackup"
86 @echo "# devhelp"
87
88epub:
89 $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
90 @echo
91 @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
92
93latex:
94 $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
95 @echo
96 @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
97 @echo "Run \`make' in that directory to run these through (pdf)latex" \
98 "(use \`make latexpdf' here to do that automatically)."
99
100latexpdf:
101 $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
102 @echo "Running LaTeX files through pdflatex..."
103 make -C $(BUILDDIR)/latex all-pdf
104 @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
105
106text:
107 $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
108 @echo
109 @echo "Build finished. The text files are in $(BUILDDIR)/text."
110
111man:
112 $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
113 @echo
114 @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
115
116changes:
117 $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
118 @echo
119 @echo "The overview file is in $(BUILDDIR)/changes."
120
121linkcheck:
122 $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
123 @echo
124 @echo "Link check complete; look for any errors in the above output " \
125 "or in $(BUILDDIR)/linkcheck/output.txt."
126
127doctest:
128 $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
129 @echo "Testing of doctests in the sources finished, look at the " \
130 "results in $(BUILDDIR)/doctest/output.txt."
0131
=== added file 'doc/make.bat'
--- doc/make.bat 1970-01-01 00:00:00 +0000
+++ doc/make.bat 2012-02-16 17:09:19 +0000
@@ -0,0 +1,170 @@
1@ECHO OFF
2
3REM Command file for Sphinx documentation
4
5if "%SPHINXBUILD%" == "" (
6 set SPHINXBUILD=sphinx-build
7)
8set BUILDDIR=build
9set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source
10if NOT "%PAPER%" == "" (
11 set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
12)
13
14if "%1" == "" goto help
15
16if "%1" == "help" (
17 :help
18 echo.Please use `make ^<target^>` where ^<target^> is one of
19 echo. html to make standalone HTML files
20 echo. dirhtml to make HTML files named index.html in directories
21 echo. singlehtml to make a single large HTML file
22 echo. pickle to make pickle files
23 echo. json to make JSON files
24 echo. htmlhelp to make HTML files and a HTML help project
25 echo. qthelp to make HTML files and a qthelp project
26 echo. devhelp to make HTML files and a Devhelp project
27 echo. epub to make an epub
28 echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
29 echo. text to make text files
30 echo. man to make manual pages
31 echo. changes to make an overview over all changed/added/deprecated items
32 echo. linkcheck to check all external links for integrity
33 echo. doctest to run all doctests embedded in the documentation if enabled
34 goto end
35)
36
37if "%1" == "clean" (
38 for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
39 del /q /s %BUILDDIR%\*
40 goto end
41)
42
43if "%1" == "html" (
44 %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
45 if errorlevel 1 exit /b 1
46 echo.
47 echo.Build finished. The HTML pages are in %BUILDDIR%/html.
48 goto end
49)
50
51if "%1" == "dirhtml" (
52 %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
53 if errorlevel 1 exit /b 1
54 echo.
55 echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
56 goto end
57)
58
59if "%1" == "singlehtml" (
60 %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
61 if errorlevel 1 exit /b 1
62 echo.
63 echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
64 goto end
65)
66
67if "%1" == "pickle" (
68 %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
69 if errorlevel 1 exit /b 1
70 echo.
71 echo.Build finished; now you can process the pickle files.
72 goto end
73)
74
75if "%1" == "json" (
76 %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
77 if errorlevel 1 exit /b 1
78 echo.
79 echo.Build finished; now you can process the JSON files.
80 goto end
81)
82
83if "%1" == "htmlhelp" (
84 %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
85 if errorlevel 1 exit /b 1
86 echo.
87 echo.Build finished; now you can run HTML Help Workshop with the ^
88.hhp project file in %BUILDDIR%/htmlhelp.
89 goto end
90)
91
92if "%1" == "qthelp" (
93 %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
94 if errorlevel 1 exit /b 1
95 echo.
96 echo.Build finished; now you can run "qcollectiongenerator" with the ^
97.qhcp project file in %BUILDDIR%/qthelp, like this:
98 echo.^> qcollectiongenerator %BUILDDIR%\qthelp\PerconaXtraBackup.qhcp
99 echo.To view the help file:
100 echo.^> assistant -collectionFile %BUILDDIR%\qthelp\PerconaXtraBackup.ghc
101 goto end
102)
103
104if "%1" == "devhelp" (
105 %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
106 if errorlevel 1 exit /b 1
107 echo.
108 echo.Build finished.
109 goto end
110)
111
112if "%1" == "epub" (
113 %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
114 if errorlevel 1 exit /b 1
115 echo.
116 echo.Build finished. The epub file is in %BUILDDIR%/epub.
117 goto end
118)
119
120if "%1" == "latex" (
121 %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
122 if errorlevel 1 exit /b 1
123 echo.
124 echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
125 goto end
126)
127
128if "%1" == "text" (
129 %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
130 if errorlevel 1 exit /b 1
131 echo.
132 echo.Build finished. The text files are in %BUILDDIR%/text.
133 goto end
134)
135
136if "%1" == "man" (
137 %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
138 if errorlevel 1 exit /b 1
139 echo.
140 echo.Build finished. The manual pages are in %BUILDDIR%/man.
141 goto end
142)
143
144if "%1" == "changes" (
145 %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
146 if errorlevel 1 exit /b 1
147 echo.
148 echo.The overview file is in %BUILDDIR%/changes.
149 goto end
150)
151
152if "%1" == "linkcheck" (
153 %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
154 if errorlevel 1 exit /b 1
155 echo.
156 echo.Link check complete; look for any errors in the above output ^
157or in %BUILDDIR%/linkcheck/output.txt.
158 goto end
159)
160
161if "%1" == "doctest" (
162 %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
163 if errorlevel 1 exit /b 1
164 echo.
165 echo.Testing of doctests in the sources finished, look at the ^
166results in %BUILDDIR%/doctest/output.txt.
167 goto end
168)
169
170:end
0171
=== added directory 'doc/source'
=== added directory 'doc/source/_static'
=== added file 'doc/source/_static/percona-xtrabackup-logo.jpg'
1Binary files doc/source/_static/percona-xtrabackup-logo.jpg 1970-01-01 00:00:00 +0000 and doc/source/_static/percona-xtrabackup-logo.jpg 2012-02-16 17:09:19 +0000 differ172Binary files doc/source/_static/percona-xtrabackup-logo.jpg 1970-01-01 00:00:00 +0000 and doc/source/_static/percona-xtrabackup-logo.jpg 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/_static/percona_favicon.ico'
2Binary files doc/source/_static/percona_favicon.ico 1970-01-01 00:00:00 +0000 and doc/source/_static/percona_favicon.ico 2012-02-16 17:09:19 +0000 differ173Binary files doc/source/_static/percona_favicon.ico 1970-01-01 00:00:00 +0000 and doc/source/_static/percona_favicon.ico 2012-02-16 17:09:19 +0000 differ
=== added directory 'doc/source/_templates'
=== added file 'doc/source/conf.py'
--- doc/source/conf.py 1970-01-01 00:00:00 +0000
+++ doc/source/conf.py 2012-02-16 17:09:19 +0000
@@ -0,0 +1,258 @@
1# -*- coding: utf-8 -*-
2#
3# Percona XtraBackup documentation build configuration file, created by
4# sphinx-quickstart on Mon Jun 27 22:27:15 2011.
5#
6# This file is execfile()d with the current directory set to its containing dir.
7#
8# Note that not all possible configuration values are present in this
9# autogenerated file.
10#
11# All configuration values have a default; values that are commented out
12# serve to show the default.
13
14import sys, os
15
16# If extensions (or modules to document with autodoc) are in another directory,
17# add these directories to sys.path here. If the directory is relative to the
18# documentation root, use os.path.abspath to make it absolute, like shown here.
19#sys.path.insert(0, os.path.abspath('.'))
20
21# -- General configuration -----------------------------------------------------
22
23# If your documentation needs a minimal Sphinx version, state it here.
24#needs_sphinx = '1.0'
25
26# Add any Sphinx extension module names here, as strings. They can be extensions
27# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
28
29extensions = ['sphinx.ext.intersphinx', 'sphinx.ext.todo',
30 'sphinx.ext.coverage', 'sphinx.ext.ifconfig',
31 'sphinx.ext.extlinks']
32
33# Add any paths that contain templates here, relative to this directory.
34templates_path = ['_templates']
35
36# The suffix of source filenames.
37source_suffix = '.rst'
38
39# The encoding of source files.
40#source_encoding = 'utf-8-sig'
41
42# The master toctree document.
43master_doc = 'index'
44
45# General information about the project.
46project = u'Percona XtraBackup'
47copyright = u'2010-2012, Percona Inc'
48
49# The version info for the project you're documenting, acts as replacement for
50# |version| and |release|, also used in various other places throughout the
51# built documents.
52#
53# The short X.Y version.
54version = '1.6'
55# The full version, including alpha/beta/rc tags.
56release = '5'
57
58# The language for content autogenerated by Sphinx. Refer to documentation
59# for a list of supported languages.
60#language = None
61
62# There are two options for replacing |today|: either, you set today to some
63# non-false value, then it is used:
64#today = ''
65# Else, today_fmt is used as the format for a strftime call.
66#today_fmt = '%B %d, %Y'
67
68# List of patterns, relative to source directory, that match files and
69# directories to ignore when looking for source files.
70exclude_patterns = []
71
72# The reST default role (used for this markup: `text`) to use for all documents.
73#default_role = None
74
75# If true, '()' will be appended to :func: etc. cross-reference text.
76#add_function_parentheses = True
77
78# If true, the current module name will be prepended to all description
79# unit titles (such as .. function::).
80#add_module_names = True
81
82# If true, sectionauthor and moduleauthor directives will be shown in the
83# output. They are ignored by default.
84#show_authors = False
85
86# The name of the Pygments (syntax highlighting) style to use.
87pygments_style = 'sphinx'
88
89
90rst_prolog = '''
91.. |check| replace:: ``|[[---CHECK---]]|``
92
93.. |xtrabackup| replace:: :program:`xtrabackup`
94
95.. |innobackupex| replace:: :program:`innobackupex`
96
97.. |XtraDB| replace:: :term:`XtraDB`
98
99.. |InnoDB| replace:: :term:`InnoDB`
100
101.. |MyISAM| replace:: :term:`MyISAM`
102
103.. |Percona Toolkit| replace:: *Percona Toolkit*
104
105.. |LSN| replace:: :term:`LSN`
106
107.. |XtraBackup| replace:: *XtraBackup*
108
109.. |Percona Server| replace:: *Percona Server*
110
111.. |Percona| replace:: *Percona*
112
113.. |MySQL| replace:: *MySQL*
114
115.. |Drizzle| replace:: *Drizzle*
116
117.. |MariaDB| replace:: *MariaDB*
118
119.. |tar4ibd| replace:: :program:`tar4ibd`
120
121.. |tar| replace:: :program:`tar`
122
123'''
124
125extlinks = {'bug': ('https://bugs.launchpad.net/percona-xtrabackup/+bug/%s',
126 '#')}
127
128# A list of ignored prefixes for module index sorting.
129#modindex_common_prefix = []
130
131
132# -- Options for HTML output ---------------------------------------------------
133
134# The theme to use for HTML and HTML Help pages. See the documentation for
135# a list of builtin themes.
136html_theme = 'percona-theme'
137
138# Theme options are theme-specific and customize the look and feel of a theme
139# further. For a list of options available for each theme, see the
140# documentation.
141#html_theme_options = {}
142
143# Add any paths that contain custom themes here, relative to this directory.
144html_theme_path = ['.', './percona-theme']
145
146# The name for this set of Sphinx documents. If None, it defaults to
147# "<project> v<release> documentation".
148html_title = 'Percona XtraBackup Documentation'
149
150# A shorter title for the navigation bar. Default is the same as html_title.
151html_short_title = 'XtraBackup Docs'
152
153# The name of an image file (relative to this directory) to place at the top
154# of the sidebar.
155html_logo = 'percona-xtrabackup-logo.jpg'
156
157# The name of an image file (within the static path) to use as favicon of the
158# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
159# pixels large.
160html_favicon = 'percona_favicon.ico'
161
162# Add any paths that contain custom static files (such as style sheets) here,
163# relative to this directory. They are copied after the builtin static files,
164# so a file named "default.css" will overwrite the builtin "default.css".
165html_static_path = ['_static']
166
167# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
168# using the given strftime format.
169#html_last_updated_fmt = '%b %d, %Y'
170
171# If true, SmartyPants will be used to convert quotes and dashes to
172# typographically correct entities.
173#html_use_smartypants = True
174
175# Custom sidebar templates, maps document names to template names.
176#html_sidebars = {}
177
178# Additional templates that should be rendered to pages, maps page names to
179# template names.
180#html_additional_pages = {}
181
182# If false, no module index is generated.
183#html_domain_indices = True
184
185# If false, no index is generated.
186#html_use_index = True
187
188# If true, the index is split into individual pages for each letter.
189#html_split_index = False
190
191# If true, links to the reST sources are added to the pages.
192#html_show_sourcelink = True
193
194# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
195#html_show_sphinx = True
196
197# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
198#html_show_copyright = True
199
200# If true, an OpenSearch description file will be output, and all pages will
201# contain a <link> tag referring to it. The value of this option must be the
202# base URL from which the finished HTML is served.
203#html_use_opensearch = ''
204
205# This is the file name suffix for HTML files (e.g. ".xhtml").
206#html_file_suffix = None
207
208# Output file base name for HTML help builder.
209htmlhelp_basename = 'PerconaXtraBackupDoc'
210
211
212# -- Options for LaTeX output --------------------------------------------------
213
214# The paper size ('letter' or 'a4').
215#latex_paper_size = 'letter'
216
217# The font size ('10pt', '11pt' or '12pt').
218#latex_font_size = '10pt'
219
220# Grouping the document tree into LaTeX files. List of tuples
221# (source start file, target name, title, author, documentclass [howto/manual]).
222latex_documents = [
223 ('index', 'PerconaXtraBackup.tex', u'Percona XtraBackup Documentation',
224 u'Percona Inc', 'manual'),
225]
226
227# The name of an image file (relative to this directory) to place at the top of
228# the title page.
229#latex_logo = None
230
231# For "manual" documents, if this is true, then toplevel headings are parts,
232# not chapters.
233#latex_use_parts = False
234
235# If true, show page references after internal links.
236#latex_show_pagerefs = False
237
238# If true, show URL addresses after external links.
239#latex_show_urls = False
240
241# Additional stuff for the LaTeX preamble.
242#latex_preamble = ''
243
244# Documents to append as an appendix to all manuals.
245#latex_appendices = []
246
247# If false, no module index is generated.
248#latex_domain_indices = True
249
250
251# -- Options for manual page output --------------------------------------------
252
253# One entry per manual page. List of tuples
254# (source start file, name, description, authors, manual section).
255man_pages = [
256 ('index', 'perconaxtrabackup', u'Percona XtraBackup Documentation',
257 [u'Percona Inc'], 1)
258]
0259
=== added file 'doc/source/faq.rst'
--- doc/source/faq.rst 1970-01-01 00:00:00 +0000
+++ doc/source/faq.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,61 @@
1============================
2 Frequently Asked Questions
3============================
4
5Do I need an InnoDB Hot Backup license to use XtraBackup?
6=========================================================
7
8No. Although ``innobackupex`` is derived from the same GPL and open-source wrapper script that InnoDB Hot Backup uses, it does not execute ``ibbackup``, and the ``xtrabackup`` binary does not execute or link to ``ibbackup``. You can use XtraBackup without any license; it is completely separate from InnoDB Hot Backup.
9
10Why is innobackupex distributed as innobackupex-1.5.1?
11======================================================
12
13That's the way the source for the tool was distributed from Oracle. Nowadays, it is a symbolic link to |innobackupex| for backward compatibility with |XtraBackup|.
14
15What's the difference between :program:`innobackupex` and :program:`innobackup`?
16================================================================================
17
18Because :program:`innobackupex` is a patched version of *Oracle* ’s :program:`innobackup` script (now renamed to :program:`mysqlbackup`), it is quite similar in some ways, and familiarity with innobackup might be helpful.
19
20Despite the options for specific features of |innobackupex|, the main differences are:
21
22 * printing to ``STDERR`` instead of ``STDOUT`` (which enables the :option:`--stream` option),
23
24 * the configuration file - :term:`my.cnf` - is detected automatically (or setted with :option:`innobackupex --defaults-file`) instead of the mandotory first argument,
25
26 * and defaults to |xtrabackup| as binary to use in the :option:`--ibbackup`.
27
28.. * Ssleep and compress?
29
30See :doc:`innobackupex/innobackupex_option_reference` for more details.
31
32
33Why the :program:`xtrabackup` binary doesn't makes a "full backup" of the database? Should I use :program:`innobackupex` always?
34================================================================================================================================
35
36:program:`xtrabackup` is a C program written to take advantage of the InnoDB or XtraDB features in order to make it as fast, less resource-consuming and unobtrusive (locking the database server) as possible. That is only possible with those engines. In the case of MyISAM a "write lock" is needed.
37
38:program:`innobackupex` is a script written in Perl which wraps :program:`xtrabackup` and other backup tools (such as :program:`tar4ibd`) and provides you with the functionality of each tool taking care of the details.
39
40However, for some specific tasks, you must use :program:`xtrabackup` directly. See the :ref:`user-manual` for details on each one.
41
42Are you aware of any web-based backup management tools (commercial or not) built around |Xtrabackup|?
43=====================================================================================================
44
45`Zmanda Recovery Manager <http://www.zmanda.com/zrm-mysql-enterprise.html>`_ is a commercial tool that uses XtraBackup for Non-Blocking Backups: *"ZRM provides support for
46non-blocking backups of MySQL using XtraBackup. ZRM with XtraBackup
47provides resource utilization management by providing throttling based
48on the number of IO operations per second. XtraBackup based backups also
49allow for table level recovery even though the backup was done at the
50database level (needs the recovery database server to be Percona Server
51with XtraDB)."*
52
53|xtrabackup| binary fails with a floating point exception
54=========================================================
55
56In most of the cases this is due to not having install the required libraries (and version) by |xtrabackup|. Installing the *GCC* suite with the supporting libraries and recompiling |xtrabackup| will solve the issue. See :doc:`installation/compiling_xtrabackup` for instructions on the procedure.
57
58How innobackupex handles the ibdata/ib_log files on restore if they aren't in mysql datadir?
59============================================================================================
60
61In case the ibdata and ib_log files are located in different directories outside of the datadir, you will have to put them in their proper place after the logs have been applied.
062
=== added file 'doc/source/glossary.rst'
--- doc/source/glossary.rst 1970-01-01 00:00:00 +0000
+++ doc/source/glossary.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,113 @@
1==========
2 Glossary
3==========
4
5.. glossary::
6
7 LSN
8 Each InnoDB page (usually 16kb in size) contains a log sequence number, or LSN. The LSN is the system version number for the entire database. Each page's LSN shows how recently it was changed.
9
10 innodb_file_per_table
11 By default, all InnoDB tables and indexes are stored in the system tablespace on one file. This option causes the server to create one tablespace file per table. To enable it, set it on your configuration file,
12
13 .. code-block:: guess
14
15 [mysqld]
16 innodb_file_per_table
17
18 or start the server with ``--innodb_file_per_table``.
19
20 innodb_expand_import
21 This feature of |Percona Server| implements the ability to import arbitrary :term:`.ibd` files exported using the |XtraBackup| :option:`--export` option.
22
23 See the `the full documentation <http://www.percona.com/doc/percona-server/5.5/management/innodb_expand_import.html>`_ for more information.
24
25 innodb_data_home_dir
26 The directory (relative to :term:` datadir`) where the database server stores the files in a shared tablespace setup. This option does not affect the location of :term:`innodb_file_per_table`. For example,
27
28 .. code-block:: guess
29
30 [mysqld]
31 innodb_data_home_dir = ./
32
33 innodb_data_file_path
34 Specifies the names, sizes and location of shared tablespace files:
35
36 .. code-block:: guess
37
38 [mysqld]
39 innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend
40
41 innodb_log_group_home_dir
42 Specifies the location of the |InnoDB| log files:
43
44 .. code-block:: guess
45
46 [mysqld]
47 innodb_log_group_home=/var/lib/mysql
48
49 innodb_buffer_pool_size
50 The size in bytes of the memory buffer to cache data and indexes of |InnoDB|'s tables. This aims to reduce disk access to provide better performance. By default:
51
52 .. code-block:: guess
53
54 [mysqld]
55 innodb_buffer_pool_size=8MB
56
57 InnoDB
58 Storage engine which provides ACID-compliant transactions and foreign key support, among others improvements over :term:`MyISAM`. It is the default engine for |MySQL| as of the 5.5 series.
59
60 MyISAM
61 Previous default storage engine for |MySQL| for versions prior to 5.5. It doesn't fully support transactions but in some scenarios may be faster than :term:`InnoDB`. Each table is stored on disk in 3 files: :term:`.frm`, :term:`.MYD`, :term:`.MYI`
62
63 XtraDB
64 *Percona XtraDB* is an enhanced version of the InnoDB storage engine, designed to better scale on modern hardware, and including a variety of other features useful in high performance environments. It is fully backwards compatible, and so can be used as a drop-in replacement for standard InnoDB. More information `here <http://www.percona.com/docs/wiki/Percona-XtraDB:start>`_ .
65
66 my.cnf
67 This file refers to the database server's main configuration file. Most linux distributions place it as :file:`/etc/mysql/my.cnf`, but the location and name depends on the particular installation. Note that this is not the only way of configuring the server, some systems does not have one even and rely on the command options to start the server and its defaults values.
68
69 datadir
70 The directory in which the database server stores its databases. Most Linux distribution use :file:`/var/lib/mysql` by default.
71
72 ibdata
73 Default prefix for tablespace files, e.g. :file:`ibdata1` is a 10MB autoextensible file that |MySQL| creates for the shared tablespace by default.
74
75 .frm
76 For each table, the server will create a file with the ``.frm`` extension containing the table definition (for all storage engines).
77
78 .ibd
79 On a multiple tablespace setup (:term:`innodb_file_per_table` enabled), |MySQL| will store each newly created table on a file with a ``.ibd`` extension.
80
81 .MYD
82 Each |MyISAM| table has ``.MYD`` (MYData) file which contains the data on it.
83
84 .MYI
85 Each |MyISAM| table has ``.MYI`` (MYIndex) file which contains the table's indexes.
86
87 .exp
88 When :doc:`exporting a table <xtrabackup_bin/exporting_importing_tables>` with |XtraBackup|, it creates a file with ``.exp`` extension per exported table containing the information for importing it.
89
90 .MRG
91 Each table using the :program:`MERGE` storage engine, besides of a :term:`.frm` file, will have :term:`.MRG` file containing the names of the |MyISAM| tables associated with it.
92
93 .TRG
94 File containing the Triggers associated to a table, e.g. `:file:`mytable.TRG`. With the :term:`.TRN` file, they represent all the Trigger definitions.
95
96 .TRN
97 File containing the Triggers' Names associated to a table, e.g. `:file:`mytable.TRN`. With the :term:`.TRG` file, they represent all the Trigger definitions.
98
99 .ARM
100 Each table with the :program:`Archive Storage Engine` has ``.ARM`` file which contains the metadata of it.
101
102 .ARZ
103 Each table with the :program:`Archive Storage Engine` has ``.ARZ`` file which contains the data of it.
104
105 .CSM
106 Each table with the :program:`CSV Storage Engine` has ``.CSM`` file which contains the metadata of it.
107
108 .CSV
109 Each table with the :program:`CSV Storage` engine has ``.CSV`` file which contains the data of it (which is a standard Comma Separated Value file).
110
111 .opt
112 |MySQL| stores options of a database (like charset) in a file with a :option:`.opt` extension in the database directory.
113
0114
=== added file 'doc/source/how-tos.rst'
--- doc/source/how-tos.rst 1970-01-01 00:00:00 +0000
+++ doc/source/how-tos.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,72 @@
1=====================
2 How-tos and Recipes
3=====================
4
5.. _recipes-ibk:
6
7Recipes for |innobackupex|
8==========================
9
10.. toctree::
11 :maxdepth: 1
12
13 howtos/recipes_ibkx_local
14 howtos/recipes_ibkx_stream
15 howtos/recipes_ibkx_inc
16
17
18.. _recipes-xbk:
19
20Recipes for |xtrabackup|
21========================
22
23.. toctree::
24 :maxdepth: 1
25
26 howtos/recipes_xbk_full
27 howtos/recipes_xbk_inc
28 howtos/recipes_xbk_restore
29
30.. _howtos:
31
32How-Tos
33=======
34
35.. toctree::
36 :maxdepth: 1
37
38 howtos/setting_up_replication
39
40.. _aux-guides:
41
42Auxiliary Guides
43================
44
45.. toctree::
46 :maxdepth: 1
47
48 howtos/enabling_tcp
49 howtos/permissions
50 howtos/ssh_server
51
52Assumptions in this section
53===========================
54
55Most of the times, the context will make the recipe or tutorial understandable. To assure that, a list of the assumptions, names and "things" that will appear in this section is given. At the beginning of each recipe or tutorial they will be specified in order to make it quicker and more practical.
56
57``HOST``
58 A system with a |MySQL|-based server installed, configured and running. We will assume the following about this system:
59
60 * the MySQL server is able to :doc:`communicate with others by the standard TCP/IP port <howtos/enabling_tcp>`;
61
62 * a SSH server is installed and configured - see :doc:`here <howtos/ssh_server>` if it is not;
63
64 * you have an user account in the system with the appropriate :doc:`permissions <howtos/permissions>` and
65
66 * you have a MySQL's user account with appropriate :doc:`privileges <howtos/permissions>`.
67
68``USER``
69 An user account in the system with shell access and appropriate permissions for the task. A guide for checking them is :doc:`here <howtos/permissions>`.
70
71``DB-USER``
72 An user account in the database server with appropriate privileges for the task. A guide for checking them is :doc:`here <howtos/permissions>`.
073
=== added file 'doc/source/how_xtrabackup_works.rst'
--- doc/source/how_xtrabackup_works.rst 1970-01-01 00:00:00 +0000
+++ doc/source/how_xtrabackup_works.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,17 @@
1========================
2 How |XtraBackup| Works
3========================
4
5|XtraBackup| is based on :term:`InnoDB`'s crash-recovery functionality. It copies your |InnoDB| data files, which results in data that is internally inconsistent; but then it performs crash recovery on the files to make them a consistent, usable database again.
6
7This works because |InnoDB| maintains a redo log, also called the transaction log. This contains a record of every change to InnoDB's data. When |InnoDB| starts, it inspects the data files and the transaction log, and performs two steps. It applies committed transaction log entries to the data files, and it performs an undo operation on any transactions that modified data but did not commit.
8
9|XtraBackup| works by remembering the log sequence number (:term:`LSN`) when it starts, and then copying away the data files. It takes some time to do this, so if the files are changing, then they reflect the state of the database at different points in time. At the same time, |XtraBackup| runs a background process that watches the transaction log files, and copies changes from it. |XtraBackup| needs to do this continually because the transaction logs are written in a round-robin fashion, and can be reused after a while. |XtraBackup| needs the transaction log records for every change to the data files since it began execution.
10
11The above is the backup process. Next is the prepare process. During this step, |XtraBackup| performs crash recovery against the copied data files, using the copied transaction log file. After this is done, the database is ready to restore and use.
12
13The above process is implemented in the |xtrabackup| compiled binary program. The |innobackupex| program adds more convenience and functionality by also permitting you to back up |MyISAM| tables and :term:`.frm` files. It starts |xtrabackup|, waits until it finishes copying files, and then issues ``FLUSH TABLES WITH READ LOCK`` to prevent further changes to |MySQL|'s data and flush all |MyISAM| tables to disk. It holds this lock, copies the |MyISAM| files, and then releases the lock.
14
15The backed-up |MyISAM| and |InnoDB| tables will eventually be consistent with each other, because after the prepare (recovery) process, |InnoDB|'s data is rolled forward to the point at which the backup completed, not rolled back to the point at which it started. This point in time matches where the ``FLUSH TABLES WITH READ LOCK`` was taken, so the |MyISAM| data and the prepared |InnoDB| data are in sync.
16
17The |xtrabackup| and |innobackupex| tools both offer many features not mentioned in the preceding explanation. Each tool's functionality is explained in more detail on its manual page. In brief, though, the tools permit you to do operations such as streaming and incremental backups with various combinations of copying the data files, copying the log files, and applying the logs to the data.
018
=== added directory 'doc/source/howtos'
=== added file 'doc/source/howtos/enabling_tcp.rst'
--- doc/source/howtos/enabling_tcp.rst 1970-01-01 00:00:00 +0000
+++ doc/source/howtos/enabling_tcp.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,22 @@
1Enabling the server to communicate with through TCP/IP
2======================================================
3
4Most of the Linux distributions do not enable by default to accept TCP/IP connections from outside in their MySQL or Percona Server packages.
5
6You can check it with ``netstat`` on a shell: ::
7
8 $ netstat -lnp | grep mysql
9 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2480/mysqld
10 unix 2 [ ACC ] STREAM LISTENING 8101 2480/mysqld /tmp/mysql.sock
11
12You should check two things:
13
14* there is a line starting with ``tcp`` (the server is indeed accepting TCP connections) and
15
16* the first address (``0.0.0.0:3306`` in this example) is different than ``127.0.0.1:3306`` (the bind address is not localhost's).
17
18In the first case, the first place to look is the ``my.cnf`` file. If you find the option ``skip-networking``, comment it out or just delete it. Also check that *if* the variable ``bind_address`` is set, then it shouldn't be set to localhost's but to the host's IP. Then restart the MySQL server and check it again with ``netstat``. If the changes you did had no effect, then you should look at your distribution's startup scripts (like ``rc.mysqld``). You should comment out flags like ``--skip-networking`` and/or change the ``bind-address``.
19
20After you get the server listening to remote TCP connections properly, the last thing to do is checking that the port (3306 by default) is indeed open. Check your firewall configurations (``iptables -L``) and that you are allowing remote hosts on that port (in ``/etc/hosts.allow``).
21
22And we're done! We have a MySQL server running which is able to communicate with the world through TCP/IP.
023
=== added file 'doc/source/howtos/permissions.rst'
--- doc/source/howtos/permissions.rst 1970-01-01 00:00:00 +0000
+++ doc/source/howtos/permissions.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,54 @@
1======================================
2 Privileges and Permissions for Users
3======================================
4
5We will be referring to "permissions" to the ability of a user to access and perform changes on the relevant parts of the host's filesystem, starting/stopping services and installing software.
6
7By "privileges" we refer to the abilities of a database user to perform different kinds of actions on the database server.
8
9
10At a system level
11-----------------
12
13There are many ways for checking the permission on a file or directory. For example, ``ls -ls /path/to/file`` or ``stat /path/to/file | grep Access`` will do the job: ::
14
15 $ stat /etc/mysql | grep Access
16 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
17 Access: 2011-05-12 21:19:07.129850437 -0300
18 $ ls -ld /etc/mysql/my.cnf
19 -rw-r--r-- 1 root root 4703 Apr 5 06:26 /etc/mysql/my.cnf
20
21As in this example, ``my.cnf`` is owned by ``root`` and not writable for anyone else. Assuming that you do not have ``root`` 's password, you can check what permissions you have on this types of files with ``sudo -l``: ::
22
23 $ sudo -l
24 Password:
25 You may run the following commands on this host:
26 (root) /usr/bin/
27 (root) NOPASSWD: /etc/init.d/mysqld
28 (root) NOPASSWD: /bin/vi /etc/mysql/my.cnf
29 (root) NOPASSWD: /usr/local/bin/top
30 (root) NOPASSWD: /usr/bin/ls
31 (root) /bin/tail
32
33Being able to execute with ``sudo`` scripts in ``/etc/init.d/``, ``/etc/rc.d/`` or ``/sbin/service`` is the ability to start and stop services.
34
35Also, If you can execute the package manager of your distribution, you can install or remove software with it. If not, having ``rwx`` permission over a directory will let you do a local installation of software by compiling it there. This is a typical situation in many hosting companies' services.
36
37There are other ways for managing permissions, such as using *PolicyKit*, *Extended ACLs* or *SELinux*, which may be preventing or allowing your access. You should check them in that case.
38
39At a database server level
40--------------------------
41
42To query the privileges that your database user has been granted, at a console of the server execute: ::
43
44 mysql> SHOW GRANTS;
45
46or for a particular user with: ::
47
48 mysql> SHOW GRANTS FOR 'db-user'@'host';
49
50It will display the privileges using the same format as for the `GRANT statement <http://dev.mysql.com/doc/refman/5.1/en/show-grants.html>`_.
51
52Note that privileges may vary across versions of the server. To list the exact list of privileges that your server support (and a brief description of them) execute: ::
53
54 mysql> SHOW PRIVILEGES;
055
=== added file 'doc/source/howtos/recipes_ibkx_inc.rst'
--- doc/source/howtos/recipes_ibkx_inc.rst 1970-01-01 00:00:00 +0000
+++ doc/source/howtos/recipes_ibkx_inc.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,64 @@
1==============================
2 Making an Incremental Backup
3==============================
4
5Every incremental backup starts with a full one, which we will call the *base backup*: ::
6
7 innobackupex --user=USER --password=PASSWORD /path/to/backup/dir/
8
9Note that the full backup will be in a timestamped subdirectory of ``/path/to/backup/dir/`` (e.g. ``/path/to/backup/dir/2011-12-24_23-01-00/``).
10
11Assuming that variable ``$FULLBACKUP`` contains :file:`/path/to/backup/dir/2011-5-23_23-01-18`, let's do an incremental backup an hour later: ::
12
13 innobackupex --incremental /path/to/inc/dir \
14 --incremental-basedir=$FULLBACKUP --user=USER --password=PASSWORD
15
16Now, the incremental backup should be in :file:`/path/to/inc/dir/2011-12-25_00-01-00/`. Let's call ``$INCREMENTALBACKUP=2011-5-23_23-50-10``.
17
18Preparing incremental backups is a bit different than full ones:
19
20First you have to replay the committed transactions on each backup, ::
21
22 innobackupex --apply-log --redo-only $FULLBACKUP \
23 --use-memory=1G --user=USER --password=PASSWORD
24
25The :option:`–use-memory` option is not necessary, it will speed up the process if it is used (provided that the amount of RAM given is available).
26
27If everything went fine, you should see an output similar to: ::
28
29 111225 01:10:12 InnoDB: Shutdown completed; log sequence number 91514213
30
31Now apply the incremental backup to the base backup, by issuing: ::
32
33 innobackupex --apply-log $FULLBACKUP
34 --incremental-dir=$INCREMENTALBACKUP
35 --use-memory=1G --user=DVADER --password=D4RKS1D3
36
37Note the ``$INCREMENTALBACKUP``.
38
39*The final data will be in the base backup directory*, not in the incremental one. In this example, ``/path/to/backup/dir/2011-12-24_23-01-00`` or ``$FULLBACKUP``.
40
41If you want to apply more incremental backups, repeat this step with the next one. It is important that you do this in the chronological order in where the backups were done.
42
43You can check the file xtrabackup_checkpoints at the directory of each one.
44
45They should look like: (in the base backup) ::
46
47 backup_type = full-backuped
48 from_lsn = 0
49 to_lsn = 1291135
50
51and in the incremental ones: ::
52
53 backup_type = incremental
54 from_lsn = 1291135
55 to_lsn = 1291340
56
57The ``to_lsn`` number must match the ``from_lsn`` of the next one.
58
59Once you put all the parts together, you can prepare again the full backup (base + incrementals) once again to rollback the pending transactions: ::
60
61 innobackupex-1.5.1 --apply-log $FULLBACKUP --use-memory=1G \
62 --user=$USERNAME --password=$PASSWORD
63
64Now your backup is ready to be used immediately after restoring it. This preparation step is optional, as if you restore it without doing it, the database server will assume that a crash occurred and will begin to rollback the uncommitted transaction (causing some downtime which can be avoided).
065
=== added file 'doc/source/howtos/recipes_ibkx_local.rst'
--- doc/source/howtos/recipes_ibkx_local.rst 1970-01-01 00:00:00 +0000
+++ doc/source/howtos/recipes_ibkx_local.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,49 @@
1========================================================
2 Make a Local Full Backup (Create, Prepare and Restore)
3========================================================
4
5Create the Backup
6=================
7
8This is the simplest use case. It copies all your |MySQL| data into the specified directory. Here is how to make a backup of all the databases in the :term:`datadir` specified in your :term:`my.cnf`. It will put the backup in a time stamped subdirectory of :file:`/data/backups/`, in this case, :file:`/data/backups/2010-03-13_02-42-44`, ::
9
10 $ innobackupex /data/backups
11
12There is a lot of output, but you need to make sure you see this at the end of the backup. If you don't see this output, then your backup failed: ::
13
14 100313 02:43:07 innobackupex: completed OK!
15
16Prepare the Backup
17==================
18
19To prepare the backup use the :option:`--apply-log` option and specify the timestamped subdirectory of the backup. To speed up the apply-log process, we using the :option:`--use-memory` option is recommended: ::
20
21 $ innobackupex --use-memory=4G --apply-log /data/backups/2010-03-13_02-42-44/
22
23You should check for a confirmation message: ::
24
25 100313 02:51:02 innobackupex: completed OK!
26
27Now the files in :file:`/data/backups/2010-03-13_02-42-44` is ready to be used by the server.
28
29Restore the Backup
30==================
31
32To restore the already-prepared backup, first stop the server and then use the :option:`--copy-back` function of |innobackupex|::
33
34 innobackupex --copy-back /data/backups/2010-03-13_02-42-44/
35 ## Use chmod to correct the permissions, if necessary!
36
37This will copy the prepared data back to its original location as defined by the ``datadir`` in your :term:`my.cnf`.
38
39After the confirmation message::
40
41 100313 02:58:44 innobackupex: completed OK!
42
43you should check the file permissions after copying the data back. You may need to adjust them with something like::
44
45 $ chown -R mysql:mysql /var/lib/mysql
46
47Now the :term:`datadir` contains the restored data. You are ready to start the server.
48
49
050
=== added file 'doc/source/howtos/recipes_ibkx_stream.rst'
--- doc/source/howtos/recipes_ibkx_stream.rst 1970-01-01 00:00:00 +0000
+++ doc/source/howtos/recipes_ibkx_stream.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,36 @@
1=========================
2 Make a Streaming Backup
3=========================
4
5Stream mode sends the backup to ``STDOUT`` in tar format instead of copying it to the directory named by the first argument. You can pipe the output to :command:`gzip`, or across the network to another server.
6
7To extract the resulting tar file, you **must** use the ``-i`` option, such as ``tar -ixvf backup.tar``.
8
9.. warning:: Remember to use the ``-i`` option for extracting a tarred backup. For more information, see :doc:`../innobackupex/streaming_backups_innobackupex`.
10
11Here are some examples:
12
13.. code-block:: console
14
15 ## Stream the backup into a tar archived named 'backup.tar'
16 innobackupex --stream=tar ./ > backup.tar
17
18 ## The same, but compress it
19 innobackupex --stream=tar ./ | gzip - > backup.tar.gz
20
21 ## Send it to another server instead of storing it locally
22 innobackupex --stream=tar ./ | ssh user@desthost "cat - > /data/backups/backup.tar"
23
24 ## The same thing with ''netcat'' (faster). On the destination host:
25 nc -l 9999 | cat - > /data/backups/backup.tar
26 ## On the source host:
27 innobackupex --stream=tar ./ | nc desthost 9999
28
29 ## The same thing, but done as a one-liner:
30 ssh user@desthost "( nc -l 9999 > /data/backups/backup.tar & )" \
31 && innobackupex --stream=tar ./ | nc desthost 9999
32
33 ## Throttle the throughput to 10MB/sec. Requires the 'pv' tools; you
34 ## can find them at http://www.ivarch.com/programs/quickref/pv.shtml
35 innobackupex --stream=tar ./ | pv -q -L10m \
36 | ssh user@desthost "cat - > /data/backups/backup.tar"
037
=== added file 'doc/source/howtos/recipes_xbk_full.rst'
--- doc/source/howtos/recipes_xbk_full.rst 1970-01-01 00:00:00 +0000
+++ doc/source/howtos/recipes_xbk_full.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,32 @@
1======================
2 Making a Full Backup
3======================
4
5 Backup the InnoDB data and log files - located in ``/var/lib/mysql/`` - to ``/data/backups/mysql/`` (destination). Then, prepare the backup files to be ready to restore or use (make the data files consistent).
6
7Make a backup:
8==============
9::
10
11 xtrabackup --backup --target-dir=/data/backups/mysql/
12
13Prepare the backup twice:
14=========================
15::
16
17 xtrabackup --prepare --target-dir=/data/backups/mysql/
18 xtrabackup --prepare --target-dir=/data/backups/mysql/
19
20Success Criterion
21=================
22
23* The exit status of xtrabackup is 0.
24
25* In the second :option:`--prepare` step, you should see InnoDB print messages similar to ``Log file ./ib_logfile0 did not exist: new to be created``, followed by a line indicating the log file was created (creating new logs is the purpose of the second preparation).
26
27Notes
28=====
29
30* You might want to set the :option:`--use-memory` option to something similar to the size of your buffer pool, if you are on a dedicated server that has enough free memory. More details :doc:`here <../xtrabackup_bin/xbk_option_reference>`.
31
32* A more detailed explanation is :doc:`here <../xtrabackup_bin/creating_a_backup>`
033
=== added file 'doc/source/howtos/recipes_xbk_inc.rst'
--- doc/source/howtos/recipes_xbk_inc.rst 1970-01-01 00:00:00 +0000
+++ doc/source/howtos/recipes_xbk_inc.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,64 @@
1==============================
2 Making an Incremental Backup
3==============================
4
5Backup all the InnoDB data and log files - located in ``/var/lib/mysql/`` - **once**, then make two daily incremental backups in ``/data/backups/mysql/`` (destination). Finally, prepare the backup files to be ready to restore or use.
6
7Create one full backup
8======================
9
10Making an incremental backup requires a full backup as a base::
11
12 xtrabackup --backup --target-dir=/data/backups/mysql/
13
14It is important that you **do not run** the :option:`--prepare` command yet.
15
16Create two incremental backups
17==============================
18
19Suppose the full backup is on Monday, and you will create an incremental one on Tuesday::
20
21 xtrabackup --backup --target-dir=/data/backups/inc/tue/ \
22 --incremental-basedir=/data/backups/mysql/
23
24and the same policy is applied on Wednesday::
25
26 xtrabackup --backup --target-dir=/data/backups/inc/wed/ \
27 --incremental-basedir=/data/backups/inc/tue/
28
29Prepare the base backup
30=======================
31
32Prepare the base backup (Monday's backup)::
33
34 xtrabackup --prepare --apply-log-only --target-dir=/data/backups/mysql/
35
36Roll forward the base data to the first increment
37=================================================
38
39Roll Monday's data forward to the state on Tuesday: ::
40
41 xtrabackup --prepare --apply-log-only --target-dir=/data/backups/mysql/ \
42 --incremental-dir=/data/backups/inc/tue/
43
44Roll forward again to the second increment
45==========================================
46
47Roll forward again to the state on Wednesday: ::
48
49 xtrabackup --prepare --apply-log-only --target-dir=/data/backups/mysql/ \
50 --incremental-dir=/data/backups/inc/wed/
51
52Prepare the whole backup to be ready to use
53===========================================
54
55Create the new logs by preparing it::
56
57 xtrabackup --prepare --target-dir=/data/backups/mysql/
58
59Notes
60=====
61
62* You might want to set the :option:`--use-memory` to speed up the process if you are on a dedicated server that has enough free memory. More details :doc:`here <../xtrabackup_bin/xbk_option_reference>`.
63
64* A more detailed explanation is :doc:`here <../xtrabackup_bin/incremental_backups>`.
065
=== added file 'doc/source/howtos/recipes_xbk_restore.rst'
--- doc/source/howtos/recipes_xbk_restore.rst 1970-01-01 00:00:00 +0000
+++ doc/source/howtos/recipes_xbk_restore.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,10 @@
1======================
2 Restoring the Backup
3======================
4
5Because :program:`xtrabackup` doesn't copy |MyISAM| files, ``.frm`` files, and the rest of the database, you might need to back those up separately. To restore the InnoDB data, simply do something like the following after preparing: ::
6
7 cd /data/backups/mysql/
8 rsync -rvt --exclude 'xtrabackup_checkpoints' --exclude 'xtrabackup_logfile' \
9 ./ /var/lib/mysql
10 chown -R mysql:mysql /var/lib/mysql/
011
=== added file 'doc/source/howtos/setting_up_replication.rst'
--- doc/source/howtos/setting_up_replication.rst 1970-01-01 00:00:00 +0000
+++ doc/source/howtos/setting_up_replication.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,246 @@
1.. _replication_howto:
2
3========================================================================
4 How to setup a slave for replication in 6 simple steps with Xtrabackup
5========================================================================
6
7 Data is, by far, the most valuable part of a system. Having a backup done systematically and available for a rapid recovery in case of failure is admittedly essential to a system. However, it is not common practice because of its costs, infrastructure needed or even the boredom associated to the task. Xtrabackup is designed to solve this problem.
8
9 You can have almost real-time backups in 6 simple steps by setting up a replication environment with |XtraBackup|.
10
11 *Percona* |XtraBackup| is a tool for backing up your data extremely easy and without interruption. It performs "hot backups" on unmodified versions of |MySQL| servers (5.0, 5.1 and 5.5), as well as |MariaDB| and *Percona Servers*. It is a totally free and open source software distributed only under the *GPLv2* license.
12
13All the things you will need
14============================
15
16Setting up a slave for replication with |XtraBackup| is really a very straightforward procedure. In order to keep it simple, here is a list of the things you need to follow the steps without hassles:
17
18* ``TheMaster``
19 A system with a |MySQL|-based server installed, configured and running. This system will be called ``TheMaster``, as it is where your data is stored and the one to be replicated. We will assume the following about this system:
20
21 * the |MySQL| server is able to communicate with others by the standard TCP/IP port;
22
23 * the *SSH* server is installed and configured;
24
25 * you have an user account in the system with the appropriate permissions;
26
27 * you have a MySQL's user account with appropriate privileges.
28
29 * server has binlogs enabled and server-id set up to 1.
30
31
32* ``TheSlave``
33 Another system, with a |MySQL|-based server installed on it. We will refer to this machine as ``TheSlave`` and we will assume the same things we did about ``TheMaster``.
34
35* ``Xtrabackup``
36 The backup tool we will use. It should be installed in both computers for convenience.
37
38STEP 1: Make a backup on ``TheMaster`` and prepare it
39=====================================================
40
41At ``TheMaster``, issue the following to a shell:
42
43.. code-block:: console
44
45 TheMaster$ innobackupex --user=yourDBuser --password=MaGiCdB1 /path/to/backupdir
46
47After this is finished you should get:
48
49.. code-block:: console
50
51 innobackupex: completed OK!
52
53This will make a copy of your |MySQL| data dir to the /path/to/backupdir/$TIMESTAMP. You have told |XtraBackup| (through the |innobackupex| script) to connect to the database server using your database user and password, and do a hot backup of all your data in it (all |MyISAM|, |InnoDB| tables and indexes in them).
54
55In order for snapshot to be consistent you need to prepare the data:
56
57.. code-block:: console
58
59 TheMaster$ innobackupex --user=yourDBuser --password=MaGiCdB1 /
60 --apply-log /path/to/backupdir/$TIMESTAMP/
61
62You need to select path where your snapshot has been taken, for example /home/backups/2012-01-16_11-14-43. If everything is ok you should get the same OK message. Now the transaction logs are applied to the data files, and new ones are created: your data files are ready to be used by the MySQL server.
63
64|XtraBackup| knows where your data is by reading your :term:`my.cnf`. If you have your configuration file in a non-standard place, you should use the flag :option:`--defaults-file` ``=/location/of/my.cnf``.
65
66If you want to skip writing the username/password every time you want to access the MySQL, you can set it up in your $HOME folder. Just edit .my.cnf and add:
67
68.. code-block:: console
69
70 [client]
71 user=root
72 pass=MaGiCdB1
73
74This is will give you root access to MySQL.
75
76STEP 2: Copy backed up data to TheSlave
77========================================
78
79Use rsync or scp to copy the data from Master to Slave. If you're syncing the data directly to slave's data directory it's advised to stop the mysqld there.
80
81.. code-block:: console
82
83 TheMaster$ rsync -avprP -e ssh /path/to/backupdir/$TIMESTAMP TheSlave:/path/to/mysql/
84
85After data has been copied you can back up the original or previously installed |MySQL| datadir:
86
87.. code-block:: console
88
89 TheSlave$ mv /path/to/mysql/datadir /path/to/mysql/datadir_bak
90
91and move the snapshot from ``TheMaster`` in its place:
92
93.. code-block:: console
94
95 TheSlave$ mv /path/to/mysql/$TIMESTAMP /path/to/mysql/datadir
96
97After you copy data over, make sure |MySQL| has proper permissions to access them.
98
99.. code-block:: console
100
101 TheSlave$ chown mysql:mysql /path/to/mysql/datadir
102
103In case the ibdata and iblog files are located in different directories outside of the datadir, you will have to put them in their proper place after the logs have been applied.
104
105STEP 3: Configure The Master's MySQL server
106===========================================
107
108Add the appropriate grant in order for slave to be able to connect to master:
109
110.. code-block:: mysql
111
112 TheMaster|mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'$slaveip'
113 IDENTIFIED BY '$slavepass';
114
115Also make sure that firewall rules are correct and that ``TheSlave`` can connect to ``TheMaster``.
116
117STEP 4: Configure The Slave's MySQL server
118==========================================
119
120First copy the :term:`my.cnf` file from ``TheMaster`` to ``TheSlave``:
121
122.. code-block:: console
123
124 TheSlave$ scp user@TheMaster:/etc/mysql/my.cnf /etc/mysql/my.cnf
125
126then change the following options in /etc/mysql/my.cnf:
127
128.. code-block:: console
129
130 server-id=2
131
132and start/restart :command:`mysqld` on ``TheSlave``.
133
134In case you're using init script to start mysqld, be sure that the password for that user has been updated and it's the same as one on ``TheMaster``. For example, Debian and Ubuntu use debian-sys-maint user to do that. Password can be seen and updated in :file:`/etc/mysql/debian.cnf`.
135
136
137STEP 5: Start the replication
138=============================
139
140Look at the content of the file :file:`xtrabackup_binlog_info`, it will be something like:
141
142.. code-block:: console
143
144 TheSlave$ cat /var/lib/mysql/xtrabackup_binlog_info
145 TheMaster-bin.000001 481
146
147Execute the ``CHANGE MASTER`` statement on a MySQL console and use the username and password you've set up in STEP 3:
148
149.. code-block:: mysql
150
151 TheSlave|mysql> CHANGE MASTER TO
152 MASTER_HOST='$masterip',
153 MASTER_USER='repl',
154 MASTER_PASSWORD='$slavepass',
155 MASTER_LOG_FILE='TheMaster-bin.000001',
156 MASTER_LOG_POS=481;
157
158and start the slave:
159
160.. code-block:: mysql
161
162 TheSlave|mysql> START SLAVE;
163
164STEP 6: Check
165=============
166
167You should check that everything went OK with:
168
169.. code-block:: mysql
170
171 TheSlave|mysql> SHOW SLAVE STATUS \G
172 ...
173 Slave_IO_Running: Yes
174 Slave_SQL_Running: Yes
175 ...
176 Seconds_Behind_Master: 13
177 ...
178
179Both ``IO`` and ``SQL`` threads need to be running. The ``Seconds_Behind_Master`` means the ``SQL`` currently being executed has a ``current_timestamp`` of 13 seconds ago. It is an estimation of the lag between ``TheMaster`` and ``TheSlave``. Note that at the beginning, a high value could be shown because ``TheSlave`` has to "catch up" with ``TheMaster``.
180
181Adding more slaves to The Master
182================================
183
184You can use this procedure with slight variation to add new slaves to a master. We will use |Xtrabackup| to clone an already configured slave. We will continue using the previous scenario for convenience but we will add ``TheNewSlave`` to the plot.
185
186At ``TheSlave``, do a full backup:
187
188.. code-block:: console
189
190 TheSlave$ innobackupex --user=yourDBuser --password=MaGiCiGaM /
191 --slave-info /path/to/backupdir
192
193By using the :option:`--slave-info` Xtrabackup creates additional file called :file:`xtrabackup_slave_info`.
194
195Apply the logs:
196
197.. code-block:: console
198
199 TheSlave$ innobackupex --apply-log --use-memory=2G /path/to/backupdir/$TIMESTAMP/
200
201Copy the directory from the ``TheSlave`` to ``TheNewSlave``:
202
203.. code-block:: console
204
205 rsync -avprP -e ssh /path/to/backupdir/$TIMESTAMP TheNewSlave:/path/to/mysql/datadir
206
207Add additional grant on the master:
208
209.. code-block:: mysql
210
211 TheMaster|mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'$newslaveip'
212 IDENTIFIED BY '$slavepass';
213
214Copy the configuration file from ``TheSlave``:
215
216.. code-block:: console
217
218 TheNEWSlave$ scp user@TheSlave:/etc/mysql/my.cnf /etc/mysql/my.cnf
219
220Make sure you change the server-id variable in :file:`/etc/mysql/my.cnf` to 3 and disable the replication on start:
221
222.. code-block:: console
223
224 skip-slave-start
225 server-id=3
226
227After setting ``server_id``, start :command:`mysqld`.
228
229Fetch the master_log_file and master_log_pos from the file :file:`xtrabackup_slave_info`, execute the statement for setting up the master and the log file for ``The NEW Slave``:
230
231.. code-block:: mysql
232
233 TheNEWSlave|mysql> CHANGE MASTER TO
234 MASTER_HOST='$masterip'
235 MASTER_USER='repl',
236 MASTER_PASSWORD='$slavepass',
237 MASTER_LOG_FILE='TheMaster-bin.000001',
238 MASTER_LOG_POS=481;
239
240and start the slave:
241
242.. code-block:: mysql
243
244 TheSlave|mysql> START SLAVE;
245
246If both IO and SQL threads are running when you check the ``TheNewSlave``, server is replicating ``TheMaster``.
0247
=== added file 'doc/source/howtos/ssh_server.rst'
--- doc/source/howtos/ssh_server.rst 1970-01-01 00:00:00 +0000
+++ doc/source/howtos/ssh_server.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,25 @@
1=========================================
2 Installing and configuring a SSH server
3=========================================
4
5Many Linux distributions only install the ssh client by default. If you don't have the ssh server installed already, the easiest way of doing it is by using your distribution's packaging system: ::
6
7 ubuntu$ sudo apt-get install openssh-server
8 archlinux$ sudo pacman -S openssh
9
10You may need to take a look at your distribution's documentation or search for a tutorial on the internet to configure it if you haven't done it before.
11
12
13Some links of them are:
14
15* Debian - http://wiki.debian.org/SSH
16
17* Ubuntu - https://help.ubuntu.com/10.04/serverguide/C/openssh-server.html
18
19* Archlinux - https://wiki.archlinux.org/index.php/SSH
20
21* Fedora - http://docs.fedoraproject.org/en-US/Fedora/12/html/Deployment_Guide/s1-openssh-server-config.html
22
23* CentOS - http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-openssh-server-config.html
24
25* RHEL - http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/ch-OpenSSH.html
026
=== added file 'doc/source/index.rst'
--- doc/source/index.rst 1970-01-01 00:00:00 +0000
+++ doc/source/index.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,81 @@
1.. Percona Xtrabackup documentation master file, created by
2 sphinx-quickstart on Fri May 6 01:04:39 2011.
3 You can adapt this file completely to your liking, but it should at least
4 contain the root `toctree` directive.
5
6====================================
7 Percona Xtrabackup - Documentation
8====================================
9
10*Percona* |XtraBackup| is an open-source hot backup utility for |MySQL| - based servers that doesn't lock your database during the backup.
11
12It can back up data from |InnoDB|, |XtraDB|, and |MyISAM| tables on unmodified |MySQL| 5.0, 5.1 and 5.5 servers, as well as |Percona Server| with |XtraDB|. For a high-level overview of many of its advanced features, including a feature comparison, please see :doc:`intro`.
13
14Whether it is a 24x7 highly loaded server or a low-transaction-volume environment, *Percona* |XtraBackup| is designed to make backups a seamless procedure without disrupting the performance of the server in a production environment. `Commercial support contracts are available <http://www.percona.com/mysql-support/>`_.
15
16*Percona* |XtraBackup| is a combination of the |xtrabackup| *C* program, and the |innobackupex| *Perl* script. The |xtrabackup| program copies and manipulates |InnoDB| and |XtraDB| data files, and the *Perl* script enables enhanced functionality, such as interacting with a running |MySQL| server and backing up |MyISAM| tables. |XtraBackup| works with unmodified |MySQL| servers, as well as |Percona Server| with |XtraDB|. It runs on *Linux* and *FreeBSD*. The *Windows* version is currently at alpha stage and it is available for previewing and testing purposes.
17
18Introduction
19============
20
21.. toctree::
22 :maxdepth: 1
23 :glob:
24
25 intro
26
27Installation
28============
29
30.. toctree::
31 :maxdepth: 1
32 :glob:
33
34 installation
35 installation/compiling_xtrabackup
36
37User's Manual
38=============
39
40.. toctree::
41 :maxdepth: 2
42 :glob:
43
44 manual
45
46Tutorials, Recipes, How-tos
47===========================
48
49.. toctree::
50 :maxdepth: 2
51 :hidden:
52
53 how-tos
54
55* :ref:`recipes-xbk`
56
57* :ref:`recipes-ibk`
58
59* :ref:`howtos`
60
61* :ref:`aux-guides`
62
63Miscellaneous
64=============
65
66.. toctree::
67 :maxdepth: 1
68 :glob:
69
70 faq
71 release-notes
72 glossary
73 trademark-policy
74
75Indices and tables
76==================
77
78* :ref:`genindex`
79
80* :ref:`search`
81
082
=== added directory 'doc/source/innobackupex'
=== added file 'doc/source/innobackupex/creating_a_backup_ibk.rst'
--- doc/source/innobackupex/creating_a_backup_ibk.rst 1970-01-01 00:00:00 +0000
+++ doc/source/innobackupex/creating_a_backup_ibk.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,74 @@
1=======================================
2 Creating a Backup with |innobackupex|
3=======================================
4
5|innobackupex| is the tool that glues |xtrabackup| and |tar4ibd|, which are specific tools, plus adding functionality to provide a single interface to backup all the data in your database server.
6
7To create a full backup, invoke the script with the options needed to connect to the server and only one argument: the path to the directory where the backup will be stored ::
8
9 $ innobackupex --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR/
10
11and check the last line of the output for a confirmation message:
12
13.. code-block:: console
14
15 innobackupex: Backup created in directory '/path/to/BACKUP-DIR/2011-12-25_00-00-09'
16 innobackupex: MySQL binlog position: filename 'mysql-bin.000003', position 1946
17 111225 00:00:53 innobackupex: completed OK!
18
19The backup will be stored within a time stamped directory created in the provided path, :file:`/path/to/BACKUP-DIR/2011-12-25_00-00-09` in this particular example.
20
21Under the hood
22==============
23
24|innobackupex| called |xtrabackup| binary to backup all the data of |InnoDB| tables (see :doc:`../xtrabackup_bin/creating_a_backup` for details on this process) and copied all the table definitions in the database (:term:`.frm` files), data and files related to |MyISAM|, :term:`MERGE <.MRG>` (reference to other tables), :term:`CSV <.CSV>` and :term:`ARCHIVE <.ARM>` tables, along with :term:`triggers <.TRG>` and :term:`database configuration information <.opt>` to a time stamped directory created in the provided path.
25
26It will also create the following files for convenience on the created directory:
27
28 * Information related to the backup and the server
29
30 * :file:`xtrabackup_checkpoints`
31 The type of the backup (e.g. full or incremental), its state (e.g. prepared) and the |LSN| range contained in it.
32
33 * :file:`xtrabackup_binlog_info`
34 The binary log file used by the server and its position at the moment of the backup.
35
36 * :file:`xtrabackup_binlog_info`
37 The binary log file and its current position for |InnoDB| or |XtraDB| tables.
38
39 * :file:`xtrabackup_binary`
40 The |xtrabackup| binary used in the process.
41
42 * :file:`backup-my.cnf`
43 The options of the configuration file used in the backup.
44
45 * Information related to the replication environment (if using the :option:`--slave-info` option):
46
47 * :file:`xtrabackup_slave_info`
48 The ``CHANGE MASTER`` statement needed for setting up a slave.
49
50 * The output of :program:`mysqld` during the backup process:
51
52 * :file:`mysql-stderr`
53
54 * :file:`mysql-stdout`
55
56Other options to consider
57=========================
58
59The :option:`--no-timestamp` option
60-----------------------------------
61
62This option tells |innobackupex| not to create a time stamped directory to store the backup::
63
64 $ innobackupex --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR/ --no-timestamp
65
66|innobackupex| will create the ``BACKUP-DIR`` subdirectory (or fail if exists) and store the backup inside of it.
67
68The :option:`--defaults-file` option
69------------------------------------
70
71You can provide other configuration file to |innobackupex| with this option. The only limitation is that **it has to be the first option passed**::
72
73 $ innobackupex --defaults-file=/tmp/other-my.cnf --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR/
74
075
=== added file 'doc/source/innobackupex/how_innobackupex_works.rst'
--- doc/source/innobackupex/how_innobackupex_works.rst 1970-01-01 00:00:00 +0000
+++ doc/source/innobackupex/how_innobackupex_works.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,73 @@
1.. _how_ibk_works:
2
3==========================
4 How |innobackupex| Works
5==========================
6
7:program:`innobackupex` is a script written in Perl that wraps the :program:`xtrabackup` and :program:`tar4ibd` binaries and performs the tasks where the performance and efficiency of *C* program isn't needed. In this way, it provides a convinient and integrated approach to backing up in many common scenarios.
8
9The following describes the rationale behind :program:`innobackupex` actions.
10
11.. _making-backup-ibk:
12
13Making a Backup
14===============
15
16If no mode is specified, |innobackupex| will assume the backup mode.
17
18By default, it starts :program:`xtrabackup` with the :option:`--suspend-at-end` option, and lets it copy the InnoDB data files. When :program:`xtrabackup` finishes that, :program:`innobackupex` sees it create the :file:`xtrabackup_suspended` file and executes ``FLUSH TABLES WITH READ LOCK``. Then it begins copying the rest of the files.
19
20If the :option:`--ibbackup` is not supplied, |innobackupex| will try to detect it: if the :file:`xtrabackup_binary` file exists on the backup directory, it reads from it which binary of |xtrabackup| will be used. Otherwise, it will try to connect to the database server in order to determine it. If the connection can't be established, |xtrabackup| will fail and you must specify it (see :ref:`ibk-right-binary`).
21
22When the binary is determined, the connection to the database server is checked. This done by connecting, issuing a query, and closing the connection. If everything goes well, the binary is started as a child process.
23
24If it is not an incremental backup, it connects to the server. It waits for slaves in a replication setup if the option :option:`--safe-slave-backup` is set and will flush all tables with **READ LOCK**, preventing all |MyISAM| tables from writing (unless option :option:`--no-lock` is specified).
25
26Once this is done, the backup of the files will begin. It will backup :term:`.frm`, :term:`.MRG`, :term:`.MYD`, :term:`.MYI`, :term:`.TRG`, :term:`.TRN`, :term:`.ARM`, :term:`.ARZ`, :term:`.CSM`, :term:`.CSV` and :term:`.opt` files.
27
28When all the files are backed up, it resumes :program:`ibbackup` and wait until it finishes copying the transactions done while the backup was done. Then, the tables are unlocked, the slave is started (if the option :option:`--safe-slave-backup` was used) and the connection with the server is closed. Then, it removes the :file:`xtrabackup_suspended` file and permits :program:`xtrabackup` to exit.
29
30It will also create the following files in the directory of the backup:
31
32:file:`xtrabackup_checkpoints`
33 containing the :term:`LSN` and the type of backup;
34
35:file:`xtrabackup_binlog_info`
36 containing the position of the binary log at the moment of backing up;
37
38:file:`xtrabackup_binlog_pos_innodb`
39 containing the position of the binary log at the moment of backing up relative to |InnoDB| transactions;
40
41:file:`xtrabackup_slave_info`
42 containing the MySQL binlog position of the master server in a replication setup via ``'SHOW SLAVE STATUS\G;'`` if the :option:`--slave-info` option is passed;
43
44:file:`backup-my.cnf`
45 containing only the :file:`my.cnf` options required for the backup;
46
47:file:`xtrabackup_binary`
48 containing the binary used for the backup;
49
50:file:`mysql-stderr`
51 containing the ``STDERR`` of :program:`mysqld` during the process and
52
53:file:`mysql-stdout`
54 containing the ``STDOUT`` of the server.
55
56If the :option:`--remote-host` was set, |innobackupex| will test the connection to the host via :command:`ssh` and create the backup directories. Then the same process will be applied but the log will be written to a temporary file and will be copied via :command:`scp` with the options set by :option:`--scpopt` (``-Cp -c arcfour`` by default).
57
58After each copy the files will be deleted. The same rationale is for the :option:`--stream` mode.
59
60Finally, the binary log position will be printed to ``STDERR`` and |innobackupex| will exit returning 0 if all went OK.
61
62Note that the ``STDERR`` of |innobackupex| is not written in any file. You will have to redirect it to a file, e.g., ``innobackupex OPTIONS 2> backupout.log``.
63
64.. _copy-back-ibk:
65
66Restoring a backup
67==================
68
69To restore a backup with |innobackupex| the :option:`--copy-back` option must be used.
70
71|innobackupex| will read the read from the :file:`my.cnf` the variables :term:`datadir`, :term:`innodb_data_home_dir`, :term:`innodb_data_file_path`, :term:`innodb_log_group_home_dir` and check that the directories exist.
72
73It will copy the |MyISAM| tables, indexes, etc. (:term:`.frm`, :term:`.MRG`, :term:`.MYD`, :term:`.MYI`, :term:`.TRG`, :term:`.TRN`, :term:`.ARM`, :term:`.ARZ`, :term:`.CSM`, :term:`.CSV` and :term:`.opt` files) first, |InnoDB| tables and indexes next and the log files at last. It will preserve file's attributes when copying them, you may have to change the files' ownership to ``mysql`` before starting the database server, as they will be owned by the user who created the backup.
074
=== added file 'doc/source/innobackupex/importing_exporting_tables_ibk.rst'
--- doc/source/innobackupex/importing_exporting_tables_ibk.rst 1970-01-01 00:00:00 +0000
+++ doc/source/innobackupex/importing_exporting_tables_ibk.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,46 @@
1.. _imp_exp_ibk:
2
3===========================================
4 Importing and Exporting Individual Tables
5===========================================
6
7In standard |InnoDB|, it is not normally possible to copy tables between servers by copying the files, even with :term:`innodb_file_per_table` enabled. But |XtraBackup| allows to migrate individual table from any |InnoDB| database to |Percona Server| with |XtraDB|.
8
9The table is required to be created with the option :term:`innodb_file_per_table` enabled in the server, as exporting is only possible when table is stored in its own table space.
10
11The importing server (at the moment it only supported by |Percona Server|) should have :term:`innodb_file_per_table` and :term:`innodb_expand_import` options enabled.
12
13Exporting tables
14================
15
16Exporting is done in the preparation stage, not at the moment of creating the backup. Once a full backup is created, prepare it with the :option:`--export` option: ::
17
18 $ innobackupex --apply-log --export /path/to/backup
19
20This will create for each |InnoDB| with its own tablespace a file with :term:`.exp` extension. An output of this procedure would contain: ::
21
22 ..
23 xtrabackup: export option is specified.
24 xtrabackup: export metadata of table 'mydatabase/mytable' to file
25 `./mydatabase/mytable.exp` (1 indexes)
26 ..
27
28Each :term:`.exp` file will be used for importing that table.
29
30Importing tables
31================
32
33To import a table to other server, first create a new table with the same structure as the one that will be imported at that server: ::
34
35 OTHERSERVER|mysql> CREATE TABLE mytable (...) ENGINE=InnoDB;
36
37then discard its tablespace: ::
38
39 OTHERSERVER|mysql> ALTER TABLE mydatabase.mytable DISCARD TABLESPACE;
40
41After this, copy :file:`mytable.ibd` and :file:`mytable.exp` files to database's home, and import its tablespace: ::
42
43 OTHERSERVER|mysql> ALTER TABLE mydatabase.mytable IMPORT TABLESPACE;
44
45Once this is executed, data in the imported table will be available.
46
047
=== added file 'doc/source/innobackupex/incremental_backups_innobackupex.rst'
--- doc/source/innobackupex/incremental_backups_innobackupex.rst 1970-01-01 00:00:00 +0000
+++ doc/source/innobackupex/incremental_backups_innobackupex.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,119 @@
1=========================================
2 Incremental Backups with |innobackupex|
3=========================================
4
5As not all information changes between each backup, the incremental backup strategy uses this to reduce the storage needs and the duration of making a backup.
6
7This can be done because each |InnoDB| page has a log sequence number, |LSN|, which acts as a version number of the entire database. Every time the database is modified, this number gets incremented.
8
9An incremental backup copies all pages since a specific |LSN|.
10
11Once this pages have been put together in their respective order, applying the logs will recreate the process that affected the database, yielding the data at the moment of the most recently created backup.
12
13Creating an Incremental Backups with |innobackupex|
14===================================================
15
16First, a full backup is needed, this will be the BASE for the incremental one: ::
17
18 $ innobackupex /data/backups
19
20This will create a timestamped directory in :file:`/data/backups`. Assuming that the backup is done last day of the year, ``BASEDIR`` would be :file:`/data/backups/2011-12-31_23-01-18`, for example.
21
22.. note:: You can use the :option:`innobackupex --no-timestamp` option to override this behavior and the backup will be created in the given directory.
23
24If you check at the :file:`xtrabackup-checkpoints` file in ``BASE-DIR``, you should see something like::
25
26 backup_type = full-backuped
27 from_lsn = 0
28 to_lsn = 1291135
29
30To create an incremental backup the next day, use the :option:`--incremental` option and provide the BASEDIR::
31
32 $ innobackupex --incremental /data/backups --incremental-basedir=BASEDIR
33
34and another timestamped directory will be created in :file:`/data/backups`, in this example, :file:`/data/backups/2012-01-01_23-01-18` containing the incremental backup. We will call this ``INCREMENTAL-DIR-1``.
35
36If you check at the :file:`xtrabackup-checkpoints` file in ``INCREMENTAL-DIR-1``, you should see something like::
37
38 backup_type = incremental
39 from_lsn = 1291135
40 to_lsn = 1352113
41
42Creating another incremental backup the next day will be analogous, but this time the previous incremental one will be base: ::
43
44 $ innobackupex --incremental /data/backups --incremental-basedir=INCREMENTAL-DIR-1
45
46yielding (in this example) :file:`/data/backups/2012-01-02_23-02-08`. We will use ``INCREMENTAL-DIR-2`` instead for simplicity.
47
48At this point, the :file:`xtrabackup-checkpoints` file in ``INCREMENTAL-DIR-2`` should contain something like::
49
50 backup_type = incremental
51 from_lsn = 1352113
52 to_lsn = 1358967
53
54As it was said before, an incremental backup only copy pages with a |LSN| greater than a specific value. Providing the |LSN| would have produced directories with the same data inside: ::
55
56 innobackupex --incremental /data/backups --incremental-lsn=1291135
57 innobackupex --incremental /data/backups --incremental-lsn=1358967
58
59This is a very useful way of doing an incremental backup, since not always the base or the last incremental will be available in the system.
60
61.. warning:: This procedure only affects |XtraDB| or |InnoDB|-based tables. Other tables with a different storage engine, e.g. |MyISAM|, will be copied entirely each time an incremental backup is performed.
62
63Preparing an Incremental Backup with |innobackupex|
64===================================================
65
66Preparing incremental backups is a bit different than full ones. This is, perhaps, the stage where more attention is needed:
67
68 * First, **only the committed transactions must be replayed on each backup**. This will put the base full backup and the incremental ones altogether.
69
70 * Then, the uncommitted transaction must be rolled back in order to have a ready-to-use backup.
71
72If you replay the commit ed transactions **and** rollback the uncommitted ones on the base backup, you will not be able to add the incremental ones. If you do this on an incremental one, you won't be able to add data from that moment and the remaining increments.
73
74Having this in mind, the procedure is very straight-forward using the :option:`--redo-only` option, starting with the base backup: ::
75
76 innobackupex --apply-log --redo-only BASE-DIR
77
78You should see an output similar to: ::
79
80 120103 22:00:12 InnoDB: Shutdown completed; log sequence number 1291135
81 120103 22:00:12 innobackupex: completed OK!
82
83Then, the first incremental backup can be applied to the base backup, by issuing: ::
84
85 innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1
86
87You should see an output similar to the previous one but with corresponding |LSN|: ::
88
89 120103 22:08:43 InnoDB: Shutdown completed; log sequence number 1358967
90 120103 22:08:43 innobackupex: completed OK!
91
92If no :option:`--incremental-dir` is set, |innobackupex| will use the most recently subdirectory created in the basedir.
93
94At this moment, ``BASE-DIR`` contains the data up to the moment of the first incremental backup. Note that the full data will be always in the directory of the base backup, as we are appending the increments to it.
95
96Repeat the procedure with the second one: ::
97
98 innobackupex --apply-log BASE-DIR --incremental-dir=INCREMENTAL-DIR-2
99
100If the "completed OK!" message was shown, the final data will be in the base backup directory, ``BASE-DIR``.
101
102You can use this procedure to add more increments to the base, as long as you do it in the chronological order that the backups were done. If you omit this order, the backup will be useless. If you have doubts about the order that they must be applied, you can check the file :file:`xtrabackup_checkpoints` at the directory of each one, as shown in the beginning of this section.
103
104Once you put all the parts together, you can prepare again the full backup (base + incrementals) once again to rollback the uncommitted transactions: ::
105
106 innobackupex --apply-log BASE-DIR
107
108Now your backup is ready to be used immediately after restoring it. This preparation step is "optional", as if you restore it without doing it, the database server will assume that a crash occurred and will begin to rollback the uncommitted transaction (causing some downtime which can be avoided).
109
110Note that the :file:`iblog*` files will not be created by |innobackupex|, if you want them to be created, use :command:`xtrabackup --prepare` on the directory. Otherwise, the files will be created by the server once started.
111
112Restoring Incremental Backups with |innobackupex|
113=================================================
114
115After preparing the incremental backups, the base directory contains the same as a full one. For restoring it you can use: ::
116
117 innobackupex --copy-back BASE-DIR
118
119and you may have to change the ownership as detailed on :doc:`restoring_a_backup_ibk`.
0120
=== added file 'doc/source/innobackupex/innobackupex_option_reference.rst'
--- doc/source/innobackupex/innobackupex_option_reference.rst 1970-01-01 00:00:00 +0000
+++ doc/source/innobackupex/innobackupex_option_reference.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,166 @@
1=============================================
2 The :program:`innobackupex` Option Reference
3=============================================
4
5.. program:: innobackupex
6
7This page documents all of the command-line options for the :program:`innobackupex` Perl script.
8
9
10Options
11=======
12
13.. option:: --help
14
15 This option displays a help screen and exits.
16
17.. option:: --version
18
19 This option displays the |innobackupex| version and copyright notice and then exits.
20
21.. option:: --apply-log
22
23 Prepare a backup in ``BACKUP-DIR`` by applying the transaction log file named :file:`xtrabackup_logfile` located in the same directory. Also, create new transaction logs. The InnoDB configuration is read from the file :file:`backup-my.cnf` created by |innobackupex| when the backup was made.
24
25.. option:: --redo-only
26
27 This option is passed directly to xtrabackup's :option:`xtrabackup --apply-log-only` option. This forces :program:`xtrabackup` to skip the "rollback" phase and do a "redo" only. This is necessary if the backup will have incremental changes applied to it later. See the |xtrabackup| :doc:`documentation <../xtrabackup_bin/incremental_backups>` for details.
28
29.. option:: --copy-back
30
31 Copy all the files in a previously made backup from the backup directory to their original locations.
32
33.. option:: --include
34
35 This option is a regular expression to be matched against table names in ``databasename.tablename`` format. It is passed directly to :program:`xtrabackup` 's :option:`xtrabackup --tables` option. See the :program:`xtrabackup` documentation for details.
36
37.. option:: --defaults-file
38
39 This option accepts a string argument that specifies what file to read the default MySQL options from. It is also passed directly to :program:`xtrabackup` 's defaults-file option. See the :program:`xtrabackup` :doc:`documentation <../xtrabackup_bin/xtrabackup_binary>` for details.
40
41.. option:: --databases
42
43 This option accepts a string argument that specifies the list of databases that |innobackupex| should back up. The list is of the form ``databasename1[.table_name1] databasename2[.table_name2] ...``. If this option is not specified, all databases containing MyISAM and InnoDB tables will be backed up. Please make sure that :option:`--databases` contains all of the InnoDB databases and tables, so that all of the innodb.frm files are also backed up. In case the list is very long, this can be specified in a file, and the full path of the file can be specified instead of the list. (See option :option:`--tables-file`.)
44
45.. option:: --tables-file
46
47 This option accepts a string argument that specifies the file in which there are a list of names of the form ``database.table``, one per line. The option is passed directly to :program:`xtrabackup` 's :option:`--tables-file` option.
48
49.. option:: --throttle
50
51 This option accepts an integer argument that specifies the number of I/O operations (i.e., pairs of read+write) per second. It is passed directly to xtrabackup's :option:`xtrabackup --throttle` option.
52
53.. option:: --export
54
55 This option is passed directly to :option:`xtrabackup --export` option. It enables exporting individual tables for import into another server. See the |xtrabackup| documentation for details.
56
57.. option:: --use-memory
58
59 This option accepts a string argument that specifies the amount of memory in bytes for :program:`xtrabackup` to use for crash recovery while preparing a backup. Multiples are supported providing the unit (e.g. 1MB, 1GB). It is used only with the option :option:`--apply-log`. It is passed directly to |xtrabackup| 's :option:`xtrabackup --use-memory` option. See the |xtrabackup| documentation for details.
60
61.. option:: --password = 'PASSWORD'
62
63 This option accepts a string argument specifying the password to use when connecting to the database. It is passed to the :command:`mysql` child process without alteration. See :command:`mysql --help` for details.
64
65.. option:: --user = 'USER'
66
67 This option accepts a string argument that specifies the user (i.e., the *MySQL* username used when connecting to the server) to login as, if that's not the current user. It is passed to the mysql child process without alteration. See :command:`mysql --help` for details.
68
69.. option:: --port
70
71 This option accepts a string argument that specifies the port to use when connecting to the database server with TCP/IP. It is passed to the :command:`mysql` child process. It is passed to the :command:`mysql` child process without alteration. See :command:`mysql --help` for details.
72
73.. option:: --socket
74
75 This option accepts a string argument that specifies the socket to use when connecting to the local database server with a UNIX domain socket. It is passed to the mysql child process without alteration. See :command:`mysql --help` for details.
76
77.. option:: --host
78
79 This option accepts a string argument that specifies the host to use when connecting to the database server with TCP/IP. It is passed to the mysql child process without alteration. See :command:`mysql --help` for details.
80
81.. option:: --no-timestamp
82
83 This option prevents creation of a time-stamped subdirectory of the ``BACKUP-ROOT-DIR`` given on the command line. When it is specified, the backup is done in ``BACKUP-ROOT-DIR`` instead.
84
85.. option:: --slave-info
86
87 This option is useful when backing up a replication slave server. It prints the binary log position and name of the master server. It also writes this information to the :file:`xtrabackup_slave_info` file as a ``CHANGE MASTER`` command. A new slave for this master can be set up by starting a slave server on this backup and issuing a ``CHANGE MASTER`` command with the binary log position saved in the :file:`xtrabackup_slave_info` file.
88
89.. option:: --no-lock
90
91 Use this option to disable table lock with ``FLUSH TABLES WITH READ LOCK``. Use it only if ALL your tables are InnoDB and you **DO NOT CARE** about the binary log position of the backup.
92 If you are considering to use :option:`--no-lock` because your backups are failing to acquire the lock, this could be because of incoming replication events preventing the lock from succeeding. Please try using :option:`--safe-slave-backup` to momentarily stop the replication slave thread, this may help the backup to succeed and you then don't need to resort to using :option:`--no-lock`.
93
94.. option:: --ibbackup = 'autodetect'
95
96 This option accepts a string argument that specifies which xtrabackup binary should be used. The string should be the command used to run *XtraBackup*. The option can be useful if the :program:`xtrabackup` binary is not in your search path or working directory and the database server is not accessible at the moment. If this option is not specified, :program:`innobackupex` attempts to determine the binary to use automatically. By default, :program:`xtrabackup` is the command used. When option :option:`--apply-log` is specified, the binary is used whose name is in the file :file:`xtrabackup_binary` in the backup directory, if that file exists, or will attempt to autodetect it. However, if :option:`--copy-back` is selected, :program:`xtrabackup` is used unless other is specified.
97
98.. option:: --incremental
99
100 This option tells :program:`xtrabackup` to create an incremental backup, rather than a full one. It is passed to the :program:`xtrabackup` child process. When this option is specified, either :option:`--incremental-lsn` or :option:`--incremental-basedir` can also be given. If neither option is given, option :option:`--incremental-basedir` is passed to :program:`xtrabackup` by default, set to the first timestamped backup directory in the backup base directory.
101
102.. option:: --incremental-basedir
103
104 This option accepts a string argument that specifies the directory containing the full backup that is the base dataset for the incremental backup. It is used with the :option:`--incremental` option.
105
106.. option:: --incremental-dir
107
108 This option accepts a string argument that specifies the directory where the incremental backup will be combined with the full backup to make a new full backup. It is used with the :option:`--incremental` option.
109
110.. option:: --incremental-lsn
111
112 This option accepts a string argument that specifies the log sequence number (:term:`LSN`) to use for the incremental backup. It is used with the :option:`--incremental` option. It is used instead of specifying :option:`--incremental-basedir`. For databases created by *MySQL* and *Percona Server* 5.0-series versions, specify the as two 32-bit integers in high:low format. For databases created in 5.1 and later, specify the LSN as a single 64-bit integer.
113
114.. option:: --extra-lsndir
115
116 This option accepts a string argument that specifies the directory in which to save an extra copy of the :file:`xtrabackup_checkpoints` file. It is passed directly to |xtrabackup|'s :option:`--extra-lsndir` option. See the :program:`xtrabackup` documentation for details.
117
118.. option:: --remote-host
119
120 This option accepts a string argument that specifies the remote host on which the backup files will be created, by using an ssh connection.
121
122.. option:: --stream
123
124 This option accepts a string argument that specifies the format in which to do the streamed backup. The backup will be done to ``STDOUT`` in the specified format. Currently, the only supported format is :command:`tar`. Uses :doc:`tar4ibd <../tar4ibd/tar4ibd_binary>`, which is available in *XtraBackup* distributions. If you specify a path after this option, it will be interpreted as the value of :option:`tmpdir`. If both :option:`--stream` and :option:`--incremental` are passed to innobackupex, the incremental parameters are ignored and a full backup is created.
125
126.. option:: --tmpdir
127
128 This option accepts a string argument that specifies the location where a temporary file will be stored. It should be used when :option:`--remote-host` or :option:`--stream` is specified. For these options, the transaction log will first be stored to a temporary file, before streaming or copying to a remote host. This option specifies the location where that temporary file will be stored. If the option is not specifed, the default is to use the value of ``tmpdir`` read from the server configuration.
129
130.. option:: --tar4ibd
131
132 Uses :program:`tar4ibd` in :option:`--stream` mode. It is enabled by default if no other command is specified (e.g. :option:`--force-tar`).
133
134.. option:: --force-tar
135
136 This option forces the use of :command:`tar` when creating a streamed backup, rather than :program:`tar4ibd`, which is the default.
137
138.. option:: --scpopt = '-Cp -c arcfour'
139
140 This option accepts a string argument that specifies the command line options to pass to :command:`scp` when the option :option:`--remost-host` is specified. If the option is not specified, the default options are ``-Cp -c arcfour``.
141
142.. option:: --sshopt
143
144 This option accepts a string argument that specifies the command line options to pass to :command:`ssh` when the option :option:`--remost-host` is specified.
145
146.. option:: --parallel
147
148 This option accepts an integer argument that specifies the number of threads the :program:`xtrabackup` child process should use to back up files concurrently. Note that this option works on file level, that is, if you have several .ibd files, they will be copied in parallel. If you have just single big .ibd file, it will have no effect. It is passed directly to xtrabackup's :option:`xtrabackup --parallel` option. See the :program:`xtrabackup` documentation for details.
149
150.. option:: --safe-slave-backup
151
152 Stop slave SQL thread and wait to start backup until ``Slave_open_temp_tables`` in ``SHOW STATUS`` is zero. If there are no open temporary tables, the backup will take place, otherwise the SQL thread will be started and stopped until there are no open temporary tables. The backup will fail if ``Slave_open_temp_tables`` does not become zero after :option:`--safe-slave-backup-timeout` seconds. The slave SQL thread will be restarted when the backup finishes.
153
154.. option:: --safe-slave-backup-timeout
155
156 How many seconds :option:`--safe-slave-backup`` should wait for ``Slave_open_temp_tables`` to become zero. Defaults to 300 seconds.
157
158.. option:: --rsync
159
160 Use the :program:`rsync` utility to optimize local file
161 transfers. When this option is specified, :program:`innobackupex`
162 uses :program:`rsync` to copy all non-InnoDB files instead of
163 spawning a separate :program:`cp` for each file, which can be much
164 faster for servers with a large number of databases or tables. This
165 option cannot be used together with :option:`--remote-host` or
166 :option:`--stream`.
0167
=== added file 'doc/source/innobackupex/innobackupex_script.rst'
--- doc/source/innobackupex/innobackupex_script.rst 1970-01-01 00:00:00 +0000
+++ doc/source/innobackupex/innobackupex_script.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,72 @@
1=========================
2 The innobackupex Script
3=========================
4
5The |innobackupex| tool is a *Perl* script that acts as a wrapper for the :doc:`xtrabackup <../xtrabackup_bin/xtrabackup_binary>` *C* program. It is a patched version of the ``innobackup`` *Perl* script that *Oracle* distributes with the *InnoDB Hot Backup* tool. It enables more functionality by integrating |xtrabackup| and other functions such as file copying and streaming, and adds some convenience. It lets you perform point-in-time backups of |InnoDB| / |XtraDB| tables together with the schema definitions, |MyISAM| tables, and other portions of the server.
6
7We are currently not satisfied with the architecture, code quality and maintainability, or functionality of |innobackupex|, and we expect to replace it with something else in the future.
8
9This manual section explains how to use |innobackupex| in detail.
10
11Prerequisites
12=============
13
14.. toctree::
15 :maxdepth: 1
16
17 privileges
18
19
20The Backup Cycle - Full Backups
21===============================
22
23.. toctree::
24 :maxdepth: 1
25
26 creating_a_backup_ibk
27 preparing_a_backup_ibk
28 restoring_a_backup_ibk
29
30Other Types of Backups
31======================
32
33.. toctree::
34 :maxdepth: 1
35
36 incremental_backups_innobackupex
37 partial_backups_innobackupex
38
39Proficiency
40===========
41
42.. toctree::
43 :maxdepth: 1
44
45 streaming_backups_innobackupex
46 replication_ibk
47 parallel_copy_ibk
48 throttling_ibk
49 remote_backups_ibk
50 importing_exporting_tables_ibk
51 pit_recovery_ibk
52
53
54.. performance_tunning_innobackupex
55
56Implementation
57==============
58
59.. toctree::
60 :maxdepth: 1
61
62 how_innobackupex_works
63
64
65References
66==========
67
68.. toctree::
69 :maxdepth: 1
70
71 innobackupex_option_reference
72
073
=== added file 'doc/source/innobackupex/parallel_copy_ibk.rst'
--- doc/source/innobackupex/parallel_copy_ibk.rst 1970-01-01 00:00:00 +0000
+++ doc/source/innobackupex/parallel_copy_ibk.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,18 @@
1.. _parallel-ibk:
2
3=============================================
4 Accelerating with :option:`--parallel` copy
5=============================================
6
7When performing a local backup, multiple files can be copied concurrently by using the :option:`--parallel` option. This option specifies the number of threads created by |xtrabackup| to copy data files.
8
9To take advantage of this option whether the multiple tablespaces option must be enabled (:term:`innodb_file_per_table`) or the shared tablespace must be stored in multiple :term:`ibdata` files with the :term:`innodb_data_file_path` option. Having multiple files for the database (or splitting one into many) doesn't have a measurable impact on performance.
10
11
12As this feature is implemented **at a file level**, concurrent file transfer can sometimes increase I/O throughput when doing a backup on highly fragmented data files, due to the overlap of a greater number of random read requests. You should consider tuning the filesystem also to obtain the maximum performance (e.g. checking fragmentation).
13
14If the data is stored on a single file, this option will have no effect.
15
16To use this feature, simply add the option to a local backup, for example: ::
17
18 $ innobackupex --parallel /path/to/backup
019
=== added file 'doc/source/innobackupex/partial_backups_innobackupex.rst'
--- doc/source/innobackupex/partial_backups_innobackupex.rst 1970-01-01 00:00:00 +0000
+++ doc/source/innobackupex/partial_backups_innobackupex.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,88 @@
1=================
2 Partial Backups
3=================
4
5|XtraBackup| features partial backups, which means that you may backup only some specific tables or databases. The only requirement for this feature is having the :term:`innodb_file_per_table` option enabled in the server and it has the limitation of not being supported with :doc:`streaming <streaming_backups_innobackupex>`.
6
7There is only one caveat about partial backups: do not copy back the prepared backup. Restoring partial backups should be done by importing the tables, not by using the traditional :option:`--copy-back` option. Although there are some scenarios where restoring can be done by copying back the files, this may be lead to database inconsistencies in many cases and it is not the recommended way to do it.
8
9Creating Partial Backups
10========================
11
12There are three ways of specifying which part of the whole data will be backed up: regular expressions (:option:`--include`), enumerating the tables in a file (:option:`--tables-file`) or providing a list of databases (:option:`--databases`).
13
14Using the :option:`--include` option
15------------------------------------
16
17The regular expression provided to this will be matched against the fully qualified tablename, including the database name, in the form ``databasename.tablename``.
18
19For example, ::
20
21 $ innobackupex --include='^mydatabase[.]mytable' /path/to/backup
22
23will create a timestamped directory with the usual files that |innobackupex| creates, but only the data files related to the tables matched.
24
25Note that this option is passed to :option:`xtrabackup --tables` and is matched against each table of each database, the directories of each database will be created even if they are empty.
26
27Using the :option:`--tables-file` option
28----------------------------------------
29
30The text file provided (the path) to this option can contain multiple table names, one per line, in the ``databasename.tablename`` format.
31
32For example, ::
33
34 $ echo "mydatabase.mytable" > /tmp/tables.txt
35 $ innobackupex --tables-file=/tmp/tables.txt /path/to/backup
36
37will create a timestamped directory with the usual files that |innobackupex| creates, but only containing the data-files related to the tables specified in the file.
38
39This option is passed to :option:`xtrabackup --tables-file` and, unlike the :option:`--tables` option, only directories of databases of the selected tables will be created.
40
41
42Using the :option:`--databases` option
43--------------------------------------
44
45This option is specific to |innobackupex| and accepts whether a space-separated list of the databases and tables to backup - in the ``databasename[.tablename]`` form - or a file containing the list at one element per line.
46
47For example, ::
48
49 $ innobackupex --databases="mydatabase.mytable mysql" /path/to/backup
50
51will create a timestamped directory with the usual files that |innobackupex| creates, but only containing the data-files related to ``mytable`` in the ``mydatabase`` directory and the ``mysql`` directory with the entire ``mysql`` database.
52
53Preparing Partial Backups
54=========================
55
56For preparing partial backups, the procedure is analogous to :doc:`exporting tables <importing_exporting_tables_ibk>` : apply the logs and use the :option:`--export` option::
57
58 $ innobackupex --apply-log --export /path/to/partial/backup
59
60You may see warnings in the output about tables that don't exists. This is because |InnoDB| -based engines stores its data dictionary inside the tablespace files besides the :term:`.frm` files. |innobackupex| will use |xtrabackup| to remove the missing tables (those who weren't selected in the partial backup) from the data dictionary in order to avoid future warnings or errors::
61
62 111225 0:54:06 InnoDB: Error: table 'mydatabase/mytablenotincludedinpartialb'
63 InnoDB: in InnoDB data dictionary has tablespace id 6,
64 InnoDB: but tablespace with that id or name does not exist. It will be removed from data dictionary.
65
66You should also see the notification of the creation of a file needed for importing (:term:`.exp` file) for each table included in the partial backup::
67
68 xtrabackup: export option is specified.
69 xtrabackup: export metadata of table 'employees/departments' to file `.//departments.exp` (2 indexes)
70 xtrabackup: name=PRIMARY, id.low=80, page=3
71 xtrabackup: name=dept_name, id.low=81, page=4
72
73Note that if you can use the :option:`--export` option with :option:`--apply-log` to an already-prepared backup in order to create the :term:`.exp` files.
74
75Finally, check the for the confirmation message in the output::
76
77 111225 00:54:18 innobackupex: completed OK!
78
79
80Restoring Partial Backups
81=========================
82
83Restoring should be done by :doc:`importing the tables <importing_exporting_tables_ibk>` in the partial backup to the server.
84
85Although it can be done by copying back the prepared backup to a "clean" :term:`datadir` (in that case, make sure of having included the ``mysql`` database)...
86
87
88
089
=== added file 'doc/source/innobackupex/pit_recovery_ibk.rst'
--- doc/source/innobackupex/pit_recovery_ibk.rst 1970-01-01 00:00:00 +0000
+++ doc/source/innobackupex/pit_recovery_ibk.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,65 @@
1========================
2 Point-In-Time recovery
3========================
4
5Recovering up to particular moment in database's history can be done with |innobackupex| and the binary logs of the server.
6
7Note that the binary log contains the operations that modified the database from a point in the past: it's acts as a "redo log". You need a snapshot of the past from which "redo" the operations up to the Point-In-Time you want.
8
9For taking the snapshot, we will use |innobackupex| for a full backup::
10
11 $ innobackupex /path/to/backup --no-timestamp
12
13(the :option:`--no-timestamp` option is for convenience in this example) and we will prepare it to be ready for restoration: ::
14
15 $ innobackupex --apply-log /path/to/backup
16
17For more details on these procedures, see :doc:`creating_a_backup_ibk` and :doc:`preparing_a_backup_ibk`.
18
19Now, suppose that time has passed, and you want to restore the database to a certain point in the past, having in mind that there is the constraint of the point where the snapshot was taken.
20
21To find out what is the situation of binary logging in the server, execute the following queries: ::
22
23 mysql> SHOW BINARY LOGS;
24 +------------------+-----------+
25 | Log_name | File_size |
26 +------------------+-----------+
27 | mysql-bin.000001 | 126 |
28 | mysql-bin.000002 | 1306 |
29 | mysql-bin.000003 | 126 |
30 | mysql-bin.000004 | 497 |
31 +------------------+-----------+
32
33and ::
34
35 mysql> SHOW MASTER STATUS;
36 +------------------+----------+--------------+------------------+
37 | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
38 +------------------+----------+--------------+------------------+
39 | mysql-bin.000004 | 497 | | |
40 +------------------+----------+--------------+------------------+
41
42The first query will tell you which files contain the binary log and the second one which file is been used and its actual position. Those files are stored usually in the :term:`datadir` (unless other location is specified when the server is started with the ``--log-bin=`` option).
43
44To find out the position of the snapshot taken, see the :file:`xtrabackup_binlog_info` at the backup's directory: ::
45
46 $ cat /path/to/backup/xtrabackup_binlog_info
47 mysql-bin.000003 57
48
49This will tell you which file was used at moment of the backup for the binary log and it position. That position will be the effective one when you restore the backup: ::
50
51 $ innobackupex --copy-back /path/to/backup
52
53As the restoration will not affect the binary log files (you may need to adjust file permissions, see :doc:`restoring_a_backup_ibk`), the next step is extracting the queries from the binary log with :command:`mysqlbinlog` starting from the position of the snapshot and redirecting it to a file ::
54
55 $ mysqlbinlog /path/to/datadir/mysql-bin.000003 /path/to/datadir/mysql-bin.000004 \
56 --start-position=57 > mybinlog.sql
57
58Note that if you have multiple files for the binary log, as in the example, you have to process all of them with one process, as shown above.
59
60Inspect the file with the queries to determine which position or date corresponds to the point-in-time wanted. Once determined, pipe it to the server. Assuming the point is ``11-12-25 01:00:00``::
61
62 $ mysqlbinlog /path/to/datadir/mysql-bin.000003 /path/to/datadir/mysql-bin.000004 \
63 --start-position=57 --stop-datetime="11-12-25 01:00:00" | mysql -u root -p
64
65and the database will be rolled forward up to that Point-In-Time.
066
=== added file 'doc/source/innobackupex/preparing_a_backup_ibk.rst'
--- doc/source/innobackupex/preparing_a_backup_ibk.rst 1970-01-01 00:00:00 +0000
+++ doc/source/innobackupex/preparing_a_backup_ibk.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,36 @@
1=============================================
2 Preparing a Full Backup with |innobackupex|
3=============================================
4
5After creating a backup, the data is not ready to be restored. There might be uncommitted transactions to be undone or transactions in the logs to be replayed. Doing those pending operations will make the data files consistent and it is the purpose of the **prepare stage**. Once this has been done, the data is ready to be used.
6
7To prepare a backup with |innobackupex| you have to use the :option:`--apply-log` and the path to the backup directory as an argument::
8
9 $ innobackupex --apply-log /path/to/BACKUP-DIR
10
11and check the last line of the output for a confirmation on the process::
12
13 111225 1:01:57 InnoDB: Shutdown completed; log sequence number 1609228
14 111225 01:01:57 innobackupex: completed OK!
15
16If it succeeded, |innobackupex| performed all operations needed, leaving the data ready to use immediately.
17
18Under the hood
19==============
20reading the configuration from the files in the backup directory,
21
22|innobackupex| replayed the committed transactions in the log files (some transactions could have been done while the backup was being done) and rolled back the uncommitted ones. Once this is done, all the information lay in the tablespace (the InnoDB files), and the log files are re-created.
23
24This implied calling :program:`xtrabackup --prepare` twice with the right binary (determined through the :file:`xtrabackup_binary` or by connecting the server). More details of this process are shown in the :doc:`xtrabackup section <../xtrabackup_bin/preparing_the_backup>`.
25
26Note that this preparation is not suited for incremental backups. If you perform it on the base of an incremental backup, you will not be able to "add" the increments. See :doc:`incremental_backups_innobackupex`.
27
28Other options to consider
29=========================
30
31The :option:`--use-memory` option
32---------------------------------
33
34The preparing process can be speed up by using more memory in it. It depends on the free or available ``RAM`` on your system, it defaults to ``100MB``. In general, the more memory available to the process, the better. The amount of memory used in the process can be specified by multiples of bytes::
35
36 $ innobackupex --apply-log --use-memory=4G /path/to/BACKUP-DIR
037
=== added file 'doc/source/innobackupex/privileges.rst'
--- doc/source/innobackupex/privileges.rst 1970-01-01 00:00:00 +0000
+++ doc/source/innobackupex/privileges.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,66 @@
1==================================
2 Connection and Privileges Needed
3==================================
4
5|XtraBackup| needs to be able to connect to the database server and perform operations on the server and the :term:`datadir` when creating a backup, when preparing in some scenarios and when restoring it. In order to do so, there are privileges and permission requirements on its execution that must be fulfilled.
6
7Privileges refers to the operations that a system user is permitted to do in the database server. **They are set at the database server and only apply to users in the database server**.
8
9Permissions are those which permits a user to perform operations on the system, like reading, writing or executing on a certain directory or start/stop a system service. **They are set at a system level and only apply to system users**.
10
11Whether |xtrabackup| or |innobackupex| is used, there are two actors involved: the user invoking the program - *a system user* - and the user performing action in the database server - *a database user*. Note that these are different users on different places, despite they may have the same username.
12
13All the invocations of |innobackupex| and |xtrabackup| in this documentation assumes that the system user has the appropriate permissions and you are providing the relevant options for connecting the database server - besides the options for the action to be performed - and the database user has adequate privileges.
14
15Connecting to the server
16========================
17
18The database user used to connect to the server and its password are specified by the :option:`--user` and :option:`--password` option, ::
19
20 $ innobackupex --user=DBUSER --password=SECRET /path/to/backup/dir/
21 $ innobackupex --user=LUKE --password=US3TH3F0RC3 --stream=tar ./ | bzip2 -
22 $ xtrabackup --user=DVADER --password=14MY0URF4TH3R --backup --target-dir=/data/bkps/
23
24If you don't use the :option:`--user` option, |XtraBackup| will assume the database user whose name is the system user executing it.
25
26Other Connection Options
27------------------------
28
29According to your system, you may need to specify one or more of the following options to connect to the server:
30
31=============== ===================================================================
32Option Description
33=============== ===================================================================
34--port The port to use when connecting to the database server with TCP/IP.
35--socket The socket to use when connecting to the local database.
36--host The host to use when connecting to the database server with TCP/IP.
37=============== ===================================================================
38
39These options are passed to the :command:`mysql` child process without alteration, see :option:`mysql --help` for details.
40
41Permissions and Privileges Needed
42=================================
43
44
45Once connected to the server, in order to perform a backup you will need ``READ``, ``WRITE`` and ``EXECUTE`` permissions at a filesystem level in the server's :term:`datadir`.
46
47The database user needs the following privileges on the tables / databases to be backed up:
48
49 * ``RELOAD`` and ``LOCK TABLES`` (unless the :option:`--no-lock <innobackupex --no-lock>` option is specified) in order to ``FLUSH TABLES WITH READ LOCK`` prior to start copying the files and
50
51 * ``REPLICATION CLIENT`` in order to obtain the binary log position,
52
53 * ``CREATE TABLESPACE`` in order to import tables (see :ref:`imp_exp_ibk`) and
54
55 * ``SUPER`` in order to start/stop the slave threads in a replication environment.
56
57The explanation of when these are used can be found in :ref:`how_ibk_works`.
58
59An SQL example of creating a database user with the minimum privileges required to full backups would be:
60
61.. code-block:: sql
62
63 mysql> CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 's3cret';
64 mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'bkpuser';
65 mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'bkpuser'@'localhost';
66 mysql> FLUSH PRIVILEGES;
067
=== added file 'doc/source/innobackupex/remote_backups_ibk.rst'
--- doc/source/innobackupex/remote_backups_ibk.rst 1970-01-01 00:00:00 +0000
+++ doc/source/innobackupex/remote_backups_ibk.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,18 @@
1=====================================================
2 Sending Backups to Remote Hosts with |innobackupex|
3=====================================================
4
5Besides of using the :option:`--stream` for sending the backup to another host via piping (see :doc:`streaming_backups_innobackupex`), |innobackupex| can do it directly with the :option:`--remote-host` ::
6
7 $ innobackupex --remote-host=REMOTEUSER@REMOTEHOST /path/IN/REMOTE/HOST/to/backup/
8
9|innobackupex| will test the connection to ``REMOTEHOST`` via :command:`ssh` and create the backup directories needed as the ``REMOTEUSER`` you specified. The options for :command:`ssh` can be specified with :option:`--sshopt`
10
11.. warning:: The path you provide for storing the backup will be created at ``REMOTEHOST``, not at the local host.
12
13Then all the log files will be written to a temporary file (you can choose where to store this file with the :option:`--tmpdir` option) and will be copied via :command:`scp`. The options for :command:`scp` can be specified with :option:`--options-scp` (``-Cp -c arcfour`` by default), for example::
14
15 $ innobackupex --remote-host=REMOTEUSER@REMOTEHOST /path/IN/REMOTE/HOST/to/backup/ \
16 --tmpdir=/tmp --options-scp="-Cp -c arcfour"
17
18
019
=== added file 'doc/source/innobackupex/replication_ibk.rst'
--- doc/source/innobackupex/replication_ibk.rst 1970-01-01 00:00:00 +0000
+++ doc/source/innobackupex/replication_ibk.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,19 @@
1============================================
2 Taking Backups in Replication Environments
3============================================
4
5There are options specific to backing up servers in a replication environments.
6
7The :option:`--slave-info` option
8=================================
9
10This option is useful when backing up a replication slave server. It prints the binary log position and name of the master server. It also writes this information to the :file:`xtrabackup_slave_info` file as a ``CHANGE MASTER`` statement.
11
12This is useful for setting up a new slave for this master can be set up by starting a slave server on this backup and issuing the statement saved in the :file:`xtrabackup_slave_info` file. More details of this procedure can be found in :ref:`replication_howto`.
13
14The :option:`--safe-slave-backup` option
15========================================
16
17In order to assure a consistent replication state, this option stops the slave SQL thread and wait to start backing up until ``Slave_open_temp_tables`` in ``SHOW STATUS`` is zero. If there are no open temporary tables, the backup will take place, otherwise the SQL thread will be started and stopped until there are no open temporary tables. The backup will fail if ``Slave_open_temp_tables`` does not become zero after :option:`--safe-slave-backup-timeout` seconds (defaults to 300 seconds). The slave SQL thread will be restarted when the backup finishes.
18
19Using this option is always recommended when taking backups from a slave server.
020
=== added file 'doc/source/innobackupex/restoring_a_backup_ibk.rst'
--- doc/source/innobackupex/restoring_a_backup_ibk.rst 1970-01-01 00:00:00 +0000
+++ doc/source/innobackupex/restoring_a_backup_ibk.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,20 @@
1=============================================
2 Restoring a Full Backup with |innobackupex|
3=============================================
4
5For convenience, |innobackupex| has a :option:`--copy-back` option, which performs the restoration of a backup to the server's :term:`datadir` ::
6
7 $ innobackupex --copy-back /path/to/BACKUP-DIR
8
9It will copy all the data-related files back to the server's :term:`datadir`, determined by the :file:`backup-my.cnf` configuration file in the directory. You should check the last line of the output for a success message::
10
11 innobackupex: Finished copying back files.
12
13 111225 01:08:13 innobackupex: completed OK!
14
15
16As files’ attributes will be preserved, in most cases you will need to change the files’ ownership to ``mysql`` before starting the database server, as they will be owned by the user who created the backup::
17
18 $ chown -R mysql:mysql /var/lib/mysql
19
20Also note that all of these operations will be done as the user calling |innobackupex|, you will need write permissions on the server's :term:`datadir`.
021
=== added file 'doc/source/innobackupex/streaming_backups_innobackupex.rst'
--- doc/source/innobackupex/streaming_backups_innobackupex.rst 1970-01-01 00:00:00 +0000
+++ doc/source/innobackupex/streaming_backups_innobackupex.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,34 @@
1===================================
2 Streaming and Compressing Backups
3===================================
4
5Streaming mode, supported by |XtraBackup|, sends backup to ``STDOUT`` in special ``tar`` format instead of copying files to the backup directory.
6
7This allows to pipe the stream to other programs, providing great flexibility to the output of it. For example, compression is achieved by piping the output to a compression utility.
8
9.. warning:: If both --stream and --incremental are passed to innobackupex, the incremental parameters are ignored and a full backup is created.
10
11To use this feature, you must use the :option:`--stream`, providing the format of the stream (only ``tar`` is supported at this moment) and where should the store the temporary files::
12
13 $ innobackupex --stream=tar /tmp
14
15|innobackupex| starts |xtrabackup| in :option:`--log-stream` mode in a child process, and redirects its log to a temporary file. It then uses |tar4ibd| to stream all of the data files to ``STDOUT``, in a special ``tar`` format. See :doc:`../tar4ibd/tar4ibd_binary` for details. After it finishes streaming all of the data files to ``STDOUT``, it stops xtrabackup and streams the saved log file too.
16
17To store the backup in one archive it directly ::
18
19 $ innobackupex --stream=tar /root/backup/ > /root/backup/out.tar
20
21For sending it directly to another host by ::
22
23 $ innobackupex --stream=tar ./ | ssh user@destination \ "cat - > /data/backups/backup.tar"
24
25.. warning:: To extract |XtraBackup| 's archive you **must** use |tar| with ``-i`` option::
26
27 $ tar -xizf backup.tar.gz
28
29Choosing the compression tool that best suits you: ::
30
31 $ innobackupex --stream=tar ./ | gzip - > backup.tar.gz
32 $ innobackupex --stream=tar ./ | bzip2 - > backup.tar.bz2
33
34Note that the streamed backup will need to be prepared before restoration. Streaming mode does not prepare the backup.
035
=== added file 'doc/source/innobackupex/throttling_ibk.rst'
--- doc/source/innobackupex/throttling_ibk.rst 1970-01-01 00:00:00 +0000
+++ doc/source/innobackupex/throttling_ibk.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,11 @@
1========================================
2 Throttling backups with |innobackupex|
3========================================
4
5Although |innobackupex| does not block your database's operation, any backup can add load to the system being backed up. On systems that do not have much spare I/O capacity, it might be helpful to throttle the rate at which |innobackupex| reads and writes |InnoDB| data. You can do this with the :option:`--throttle` option.
6
7This option is passed directly to |xtrabackup| binary and only limits the operations on the logs and files of |InnoDB| tables. It doesn't have an effect on reading or writing files from tables with other storage engine.
8
9One way of checking the current I/O operations at a system is with :command:`iostat` command. See :ref:`throttling_backups_xbk` for details of how throttling works.
10
11The :option:`--throttle` option is somehow similar to the ``--sleep`` option in ``mysqlbackup`` and should be used instead of it, as ``--sleep`` will be ignored.
012
=== added directory 'doc/source/installation'
=== added file 'doc/source/installation.rst'
--- doc/source/installation.rst 1970-01-01 00:00:00 +0000
+++ doc/source/installation.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,33 @@
1=======================================
2 Installing |XtraBackup| from Binaries
3=======================================
4
5Before installing, you might want to read the :doc:`release-notes`.
6
7Ready-to-use binaries are available from the |XtraBackup| `download page <http://www.percona.com/downloads/XtraBackup/>`_, including:
8
9 * ``RPM`` packages for *RHEL* 5 and *RHEL* 6 (including compatible distributions such as CentOS and Oracle Enterprise Linux)
10
11 * *Debian* packages for *Debian* and *Ubuntu*
12
13 * Generic ``.tar.gz`` binary packages
14
15Using Percona Software Repositories
16===================================
17
18.. toctree::
19 :maxdepth: 1
20
21 installation/apt_repo
22 installation/yum_repo
23
24|Percona| provides repositories for :program:`yum` (``RPM`` packages for *Red Hat Enterprise Linux* and compatible distrubutions such as *CentOS*, *Oracle Enterprise Linux*, *Amazon Linux AMI*, and *Fedora*) and :program:`apt` (:file:`.deb` packages for *Ubuntu* and *Debian*) for software such as |Percona Server|, |XtraDB|, |XtraBackup|, and |Percona Toolkit|. This makes it easy to install and update your software and its dependencies through your operating system's package manager.
25
26This is the recommend way of installing where possible.
27
28.. Installing on Windows
29.. =====================
30
31.. Currently the *Microsoft Windows* version is on **ALPHA** stage, binaries provided in the `download page <http://www.percona.com/downloads/XtraBackup/>`_ are for previewing and testing purposes, you should expect no stability in its functioning.
32
33.. Having this in mind, make sure that you have a *Perl* interpreter installed and the |MySQL| client is accessible via the *Windows* ``PATH`` variable. Unzip the |Xtrabackup| package and they are ready to be used.
034
=== added file 'doc/source/installation/apt_repo.rst'
--- doc/source/installation/apt_repo.rst 1970-01-01 00:00:00 +0000
+++ doc/source/installation/apt_repo.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,50 @@
1===================================
2 Percona :program:`apt` Repository
3===================================
4
5*Debian* and *Ubuntu* packages from *Percona* are signed with a key. Before using the repository, you should add the key to :program:`apt`. To do that, run the following commands: ::
6
7 $ gpg --keyserver hkp://keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
8 ... [some output removed] ...
9 gpg: imported: 1
10
11 $ gpg -a --export CD2EFD2A | sudo apt-key add -
12
13Add this to :file:`/etc/apt/sources.list`, replacing ``lenny`` with the name of your distribution: ::
14
15 deb http://repo.percona.com/apt lenny main
16 deb-src http://repo.percona.com/apt lenny main
17
18Remember to update the local cache: ::
19
20 $ apt-get update
21
22Supported Architectures
23=======================
24
25 * x86_64 (also known as amd64)
26 * x86
27
28Supported Releases
29==================
30
31Debian
32------
33
34 * 5.0 lenny
35 * 6.0 squeeze
36
37Ubuntu
38------
39
40 * 10.04LTS lucid
41 * 11.04 natty
42 * 11.10 oneiric
43
44Release Candidate Repository
45============================
46
47To subscribe to the release candidate repository, add two lines to the :file:`/etc/apt/sources.list` file, again replacing ``lenny`` with your server's release version: ::
48
49 deb http://repo.percona.com/apt-rc lenny main
50 deb-src http://repo.percona.com/apt-rc lenny main
051
=== added file 'doc/source/installation/compiling_xtrabackup.rst'
--- doc/source/installation/compiling_xtrabackup.rst 1970-01-01 00:00:00 +0000
+++ doc/source/installation/compiling_xtrabackup.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,67 @@
1===========================================
2 Compiling and Installing from Source Code
3===========================================
4
5The source code is available from the *Launchpad* project `here <https://launchpad.net/percona-xtrabackup>`_. The easiest way to get the code is with :command:`bzr branch` of the desired release, such as the following: ::
6
7 bzr branch lp:percona-xtrabackup/1.6
8
9or ::
10
11 bzr branch lp:percona-xtrabackup
12
13You should then have a directory named after the release you branched, such as ``percona-xtrabackup``.
14
15
16Compiling on Linux
17==================
18
19Prerequisites
20-------------
21
22The following packages and tools must be installed to compile *Percona XtraBackup* from source. These might vary from system to system.
23
24In Debian-based distributions, you need to: ::
25
26 $ apt-get install build-essential flex bison automake autoconf bzr \
27 libtool cmake libaio-dev mysql-client libncurses-dev zlib1g-dev
28
29In ``RPM``-based distributions, you need to: ::
30
31 $ yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr \
32 bison libtool ncurses5-devel
33
34Compiling with :command:`build.sh`
35----------------------------------
36
37Once you have all dependencies met, the compilation is straight-forward with the bundled :command:`build.sh` script in the :file:`utils/` directory of the distribution.
38
39The script needs the codebase for which the building is targeted, you must provide it with one of the following values or aliases:
40
41 ================== ========= ============================================
42 Value Alias Server
43 ================== ========= ============================================
44 innodb51_builtin 5.1 build against built-in InnoDB in MySQL 5.1
45 innodb51 plugin build agsinst InnoDB plugin in MySQL 5.1
46 innodb55 5.5 build against InnoDB in MySQL 5.5
47 xtradb51 xtradb build against Percona Server with XtraDB 5.1
48 xtradb55 xtradb55 build against Percona Server with XtraDB 5.5
49 ================== ========= ============================================
50
51Note that the script must be executed from the base directory of |Xtrabackup| sources, and that directory must contain the packages with the source code of the codebase selected. This may appear cumbersome, but if the variable ``AUTO_LOAD="yes"`` is set, the :command:`build.sh` script will download all the source code needed for the build.
52
53At the base directory of the downloaded source code, if you execute ::
54
55 $ AUTO_DOWNLOAD="yes" ./utils/build.sh xtradb
56
57and you go for a coffee, at your return |XtraBackup| will be ready to be used. The |xtrabackup| binary will located in the following subdirectory depending on the building target:
58
59 ================== =====================================================
60 Target Location
61 ================== =====================================================
62 innodb51_builtin mysql-5.1/storage/innobase/xtrabackup
63 innodb51 mysql-5.1/storage/innodb_plugin/xtrabackup
64 innodb55 mysql-5.5/storage/innobase/xtrabackup
65 xtradb51 Percona-Server-5.1/storage/innodb_plugin/xtrabackup
66 xtradb55 Percona-Server-5.5/storage/innobase/xtrabackup
67 ================== =====================================================
068
=== added file 'doc/source/installation/yum_repo.rst'
--- doc/source/installation/yum_repo.rst 1970-01-01 00:00:00 +0000
+++ doc/source/installation/yum_repo.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,77 @@
1===================================
2 Percona :program:`yum` Repository
3===================================
4
5The |Percona| :program:`yum` repository supports popular *RPM*-based operating systems, including the *Amazon Linux AMI*.
6
7The easiest way to install the *Percona Yum* repository is to install an *RPM* that configures :program:`yum` and installs the `Percona GPG key <http://www.percona.com/downloads/RPM-GPG-KEY-percona>`_. You can also do the installation manually.
8
9Automatic Installation
10======================
11
12Execute the following command as a ``root`` user, replacing ``x86_64`` with ``i386`` if you are not running a 64-bit operating system: ::
13
14 $ rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm
15
16You should see some output such as the following: ::
17
18 Retrieving http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm
19 Preparing... ########################################### [100%]
20 1:percona-release ########################################### [100%]
21
22The RPMs for the automatic installation are available at http://www.percona.com/downloads/percona-release/ and include source code.
23
24Manual Installation
25===================
26
27To install the repository manually, place the following into a new file named :file:`/etc/yum.repos.d/Percona.repo`: ::
28
29 [percona]
30 name = CentOS $releasever - Percona
31 baseurl=http://repo.percona.com/centos/$releasever/os/$basearch/
32 enabled = 1
33 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona
34 gpgcheck = 1
35
36Also, copy the `Percona GPG key <http://www.percona.com/downloads/RPM-GPG-KEY-percona>`_ into a file named :file:`/etc/pki/rpm-gpg/RPM-GPG-KEY-percona`.
37
38Testing The Repository
39======================
40
41Make sure packages are downloaded from the repository, by executing the following command as root: ::
42
43 yum list | grep percona
44
45You should see output similar to the following: ::
46
47 percona-release.x86_64 0.0-1 installed
48 ...
49 Percona-Server-client-51.x86_64 5.1.47-rel11.1.51.rhel5 percona
50 Percona-Server-devel-51.x86_64 5.1.47-rel11.1.51.rhel5 percona
51 Percona-Server-server-51.x86_64 5.1.47-rel11.1.51.rhel5 percona
52 Percona-Server-shared-51.x86_64 5.1.47-rel11.1.51.rhel5 percona
53 Percona-Server-test-51.x86_64 5.1.47-rel11.1.51.rhel5 percona
54 ...
55 xtrabackup.x86_64 1.2-22.rhel5 percona
56
57Supported Platforms
58===================
59
60 * ``x86_64``
61 * ``i386``
62
63Supported Releases
64==================
65
66The *CentOS* repositories should work well with *Red Hat Enterprise Linux* too, provided that :program:`yum` is installed on the server.
67
68* *CentOS* 5 and *RHEL* 5
69* *CentOS* 6 and *RHEL* 6
70* *Amazon Linux AMI* (works the same as *CentOS* 5)
71
72Release Candidate Repository
73============================
74
75To subscribe to the release candidate repository, install the release candidate (RC) *RPM*: ::
76
77 rpm -Uhv http://www.percona.com/downloads/percona-release/percona-rc-0.0-2.x86_64.rpm
078
=== added file 'doc/source/intro.rst'
--- doc/source/intro.rst 1970-01-01 00:00:00 +0000
+++ doc/source/intro.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,165 @@
1==========================
2 About Percona Xtrabackup
3==========================
4
5
6*Percona XtraBackup* is the world's only open-source, free |MySQL| hot backup software that performs non-blocking backups for |InnoDB| and |XtraDB| databases. With *Percona XtraBackup*, you can achieve the following benefits:
7
8* Backups that complete quickly and reliably
9
10* Uninterrupted transaction processing during backups
11
12* Savings on disk space and network bandwidth
13
14* Automatic backup verification
15
16* Higher uptime due to faster restore time
17
18|XtraBackup| makes |MySQL| hot backups for all versions of |Percona Server|, |MySQL|, |MariaDB|, and |Drizzle|. It performs streaming, compressed, and incremental |MySQL| backups.
19
20|Percona| |XtraBackup| works with |MySQL|, |MariaDB|, *OurDelta*, |Percona Server|, and |Drizzle| databases (support for |Drizzle| is beta). It supports completely non-blocking backups of |InnoDB|, |XtraDB|, and *HailDB* storage engines. In addition, it can back up the following storage engines by briefly pausing writes at the end of the backup: |MyISAM|, :term:`Merge <.MRG>`, and :term:`Archive <.ARM>`, including partitioned tables, triggers, and database options.
21
22|Percona|'s enterprise-grade commercial `MySQL Support <http://www.percona.com/mysql-support/>`_ contracts include support for XtraBackup. We recommend support for critical production deployments.
23
24MySQL Backup Tool Feature Comparison
25====================================
26
27.. raw:: html
28
29 <table class="datatable" style="text-align: center;">
30 <tbody style="text-align: center;"><tr><th class="label">Feature</th><th>Percona XtraBackup</th><th>MySQL Enterprise Backup<br>(InnoDB Hot Backup)</th></tr>
31 <tr><td class="label">License</td><td style="text-align: center;">GPL</td><td style="text-align: center;">Proprietary</td></tr>
32 <tr><td class="label">Price</td><td style="text-align: center;">Free</td><td style="text-align: center;"><a href="http://www.mysql.com/products/">$5000 per server</a></td></tr>
33 <tr><td class="label">Open source</td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td><td></td></tr>
34 <tr><td class="label">Non-blocking</td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td></tr>
35 <tr><td class="label">InnoDB backups</td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td></tr>
36 <tr><td class="label">MyISAM backups <sup><a href="#note-1">1</a></sup></td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td></tr>
37 <tr><td class="label">Compressed backups</td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td></tr>
38 <tr><td class="label">Partial backups</td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td></tr>
39 <tr><td class="label">Throttling <sup><a href="#note-2">2</a></sup></td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td></tr>
40 <tr><td class="label">Point-in-time recovery support</td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td></tr>
41 <tr><td class="label">Incremental backups</td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td></tr>
42 <tr><td class="label">Parallel backups</sup></td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td><td></td></tr>
43 <tr><td class="label">Streaming backups</td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td><td></td></tr>
44 <tr><td class="label">OS buffer optimizations <sup><a href="#note-3">3</a></sup></td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td><td></td></tr>
45 <tr><td class="label">Export individual tables</td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td><td></td></tr>
46 <tr><td class="label">Restore tables to a different server</td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td><td></td></tr>
47 <tr><td class="label">Analyze data &amp; index files</td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td><td></td></tr>
48 <tr><td class="label">Familiar command-line behavior <sup><a href="#note-4">4</a></sup></td><td style="text-align: center;"><img width="24" height="24" alt="Yes" src="http://s0.percona.com/check-yes.png"></td><td></td></tr>
49 </tbody></table>
50
51
52.. .. tabularcolumns:: |l|c|c|
53
54
55.. .. list-table:: MySQL Backup Tool Feature Comparison
56.. :header-rows: 1
57
58.. * - Feature
59.. - Percona XtraBackup
60.. - MySQL Enterprise Backup (InnoDB Hot Backup)
61.. * - License
62.. - GPL
63.. - Proprietary
64.. * - Price
65.. - Free
66.. - $5000 per server
67.. * - Open source
68.. - |yes|
69.. -
70.. * - Non-blocking
71.. - |yes|
72.. - |yes|
73.. * - InnoDB backups
74.. - |yes|
75.. - |yes|
76.. * - MyISAM backups [#f1]_
77.. - |yes|
78.. - |yes|
79.. * - Compressed backups
80.. - |yes|
81.. - |yes|
82.. * - Partial backups
83.. - |yes|
84.. - |yes|
85.. * - Throttling [#f2]_
86.. - |yes|
87.. - |yes|
88.. * - Point-in-time recovery support
89.. - |yes|
90.. - |yes|
91.. * - Incremental backups
92.. - |yes|
93.. - |yes|
94.. * - Parallel backups [#f3]_
95.. - |yes|
96.. -
97.. * - Streaming backups
98.. - |yes|
99.. -
100.. * - OS buffer optimizations [#f4]_
101.. - |yes|
102.. -
103.. * - Export individual tables
104.. - |yes|
105.. -
106.. * - Restore tables to a different server
107.. - |yes|
108.. -
109.. * - Analyze data & index files
110.. - |yes|
111.. -
112.. * - Familiar command-line behavior [#f5]_
113.. - |yes|
114.. -
115
116.. .. |yes| image:: check-yes.png
117
118.. License GPL Proprietary
119.. Price Free $5000 per server
120.. Open source Yes
121.. Non-blocking Yes Yes
122.. InnoDB backups Yes Yes
123.. MyISAM backups [#f1]_ Yes Yes
124.. Compressed backups Yes Yes
125.. Partial backups Yes Yes
126.. Throttling [#f2]_ Yes Yes
127.. Point-in-time recovery support Yes Yes
128.. Incremental backups Yes Yes
129.. Parallel backups [#f3]_ Yes
130.. Streaming backups Yes
131.. OS buffer optimizations [#f4]_ Yes
132.. Export individual tables Yes
133.. Restore tables to a different server Yes
134.. Analyze data & index files Yes
135.. Familiar command-line behavior [#f5]_ Yes
136.. ======================================== =================== =========================
137
138The above comparison is based on XtraBackup version 1.4 and MySQL Enterprise Backup version 3.5 on December 7, 2010.
139
140
141What are the features of Percona XtraBackup?
142============================================
143
144Here is a short list of |XtraBackup| features. See the documentation for more.
145
146* Ceate hot |InnoDB| backups without pausing your database
147* Make incremental backups of |MySQL|
148* Stream compressed |MySQL| backups to another server
149* Move tables between |MySQL| servers online
150* Create new |MySQL| replication slaves easily
151* Backup |MySQL| without adding load to the server
152
153
154
155.. rubric:: Footnotes
156
157.. [#note-1] |MyISAM| backups require a table lock.
158
159.. [#note-2] |XtraBackup| performs throttling based on the number of IO operations per second. *MySQL Enterprise Backup* supports a configurable sleep time between operations.
160
161.. [#note-3] |XtraBackup| tunes the operating system buffers to avoid swapping. See the documentation.
162
163.. [#note-4] |XtraBackup| is linked against the |MySQL| client libraries, so it behaves the same as standard |MySQL| command-line programs. *MySQL Enterprise Backup* has its own command-line and configuration-file behaviors.
164
165
0166
=== added file 'doc/source/manual.rst'
--- doc/source/manual.rst 1970-01-01 00:00:00 +0000
+++ doc/source/manual.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,27 @@
1.. _user-manual:
2
3==================================
4 *Percona XtraBackup* User Manual
5==================================
6
7.. toctree::
8 :maxdepth: 1
9 :hidden:
10
11 innobackupex/innobackupex_script
12 xtrabackup_bin/xtrabackup_binary
13 tar4ibd/tar4ibd_binary
14 how_xtrabackup_works
15
16|XtraBackup| is really a set of three tools:
17
18:doc:`innobackupex <innobackupex/innobackupex_script>`
19 a wrapper script that provides functionality to backup a whole |MySQL| database instance with :term:`MyISAM`, :term:`InnoDB`, and :term:`XtraDB` tables.
20
21:doc:`xtrabackup <xtrabackup_bin/xtrabackup_binary>`
22 a compiled *C* binary, which copies only :term:`InnoDB` and :term:`XtraDB` data
23
24:doc:`tar4ibd <tar4ibd/tar4ibd_binary>`
25 tars |InnoDB| data safely.
26
27It is possible to use the |xtrabackup| binary alone, however, the recommend way is using it through the |innobackupex| wrapper script and let it execute |xtrabackup| for you. It might be helpful to first learn :doc:`how to use innobackupex <innobackupex/innobackupex_script>`, and then learn :doc:`how to use xtrabackup <xtrabackup_bin/xtrabackup_binary>` for having a better low-level understanding or control of the tool if needed.
028
=== added directory 'doc/source/percona-theme'
=== added file 'doc/source/percona-theme/layout.html'
--- doc/source/percona-theme/layout.html 1970-01-01 00:00:00 +0000
+++ doc/source/percona-theme/layout.html 2012-02-16 17:09:19 +0000
@@ -0,0 +1,473 @@
1{#
2 basic/layout.html
3 ~~~~~~~~~~~~~~~~~
4
5 Master layout template for Sphinx themes.
6
7 :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
8 :license: BSD, see LICENSE for details.
9#}
10{%- block doctype -%}
11<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
12 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
13{%- endblock %}
14{%- set reldelim1 = reldelim1 is not defined and ' &raquo;' or reldelim1 %}
15{%- set reldelim2 = reldelim2 is not defined and ' |' or reldelim2 %}
16{%- set render_sidebar = (not embedded) and (not theme_nosidebar|tobool) and
17 (sidebars != []) %}
18{%- set url_root = pathto('', 1) %}
19{# XXX necessary? #}
20{%- if url_root == '#' %}{% set url_root = '' %}{% endif %}
21{%- if not embedded and docstitle %}
22 {%- set titlesuffix = " &mdash; "|safe + docstitle|e %}
23{%- else %}
24 {%- set titlesuffix = "" %}
25{%- endif %}
26
27{%- macro relbar() %}
28 <div class="related">
29 <h3>{{ _('Navigation') }}</h3>
30 <ul>
31 {%- for rellink in rellinks %}
32 <li class="right" {% if loop.first %}style="margin-right: 10px"{% endif %}>
33 <a href="{{ pathto(rellink[0]) }}" title="{{ rellink[1]|striptags|e }}"
34 {{ accesskey(rellink[2]) }}>{{ rellink[3] }}</a>
35 {%- if not loop.first %}{{ reldelim2 }}{% endif %}</li>
36 {%- endfor %}
37 {%- block rootrellink %}
38 <li><a href="{{ pathto(master_doc) }}">{{ shorttitle|e }}</a>{{ reldelim1 }}</li>
39 {%- endblock %}
40 {%- for parent in parents %}
41 <li><a href="{{ parent.link|e }}" {% if loop.last %}{{ accesskey("U") }}{% endif %}>{{ parent.title }}</a>{{ reldelim1 }}</li>
42 {%- endfor %}
43 {%- block relbaritems %} {% endblock %}
44 </ul>
45 </div>
46{%- endmacro %}
47
48{%- macro sidebar() %}
49 {%- if render_sidebar %}
50 <div class="sphinxsidebar">
51 <div class="sphinxsidebarwrapper">
52 {%- block sidebarlogo %}
53 {%- if logo %}
54 <p class="logo"><a href="{{ pathto(master_doc) }}">
55 <img class="logo" src="{{ pathto('_static/' + logo, 1) }}" alt="Logo"/>
56 </a></p>
57 {%- endif %}
58
59<div class="noborder" id="sidenavi">
60
61 <div class="sidebanner" id="sidebanner">
62 <div class="header"><a href="/contact/sales">Call Us</a></div>
63 <div class="numbers">
64 <div style="padding-bottom: 4px">
65 +1-888-316-9775 (USA - Sales)<br>
66 +1-208-473-2904 (USA - Sales)
67 </div>
68 <div>
69 +44-208-133-0309 (UK - Sales)
70 </div>
71 <div>
72 +1-888-488-8556 (Emergency)
73 </div>
74 </div>
75 </div>
76
77 <div id="sidefloater"></div>
78</div>
79
80 {%- endblock %}
81 {%- if sidebars != None %}
82 {#- new style sidebar: explicitly include/exclude templates #}
83 {%- for sidebartemplate in sidebars %}
84 {%- include sidebartemplate %}
85 {%- endfor %}
86 {%- else %}
87 {#- old style sidebars: using blocks -- should be deprecated #}
88 {%- block sidebartoc %}
89 {%- include "localtoc.html" %}
90 {%- endblock %}
91 {%- block sidebarrel %}
92 {%- include "relations.html" %}
93 {%- endblock %}
94 {%- block sidebarsourcelink %}
95 {%- include "sourcelink.html" %}
96 {%- endblock %}
97 {%- if customsidebar %}
98 {%- include customsidebar %}
99 {%- endif %}
100 {%- block sidebarsearch %}
101 {%- include "searchbox.html" %}
102 {%- endblock %}
103 {%- endif %}
104
105 </div>
106 </div>
107 {%- endif %}
108{%- endmacro %}
109
110{%- macro script() %}
111 <script type="text/javascript">
112 var DOCUMENTATION_OPTIONS = {
113 URL_ROOT: '{{ url_root }}',
114 VERSION: '{{ release|e }}',
115 COLLAPSE_INDEX: false,
116 FILE_SUFFIX: '{{ '' if no_search_suffix else file_suffix }}',
117 HAS_SOURCE: {{ has_source|lower }}
118 };
119 </script>
120 {%- for scriptfile in script_files %}
121 <script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script>
122 {%- endfor %}
123{%- endmacro %}
124
125{%- macro css() %}
126 <link rel="stylesheet" href="{{ pathto('_static/percona.com.css', 1) }}" type="text/css" />
127 <link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" />
128 <link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" />
129 {%- for cssfile in css_files %}
130 <link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" />
131 {%- endfor %}
132{%- endmacro %}
133
134<html xmlns="http://www.w3.org/1999/xhtml">
135 <head>
136 <meta http-equiv="Content-Type" content="text/html; charset={{ encoding }}" />
137 {{ metatags }}
138 {%- block htmltitle %}
139 <title>{{ title|striptags|e }}{{ titlesuffix }}</title>
140 {%- endblock %}
141
142 {{ css() }}
143 {%- if not embedded %}
144 {{ script() }}
145 {%- if use_opensearch %}
146 <link rel="search" type="application/opensearchdescription+xml"
147 title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}"
148 href="{{ pathto('_static/opensearch.xml', 1) }}"/>
149 {%- endif %}
150
151<script src="{{ pathto('_static/percona.com.js', 1)}}" type="text/javascript"></script>
152
153 {%- if favicon %}
154 <link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/>
155 {%- endif %}
156 {%- endif %}
157{%- block linktags %}
158 {%- if hasdoc('about') %}
159 <link rel="author" title="{{ _('About these documents') }}" href="{{ pathto('about') }}" />
160 {%- endif %}
161 {%- if hasdoc('genindex') %}
162 <link rel="index" title="{{ _('Index') }}" href="{{ pathto('genindex') }}" />
163 {%- endif %}
164 {%- if hasdoc('search') %}
165 <link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}" />
166 {%- endif %}
167 {%- if hasdoc('copyright') %}
168 <link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}" />
169 {%- endif %}
170 <link rel="top" title="{{ docstitle|e }}" href="{{ pathto('index') }}" />
171 {%- if parents %}
172 <link rel="up" title="{{ parents[-1].title|striptags|e }}" href="{{ parents[-1].link|e }}" />
173 {%- endif %}
174 {%- if next %}
175 <link rel="next" title="{{ next.title|striptags|e }}" href="{{ next.link|e }}" />
176 {%- endif %}
177 {%- if prev %}
178 <link rel="prev" title="{{ prev.title|striptags|e }}" href="{{ prev.link|e }}" />
179 {%- endif %}
180{%- endblock %}
181{%- block extrahead %} {% endblock %}
182 </head>
183 <body>
184
185{%- block header %}
186
187 <!-- <div id="stickywrapper"> -->
188 <!-- <div id="stickycontent"> -->
189 <div id="header"><div class="header">
190 <div class="logo"><a href="http://www.percona.com/" onfocus="this.blur()"><img src="http://s3.percona.com/ui-logo.png" alt="Percona Performance Consulting Experts" width="240" height="55" /></a></div>
191 <div class="right">
192 <div class="searchlink"><a onmouseover="SEARCH.Open()"><img id="searchlink-anchor" src="http://s2.percona.com/ui-search.png" alt="" /></a></div>
193 <span class="inv"><![CDATA[<noindex>]]></span>
194 <div class="navicontainer"><div class="navi">
195<span id="navilink-span-about-us" ><a id="navilink-a-about-us" href="http://www.percona.com/about-us/">About Us</a></span><span id="navilink-span-mysql-consulting" ><a id="navilink-a-mysql-consulting" href="http://www.percona.com/mysql-consulting/">Consulting</a></span><span id="navilink-span-support" ><a id="navilink-a-support" href="http://www.percona.com/mysql-support/">Support</a></span><span id="navilink-span-training" ><a id="navilink-a-training" href="http://www.percona.com/training/">Training</a></span><span id="navilink-span-development" ><a id="navilink-a-development" href="http://www.percona.com/development/">Development</a></span><span id="navilink-span-software" class="selected"><a id="navilink-a-software" class="selected" href="http://www.percona.com/software/">Software</a></span><span id="navilink-span-prices" ><a id="navilink-a-prices" href="http://www.percona.com/prices/">Prices</a></span><span id="navilink-span-contact" ><a id="navilink-a-contact" href="http://www.percona.com/contact/">Contact Us</a></span> </div></div>
196 <span class="inv"><![CDATA[</noindex>]]></span>
197 </div>
198 </div></div>
199 <div id="stripe"></div>
200
201{% endblock %}
202
203 <!-- <div id="stripe"></div> -->
204
205{%- block content %}
206
207
208
209 {%- block sidebar1 %} {# possible location for sidebar #} {% endblock %}
210
211 <div class="document">
212
213
214
215 {%- block document %}
216 <div class="documentwrapper">
217 {%- if render_sidebar %}
218 <div class="bodywrapper">
219 {%- endif %}
220
221 {%- block relbar1 %}{{ relbar() }}{% endblock %}
222
223 <div class="body">
224 {% block body %} {% endblock %}
225 </div>
226
227 {%- block relbar2 %}{{ relbar() }}
228
229 {%- if render_sidebar %}
230 </div>
231 {%- endif %}
232
233
234
235 </div>
236
237 {%- endblock %}
238
239 {%- block sidebar2 %}{{ sidebar() }}{% endblock %}
240
241 <div class="clearer"></div>
242
243 {%- if last_updated %}
244 {% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %}
245 {%- endif %}
246
247 <div class="license">
248
249 {%- if show_copyright %}
250 {%- if hasdoc('copyright') %}
251 {% trans path=pathto('copyright'), copyright=copyright|e %}&copy; <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %}
252 {%- else %}
253 {% trans copyright=copyright|e %}&copy; Copyright {{ copyright }}.{% endtrans %}
254 {%- endif %}
255 {%- endif %}
256
257 <br />
258 Except where otherwise noted, this documentation is licensed under the following license:
259 <br />
260 <a class="urlextern" rel="license" href="http://creativecommons.org/licenses/by-sa/2.0/">
261 CC Attribution-ShareAlike 2.0 Generic</a><br />
262
263 {%- if show_sphinx %}
264 {% trans sphinx_version=sphinx_version|e %}Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> {{ sphinx_version }}.{% endtrans %}
265 {%- endif %}
266
267 </div>
268
269 </div>
270 {%- endblock %}
271
272 {% endblock %}
273
274{%- block footer %}
275
276 <div class="file-bugs">
277 This documentation is developed in Launchpad as part of the <a href="https://code.launchpad.net/percona-xtrabackup">XtraBackup source code</a>.</br>
278If you find errors, omissions or encounter trouble understanding parts of our documentation, please <a href="https://bugs.launchpad.net/percona-xtrabackup/+filebug?field.tags=doc&field.comment=[In:{{ title|e }}]&?field.tags=doc&field.title=[DOC] ">file a bug</a>.
279 </div>
280
281 <div class="footer">
282
283 <div class="footer">
284 <div class="logo"><img width="110" height="25" alt="" src="{{ pathto('_static/ui-footer-logo.png', 1) }}">
285 </div>
286
287 <div class="text">
288 <span class="inv"><!--[CDATA[<noindex-->]]&gt;</span>
289 Call us: 1-888-316-9775 • <a href="/contact">Contact Us</a><br>
290 MySQL and InnoDB are trademarks of Oracle Corp.<br>
291 Proudly running <a href="/software/percona-server/">Percona Server<span id="recentServerVersion"></span></a><br>
292 Copyright &copy; 2006-2011 Percona Inc.<br>
293 <a href="/about-us/policies/">Copyright, Trademark, and Privacy Policy</a> • <a href="/sitemap/">Sitemap</a>
294 <span class="inv"><!--[CDATA[</noindex-->]]&gt;</span>
295 </div>
296 </div>
297
298 </div>
299{%- endblock %}
300<span class="inv"><!--[CDATA[<noindex-->]]&gt;</span>
301<div id="submenus">
302 <div class="navi-dropdown" id="navi-dropdown-about-us">
303 <div class="navi-dropdown-header-l"><!-- //--></div>
304 <div class="navi-dropdown-content">
305 <div class="item"><a href="http://www.percona.com/about-us/our-mission/">Our Mission</a></div>
306 <div class="item"><a href="http://www.percona.com/about-us/why-percona/">Why Percona?</a></div>
307 <div class="item"><a href="http://www.percona.com/about-us/procedures/">Coordinating with Percona</a></div>
308 <div class="item"><a href="http://www.percona.com/about-us/customers/">Customers</a></div>
309 <div class="item"><a href="http://www.percona.com/webinars/">Webinars</a></div>
310 <div class="item"><a href="http://www.percona.com/events/">Events</a></div>
311 <div class="item"><a href="http://www.percona.com/about-us/mysql-case-studies/">MySQL Case Studies</a></div>
312 <div class="item"><a href="http://www.percona.com/about-us/our-team/">Our Team</a></div>
313 <div class="item"><a href="http://www.percona.com/about-us/books/">Our Books</a></div>
314 <div class="item"><a href="http://www.percona.com/about-us/blogs/">Our Blogs</a></div>
315 <div class="item"><a href="http://www.percona.com/about-us/mysql-white-papers/">MySQL White Papers</a></div>
316 <div class="item"><a href="http://www.percona.com/about-us/conferences/">Conferences</a></div>
317 <div class="item"><a href="http://www.percona.com/about-us/presentations/">Presentations</a></div>
318 <div class="item"><a href="http://www.percona.com/about-us/newsletters/">Newsletters</a></div>
319 <div class="item"><a href="http://www.percona.com/about-us/pressreleases/">Press Releases</a></div>
320 <div class="item"><a href="http://www.percona.com/about-us/careers/">Careers</a></div>
321 </div>
322 <div class="navi-dropdown-footer"><!-- //--></div>
323 </div>
324 <div class="navi-dropdown" id="navi-dropdown-mysql-consulting">
325 <div class="navi-dropdown-header-l"><!-- //--></div>
326 <div class="navi-dropdown-content">
327 <div class="item"><a href="http://www.percona.com/mysql-consulting/overview/">MySQL Consulting Overview</a></div>
328 <div class="item"><a href="http://www.percona.com/mysql-consulting/architecture/">MySQL Architecture &amp; Design</a></div>
329 <div class="item"><a href="http://www.percona.com/mysql-consulting/mysql-backups/">MySQL Backups</a></div>
330 <div class="item"><a href="http://www.percona.com/mysql-consulting/cloud-computing/">MySQL Cloud Solutions</a></div>
331 <div class="item"><a href="http://www.percona.com/mysql-consulting/cluster/">MySQL Cluster Consulting</a></div>
332 <div class="item"><a href="http://www.percona.com/mysql-consulting/data-warehousing/">MySQL Data Warehousing</a></div>
333 <div class="item"><a href="http://www.percona.com/mysql-consulting/data-recovery/">MySQL Data Recovery</a></div>
334 <div class="item"><a href="http://www.percona.com/mysql-consulting/high-availability/">MySQL High Availability</a></div>
335 <div class="item"><a href="http://www.percona.com/mysql-consulting/mysql-monitoring-graphing/">MySQL Monitoring &amp; Graphing</a></div>
336 <div class="item"><a href="http://www.percona.com/mysql-consulting/mysql-onsite-consulting/">MySQL Onsite Consulting</a></div>
337 <div class="item"><a href="http://www.percona.com/mysql-consulting/performance-audit/">MySQL Performance Audit</a></div>
338 <div class="item"><a href="http://www.percona.com/mysql-consulting/remote-dba/">MySQL Remote DBA</a></div>
339 <div class="item"><a href="http://www.percona.com/mysql-consulting/mysql-replication/">MySQL Replication</a></div>
340 <div class="item"><a href="http://www.percona.com/mysql-consulting/upgrade/">MySQL Version Upgrades</a></div>
341 <div class="item"><a href="http://www.percona.com/mysql-consulting/24x7-emergency/">Emergency 24×7 Consulting</a></div>
342 <div class="item"><a href="http://www.percona.com/mysql-consulting/migration/">Migration to MySQL</a></div>
343 <div class="item"><a href="http://www.percona.com/drizzle-consulting/">Drizzle Consulting</a></div>
344 <div class="item"><a href="http://www.percona.com/mysql-consulting/sphinx/">Sphinx Consulting</a></div>
345 <div class="item"><a href="http://www.percona.com/mysql-consulting/drbd/">DRBD Consulting</a></div>
346 <div class="item"><a href="http://www.percona.com/mysql-consulting/memcached/">Memcached Consulting</a></div>
347 <div class="item"><a href="http://www.percona.com/mysql-consulting/other-services/">Other Consulting Services</a></div>
348 </div>
349 <div class="navi-dropdown-footer"><!-- //--></div>
350 </div>
351 <div class="navi-dropdown" id="navi-dropdown-support">
352 <div class="navi-dropdown-header-l"><!-- //--></div>
353 <div class="navi-dropdown-content">
354 <div class="item"><a href="http://www.percona.com/mysql-support/">Support for MySQL</a></div>
355 <div class="item"><a href="http://www.percona.com/mysql-support/tco-calculator/">Calculate your Savings</a></div>
356 <div class="item"><a href="http://www.percona.com/drizzle-support/">Drizzle Support</a></div>
357 <div class="item"><a href="http://www.percona.com/mysql-support/policies/">Support Policies</a></div>
358 <div class="item"><a href="http://www.percona.com/mysql-support/policies/supported-software/">Supported Software</a></div>
359 <div class="item"><a href="http://www.percona.com/mysql-support/policies/supported-platforms/">Supported Platforms &amp; Versions</a></div>
360 <div class="item"><a href="http://www.percona.com/mysql-support/consulting-vs-support/">Consulting vs. Support</a></div>
361 <div class="item"><a href="https://customers.percona.com">Customer Portal Login</a></div>
362 </div>
363 <div class="navi-dropdown-footer"><!-- //--></div>
364 </div>
365 <div class="navi-dropdown" id="navi-dropdown-training">
366 <div class="navi-dropdown-header-l"><!-- //--></div>
367 <div class="navi-dropdown-content">
368 <div class="item"><a href="http://www.percona.com/training/">MySQL Training Overview</a></div>
369 <div class="item"><a href="http://www.percona.com/training/classes/dba/">MySQL DBA Training</a></div>
370 <div class="item"><a href="http://www.percona.com/training/classes/developers/">MySQL Developer Training</a></div>
371 <div class="item"><a href="http://www.percona.com/training/classes/operations/">MySQL Operations Training</a></div>
372 <div class="item"><a href="http://www.percona.com/training/classes/innodb/">InnoDB &amp; XtraDB Training</a></div>
373 <div class="item"><a href="http://www.percona.com/training/classes/custom-onsite/">Custom Onsite Training</a></div>
374 </div>
375 <div class="navi-dropdown-footer"><!-- //--></div>
376 </div>
377 <div class="navi-dropdown" id="navi-dropdown-development">
378 <div class="navi-dropdown-header-l"><!-- //--></div>
379 <div class="navi-dropdown-content">
380 <div class="item"><a href="http://www.percona.com/development/mysql/">Development for MySQL</a></div>
381 <div class="item"><a href="http://www.percona.com/development/maintenance/">Maintenance for MySQL</a></div>
382 <div class="item"><a href="http://www.percona.com/development/benchmarking/">Custom Product Evaluation</a></div>
383 <div class="item"><a href="http://www.percona.com/development/maatkit/">Custom Maatkit Development</a></div>
384 <div class="item"><a href="http://www.percona.com/development/custom-tools/">Custom Tools Development</a></div>
385 </div>
386 <div class="navi-dropdown-footer"><!-- //--></div>
387 </div>
388 <div class="navi-dropdown" id="navi-dropdown-software">
389 <div class="navi-dropdown-header-l"><!-- //--></div>
390 <div class="navi-dropdown-content">
391 <div class="item"><a href="http://www.percona.com/software/">Percona Software for MySQL</a></div>
392 <div class="item"><a href="http://www.percona.com/software/percona-server/">Percona Server with XtraDB</a></div>
393 <div class="item"><a href="http://www.percona.com/software/percona-xtrabackup/">Percona XtraBackup</a></div>
394 <div class="item"><a href="http://www.percona.com/software/mysql-innodb-data-recovery-tools/">Data Recovery Toolkit</a></div>
395 <div class="item"><a href="http://www.percona.com/software/percona-xtradb/">Percona XtraDB</a></div>
396 <div class="item"><a href="http://www.percona.com/software/percona-toolkit/">Percona Toolkit</a></div>
397 <div class="item"><a href="http://www.percona.com/downloads/">Downloads</a></div>
398 <div class="item"><a href="http://www.percona.com/software/repositories/">Repositories</a></div>
399 <div class="item"><a href="http://www.percona.com/software/documentation/">Documentation</a></div>
400 <div class="item"><a href="http://forum.percona.com">Forum</a></div>
401 <div class="item"><a href="http://groups.google.com/group/percona-discussion">Google Discussion</a></div>
402 <div class="item"><a href="https://launchpad.net/percona-server">Launchpad</a></div>
403 </div>
404 <div class="navi-dropdown-footer"><!-- //--></div>
405 </div>
406 <div class="navi-dropdown" id="navi-dropdown-prices">
407 <div class="navi-dropdown-header-r"><!-- //--></div>
408 <div class="navi-dropdown-content">
409 <div class="item"><a href="http://www.percona.com/mysql-support/">Support Contracts</a></div>
410 <div class="item"><a href="http://www.percona.com/prices/per-hour-prices/">Per Hour Consulting</a></div>
411 <div class="item"><a href="http://www.percona.com/prices/prepaid-prices/">Prepaid Consulting</a></div>
412 <div class="item"><a href="http://www.percona.com/prices/on-site-prices/">On-Site Consulting</a></div>
413 <div class="item"><a href="http://www.percona.com/prices/training/">Training</a></div>
414 <div class="item"><a href="http://www.percona.com/prices/software/">Software</a></div>
415 <div class="item"><a href="http://www.percona.com/prices/other-prices/">Other Services</a></div>
416 </div>
417 <div class="navi-dropdown-footer"><!-- //--></div>
418 </div>
419 <div class="navi-dropdown" id="navi-dropdown-contact">
420 <div class="navi-dropdown-header-r"><!-- //--></div>
421 <div class="navi-dropdown-content">
422 <div class="item"><a href="http://www.percona.com/contact/24x7-emergency/">24×7 Emergency</a></div>
423 <div class="item"><a href="http://www.percona.com/contact/sales/">Sales &amp; General Inquiries</a></div>
424 <div class="item"><a href="http://www.percona.com/contact/billing/">Billing Inquiries</a></div>
425 <div class="item"><a href="https://customers.percona.com">Customer Portal Login</a></div>
426 <div class="item"><a href="http://www.percona.com/contact/phone-directory/">Phone Directory</a></div>
427 <div class="item"><a href="http://www.percona.com/about-us/newsletters/subscribe/">Subscribe to Newsletter</a></div>
428 </div>
429 <div class="navi-dropdown-footer"><!-- //--></div>
430 </div>
431 <div id="search-dropdown" class="search-dropdown">
432 <div class="search-dropdown-header"><!-- //--></div>
433 <div class="search-dropdown-content">
434 <div class="search-info">Search Percona.com:</div>
435 <form method="get" action="http://search.percona.com/search/" id="search-form">
436 <div class="form"><input type="text" id="search-input" name="q" maxlength="100"></div>
437 </form>
438 </div>
439 <div class="search-dropdown-footer"><!-- //--></div>
440 </div>
441</div>
442<div id="stats">
443<!-- GA //-->
444 <script src="http://www.percona.com/static/js/urchin.js" type="text/javascript"></script>
445 <script type="text/javascript">
446 _uacct = "UA-343802-3";
447 urchinTracker();
448 </script>
449<!-- /GA //-->
450<!-- NAVI //-->
451<script type="text/javascript">//<![CDATA[
452var navi = [{id:"about-us", direction: "l"},{id:"mysql-consulting", direction: "l"},{id:"support", direction: "l"},{id:"training", direction: "l"},{id:"development", direction: "l"},{id:"software", direction: "l"},{id:"prices", direction: "r"},{id:"contact", direction: "r"}];
453for(var i = 0, c = navi.length; i < c; i++) {
454 window.jQuery('#navilink-a-' + navi[i].id).bind('mouseover',{id: navi[i].id, direction:navi[i].direction}, function(e) { NAVI.Open(e.data.id, e.data.direction); } );
455}
456window.jQuery('#search-form').bind('submit', function() { window.location.href = jQuery('#search-form').attr('action') + jQuery('#search-input').val(); return false; });
457//]]></script>
458<!-- /NAVI //-->
459<script type="text/javascript">
460//<![CDATA[
461Percona.host = 'www.percona.com';
462Percona.getRecentServerVersion('#recentServerVersion');
463//]]>
464</script>
465</div>
466 </body>
467</html>
468
469
470
471{% if theme_collapsiblesidebar|tobool %}
472{% set script_files = script_files + ['_static/sidebar.js'] %}
473{% endif %}
0474
=== added file 'doc/source/percona-theme/searchbox.html'
--- doc/source/percona-theme/searchbox.html 1970-01-01 00:00:00 +0000
+++ doc/source/percona-theme/searchbox.html 2012-02-16 17:09:19 +0000
@@ -0,0 +1,22 @@
1{#
2 basic/searchbox.html
3 ~~~~~~~~~~~~~~~~~~~~
4
5 Sphinx sidebar template: quick search box.
6
7 :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
8 :license: BSD, see LICENSE for details.
9#}
10{%- if pagename != "search" %}
11<div id="searchbox" style="display: none; padding: 3px;">
12 <h3>{{ _('Quick search') }}</h3>
13 <form class="search" action="{{ pathto('search') }}" method="get">
14 <input type="text" name="q" size="18" />
15 <input type="submit" value="{{ _('Go') }}" />
16 <input type="hidden" name="check_keywords" value="yes" />
17 <input type="hidden" name="area" value="default" />
18 </form>
19
20</div>
21<script type="text/javascript">$('#searchbox').show(0);</script>
22{%- endif %}
023
=== added directory 'doc/source/percona-theme/static'
=== added file 'doc/source/percona-theme/static/default.css_t'
--- doc/source/percona-theme/static/default.css_t 1970-01-01 00:00:00 +0000
+++ doc/source/percona-theme/static/default.css_t 2012-02-16 17:09:19 +0000
@@ -0,0 +1,469 @@
1/*
2 * default.css_t
3 * ~~~~~~~~~~~~~
4 *
5 * Sphinx stylesheet -- default theme.
6 *
7 * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
8 * :license: BSD, see LICENSE for details.
9 *
10 */
11
12@import url("basic.css");
13
14/* -- page layout ----------------------------------------------------------- */
15
16body {
17 font-family: Arial,Helvetica,sans-serif;
18 font-size: 14px;
19 background-color: #fff;
20 color: #333333;
21 line-height: 20px;
22 margin: 0;
23 padding: 0;
24
25}
26
27div.document {
28 background-color: #fff;
29 margin: 0 auto;
30 overflow: hidden;
31 padding: 30px 0;
32 width: 960px;
33}
34
35div.documentwrapper {
36 /* float: left; */
37 /* width: 100%; */
38
39}
40
41div.bodywrapper {
42 margin: 10 0 0 0px;
43 width: 660px;
44 float:right;
45}
46
47div.body {
48 background-color: #fff;
49 color: #333333;
50 padding: 0 0 20px;
51}
52
53{%- if theme_rightsidebar|tobool %}
54div.bodywrapper {
55 margin: 0 {{ theme_sidebarwidth }}px 0 0;
56}
57{%- endif %}
58
59div.footer {
60 /* color: {{ theme_footertextcolor }}; */
61 /* width: 100%; */
62 /* padding: 9px 0 9px 0; */
63 /* text-align: center; */
64 /* font-size: 75%; */
65 font: 80% "Lucida Grande",Verdana,Lucida,Helvetica,Arial,sans-serif;
66 background: none repeat scroll 0 0 #333333;
67 border-top: 2px solid #D95200;
68 overflow: hidden;
69}
70
71div.footer a {
72 color: {{ theme_footertextcolor }};
73 text-decoration: underline;
74}
75
76div.related {
77 background-color: #ccc;
78 line-height: 30px;
79 color: #333;
80 background: none repeat scroll 0 0 #F8F8F8;
81 border: 1px solid #E0E0E0;
82 clear: both;
83 padding: 10px;
84 width: 635px;
85 margin-bottom: 5px;
86}
87
88div.related a {
89 color: #999;
90}
91
92div.sphinxsidebar {
93 margin-left: 0px;
94 margin-right: 30px;
95 color: #eee;
96 font-family: Arial,Helvetica,sans-serif;
97 width: 260px;
98 {%- if theme_stickysidebar|tobool %}
99 top: 30px;
100 bottom: 0;
101 margin: 0;
102 position: fixed;
103 overflow: auto;
104 height: auto;
105 {%- endif %}
106 {%- if theme_rightsidebar|tobool %}
107 float: right;
108 {%- if theme_stickysidebar|tobool %}
109 right: 0;
110 {%- endif %}
111 {%- endif %}
112}
113
114{%- if theme_stickysidebar|tobool %}
115/* this is nice, but it it leads to hidden headings when jumping
116 to an anchor */
117/*
118div.related {
119 position: fixed;
120}
121
122div.documentwrapper {
123 margin-top: 30px;
124}
125*/
126{%- endif %}
127
128div.sphinxsidebar h3 {
129 /* font-family: {{ theme_headfont }}; */
130 color: #999;
131 font-size: 18px;
132 line-height: 15px;
133 font-weight: 400;
134 margin-left: 5px;
135 padding: 0;
136}
137
138div.sphinxsidebar h3 a {
139 color: #333;
140}
141
142div.sphinxsidebar a:hover {
143 /* color: #333; */
144}
145
146div.sphinxsidebar h4 {
147 /* font-family: {{ theme_headfont }}; */
148 color: #666;
149 font-size: 18px;
150 font-weight: normal;
151 margin: 5px 0 0 5px;
152 padding: 0;
153}
154
155div.sphinxsidebar p {
156 color: #333;
157 margin-bottom: 5px;
158 margin-left: 5px;
159}
160
161div.sphinxsidebar p.topless {
162 margin: 5px 10px 10px 10px;
163}
164
165div.sphinxsidebar ul {
166 margin: 10px;
167 padding-left: 5px;
168 color: #333;
169}
170
171div.sphinxsidebar a {
172 color: #D12907;
173}
174
175div.sphinxsidebar input {
176 border: 1px solid #999;
177 font-family: sans-serif;
178 font-size: 1em;
179}
180
181{% if theme_collapsiblesidebar|tobool %}
182/* for collapsible sidebar */
183div#sidebarbutton {
184 background-color: {{ theme_sidebarbtncolor }};
185}
186{% endif %}
187
188/* -- hyperlink styles ------------------------------------------------------ */
189
190a {
191 color: #D12907;
192 text-decoration: underline;
193 border: medium none;
194 cursor: pointer;
195}
196
197a:visited {
198 color: #D12907;
199 text-decoration: underline;
200}
201
202a:hover {
203 color: #D12907;
204 text-decoration: underline;
205}
206
207{% if theme_externalrefs|tobool %}
208a.external {
209 text-decoration: none;
210 border-bottom: 1px dashed {{ theme_linkcolor }};
211}
212
213a.external:hover {
214 text-decoration: none;
215 border-bottom: none;
216}
217
218a.external:visited {
219 text-decoration: none;
220 border-bottom: 1px dashed {{ theme_visitedlinkcolor }};
221}
222{% endif %}
223
224/* -- body styles ----------------------------------------------------------- */
225
226div.body h1,
227div.body h2,
228div.body h3,
229div.body h4,
230div.body h5,
231div.body h6 {
232 font-family: Arial,Helvetica,sans-serif;
233 background-color: #fff;
234 font-weight: 400;
235
236 /* border-bottom: 1px solid #ccc; */
237 /* margin: 20px -20px 10px -20px; */
238 /* padding: 0; */
239 /* padding: 3px 0 3px 10px; */
240 text-decoration: none !important;
241
242 border-bottom: 1px solid #E0E0E0;
243 font-size: 20px;
244 line-height: 20px;
245 margin: 30px 0 15px;
246 padding: 0 0 3px;
247 color: #000;
248}
249
250div.body h1 {
251 font-size: 32px;
252 color: #D12907;
253 line-height: 40px;
254 margin: 10px 0 20px 0;
255 text-decoration: none !important;
256 border-bottom: none;
257 margin-top: 35px;
258}
259
260div.body h2 { font-size: 150%; }
261div.body h3 { font-size: 140%; }
262div.body h4 { font-size: 120%; }
263div.body h5 { font-size: 110%; }
264div.body h6 { font-size: 100%; }
265
266a.headerlink {
267 color: {{ theme_headlinkcolor }};
268 font-size: 0.8em;
269 padding: 0 4px 0 4px;
270 text-decoration: none;
271}
272
273a.headerlink:hover {
274 background-color: {{ theme_headlinkcolor }};
275 color: white;
276}
277
278div.body dd, div.body li {
279 text-align: justify;
280}
281
282div.body dt {
283 list-style-type: square;
284 /* margin: 8px 0 8px 30px; */
285 padding: 0 4px 0 5px;
286
287}
288
289div.body p {
290 text-align: justify;
291/* line-height: 130%;*/
292 margin: 10px 0;
293}
294
295/* div.body ul, */
296div.body li {
297 list-style-type: square;
298 margin: 8px 0 8px 30px;
299 padding: 0 4px 0 5px;
300}
301
302.reference em {
303 font-style: normal;
304}
305
306.std-term {
307 font-style: normal;
308 font-weight: 400;
309 color: #FF7400
310}
311
312div.admonition p.admonition-title + p {
313 display: inline;
314}
315
316div.admonition p {
317 margin-bottom: 5px;
318}
319
320div.admonition pre {
321 margin-bottom: 5px;
322}
323
324div.admonition ul, div.admonition ol {
325 margin-bottom: 5px;
326}
327
328div.note {
329 background-color: #eee;
330 border: 1px solid #ccc;
331}
332
333div.seealso {
334 background-color: #ffc;
335 border: 1px solid #ff6;
336}
337
338div.topic {
339 background-color: #eee;
340}
341
342div.warning {
343 background-color: #ffe4e4;
344 border: 1px solid #f66;
345}
346
347p.admonition-title {
348 display: inline;
349}
350
351p.admonition-title:after {
352 content: ":";
353}
354
355pre {
356 padding: 10px;
357 background-color: #F0E6D9/* {{ theme_codebgcolor }} */;
358 color: {{ theme_codetextcolor }};
359 line-height: 120%;
360 border: 1px dashed #ED9821;
361 font-size: 80%;
362 overflow: auto;
363 /* border-left: none; */
364 /* border-right: none; */
365}
366
367tt {
368/* background-color: #ecf0f3;
369 padding: 0 1px 0 1px;
370 font-size: 0.95em;*/
371 font-weight: 400;
372}
373
374div.body td {
375 text-align: none;
376}
377
378table.docutils th {
379 background-color: #DEE7EC;
380 border: 1px solid #8CACBB;
381 padding: 3px;
382 text-align: center;
383 font-style: normal;
384 font-weight: 400;
385}
386
387table.docutils td {
388 border: 1px solid #8CACBB;
389 padding: 3px;
390 line-height: 16px;
391 vertical-align: middle;
392}
393
394.warning tt {
395 background: #efc2c2;
396}
397
398.note tt {
399 background: #d6d6d6;
400}
401
402.viewcode-back {
403 font-family: {{ theme_bodyfont }};
404}
405
406div.viewcode-block:target {
407 background-color: #f4debf;
408 border-top: 1px solid #ac9;
409 border-bottom: 1px solid #ac9;
410}
411
412.file-bugs {
413 background: none repeat scroll 0 0 #E8E8E8;
414 border: 1px solid #E0E0E0;
415 clear: both;
416 color: #333333;
417 padding: 10px;
418 text-align: center;
419 font-size: 90%;
420}
421
422div.footer .footer {
423 margin: 0 auto;
424 overflow: hidden;
425 padding: 10px 0;
426 width: 960px;
427 border-top: none;
428}
429
430div.footer .footer .logo {
431 float: left;
432 overflow: hidden;
433 padding: 17px 0 0;
434}
435
436div.footer .footer .text {
437 color: #E0E0E0;
438 float: right;
439 font-family: Arial,Helvetica,sans-serif;
440 font-size: 11px;
441 line-height: 15px;
442 overflow: hidden;
443 text-align: right;
444}
445
446div.license {
447 font-size: 80%;
448 /* padding: 0.5em; */
449 text-align: center;
450 margin: 13px 0 -15px;
451}
452
453#sidenavi.noborder {
454 border-right: medium none;
455 border-top: medium none;
456 margin: 0;
457}
458
459#sidenavi {
460 color: #333333;
461 /* float: left; */
462 font-family: Arial,Helvetica,sans-serif;
463 font-size: 18px;
464 line-height: 25px;
465 overflow: hidden;
466 padding: 10px 0 8px 0px;
467 width: 255px;
468}
469
0470
=== added file 'doc/source/percona-theme/static/email-small.png'
1Binary files doc/source/percona-theme/static/email-small.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/email-small.png 2012-02-16 17:09:19 +0000 differ471Binary files doc/source/percona-theme/static/email-small.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/email-small.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/jquery.min.js'
--- doc/source/percona-theme/static/jquery.min.js 1970-01-01 00:00:00 +0000
+++ doc/source/percona-theme/static/jquery.min.js 2012-02-16 17:09:19 +0000
@@ -0,0 +1,154 @@
1/*!
2 * jQuery JavaScript Library v1.4.2
3 * http://jquery.com/
4 *
5 * Copyright 2010, John Resig
6 * Dual licensed under the MIT or GPL Version 2 licenses.
7 * http://jquery.org/license
8 *
9 * Includes Sizzle.js
10 * http://sizzlejs.com/
11 * Copyright 2010, The Dojo Foundation
12 * Released under the MIT, BSD, and GPL Licenses.
13 *
14 * Date: Sat Feb 13 22:33:48 2010 -0500
15 */
16(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
17e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
18j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
19"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
20true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
21Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
22(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
23a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
24"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
25function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
26c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
27L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
28"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
29a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
30d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
31a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
32!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
33true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
34var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
35parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
36false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
37s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
38applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
39else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
40a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
41w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
42cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
43i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
44" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
45this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
46e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
47c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
48a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
49function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
50k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
51C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
52null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
53e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
54f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
55if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
56fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
57d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
58"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
59a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
60isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
61{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
62if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
63e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
64"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
65d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
66!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
67toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
68u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
69function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
70if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
71e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
72t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
73g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
74for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
751)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
76CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
77relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
78l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
79h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
80CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
81g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
82text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
83setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
84h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
85m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
86"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
87h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
88!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
89h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
90q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
91if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
92(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
93function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
94gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
95c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
96{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
97"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
98d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
99a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
1001&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
101a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
102c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
103wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
104prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
105this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
106return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
107""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
108this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
109u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
1101?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
111return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
112""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
113c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
114c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
115function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
116Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
117"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
118a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
119a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
120"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
121serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
122function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
123global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
124e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
125"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
126false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
127false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
128c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
129d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
130g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
1311223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
132"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
133if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
134this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
135"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
136animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
137j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
138this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
139"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
140c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
141this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
142this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
143e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
144c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
145function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
146this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
147k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
148f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
149a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
150c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
151d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
152f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
153"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
154e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
0155
=== added file 'doc/source/percona-theme/static/percona.com.css'
--- doc/source/percona-theme/static/percona.com.css 1970-01-01 00:00:00 +0000
+++ doc/source/percona-theme/static/percona.com.css 2012-02-16 17:09:19 +0000
@@ -0,0 +1,1 @@
1@charset "utf-8";html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:400;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:400;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup{vertical-align:text-top;}sub{vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-weight:inherit;font-size:100%;}legend{color:#000;}del,ins{text-decoration:none;}body,html{height:100%;margin:0;padding:0}form{display:inline}a{border:none;cursor:pointer}img{border:none}div,img{behavior:url(/static/css/iepngfix.htc)}em{font-style:italic;}del{text-decoration:line-through;}.hidden{display:none}#header{background:#333;height:95px;overflow:hidden;zoom:1}#header .header{height:95px;margin:0 auto;overflow:hidden;width:960px;zoom:1}#header .header .logo{float:left;overflow:hidden;padding:20px 0;width:240px;zoom:1}#header .header .logo{overflow:hidden;zoom:1;float:left;width:240px;padding:20px 0px;}#header .header .right{overflow:hidden;zoom:1;float:left;width:720px;height:35px;padding:30px 0px;}#header .header .right .searchlink{overflow:hidden;zoom:1;width:35px;height:35px;float:right;padding:0px 0px 0px 10px;}#header .header .right .navicontainer{overflow:hidden;zoom:1;float:right;height:35px;background:#ffffff url(ui-navi-l.png) top left no-repeat;}#header .header .right .navi{overflow:hidden;zoom:1;height:27px;padding:4px 10px;background:url(ui-navi-r.png) top right no-repeat;}#header .header .right .navicontainer .navi span{overflow:hidden;zoom:1;height:27px;float:left;margin:0px;}#header .header .right .navicontainer .navi span:hover{background:#f0f0f0 url(ui-navi-hover-l.png) top left no-repeat;}#header .header .right .navicontainer .navi span.selected,#header .header .right .navicontainer .navi span.selected:hover{background:#d5390b url(ui-navi-sel-l.png) top left no-repeat;}#header .header .right .navicontainer .navi span a,#header .header .right .navicontainer .navi span a:visited{display:block;padding:6px 10px 4px 10px;height:17px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:14px;color:#000000;text-decoration:none;}#header .header .right .navicontainer .navi span a:hover{background:url(ui-navi-hover-r.png) top right no-repeat;}#header .header .right .navicontainer .navi span.selected a.selected,#header .header .right .navicontainer .navi span.selected a.selected:visited,#header .header .right .navicontainer .navi span.selected a.selected:hover{background:url(ui-navi-sel-r.png) top right no-repeat;color:#ffffff;}#slogan{overflow:hidden;zoom:1;height:125px;background:#d24300 urk(ui-orange-front.png) bottom center no-repeat;text-align:center;}#stripe{overflow:hidden;zoom:1;height:20px;background:#d24300 url(ui-orange-content.png) top center no-repeat;}#footer{overflow:hidden;zoom:1;background:#333333;border-top:2px #d95200 solid;}#footer .footer{overflow:hidden;zoom:1;width:960px;margin:0px auto;padding:10px 0px;}#footer .footer .logo{overflow:hidden;zoom:1;float:left;padding:17px 0px 0px 0px;}#footer .footer .text{overflow:hidden;zoom:1;float:right;text-align:right;font-family:Arial,Helvetica,sans-serif;font-size:11px;line-height:15px;color:#e0e0e0;}#footer .footer .text a,#footer .footer .text a:visited{color:#e0e0e0;text-decoration:none;}#footer .footer .text a:hover{color:#ffffff;text-decoration:underline;}div.navi-dropdown{display:none;position:absolute;overflow:hidden;zoom:1;width:255px;z-index:900;}div.navi-dropdown .navi-dropdown-header-l{overflow:hidden;zoom:1;width:255px;height:20px;background:url(ui-dropdown-header-l.png) top left no-repeat;}div.navi-dropdown .navi-dropdown-header-r{overflow:hidden;zoom:1;width:255px;height:20px;background:url(ui-dropdown-header-r.png) top left no-repeat;}div.navi-dropdown .navi-dropdown-content{overflow:hidden;zoom:1;width:225px;padding:0px 15px 5px 15px;background:#ffffff url(ui-dropdown-bg.png) repeat-y;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:20px;color:#333333;}div.navi-dropdown .navi-dropdown-content .item{padding:3px 0px 1px 0px;}div.navi-dropdown .navi-dropdown-content a,div.navi-dropdown .navi-dropdown-content a:visited{display:block;color:#333333;text-decoration:none;}div.navi-dropdown .navi-dropdown-content a:hover{color:#d12907;text-decoration:underline;}div.navi-dropdown .navi-dropdown-footer{overflow:hidden;zoom:1;width:255px;height:10px;background:url(ui-dropdown-footer.png) top left no-repeat;}div.search-dropdown{display:none;position:absolute;overflow:hidden;zoom:1;width:255px;}div.search-dropdown .search-dropdown-header{overflow:hidden;zoom:1;width:255px;height:20px;background:url(ui-dropdown-header-search.png) top left no-repeat;}div.search-dropdown .search-dropdown-content{overflow:hidden;zoom:1;width:225px;padding:0px 15px 5px 15px;background:#ffffff url(ui-dropdown-bg.png) repeat-y;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:20px;color:#333333;}div.search-dropdown .search-dropdown-content .form{padding-top:2px;}div.search-dropdown .search-dropdown-content .form input{border:1px #c0c0c0 solid;padding:4px;width:210px;outline:none;}div.search-dropdown .search-dropdown-content .form input:focus{border:1px #707070 solid;outline:none;}div.search-dropdown .search-dropdown-footer{overflow:hidden;zoom:1;width:255px;height:10px;background:url(ui-dropdown-footer.png) top left no-repeat;}#sidenavi{overflow:hidden;zoom:1;float:left;width:260px;border-top:1px #e0e0e0 solid;border-right:1px #e0e0e0 solid;margin:0px 30px 0px 0px;padding:0px 0px 20px 0px;font-family:Arial,Helvetica,sans-serif;font-size:18px;line-height:25px;color:#333333;}#sidenavi.noborder{border-top:none;border-right:none;margin:0px 31px 0px 0px;}#sidenavi .sidebanner{border-left:1px #e0e0e0 solid;border-bottom:1px #e0e0e0 solid;text-align:center;padding:15px 10px;}#sidenavi.noborder .sidebanner{border-top:1px #e0e0e0 solid;border-right:1px #e0e0e0 solid;}#sidenavi .sidebanner .header{padding:0px 0px 10px 0px;line-height:18px;text-align:center;}#sidenavi .sidebanner .numbers{padding:0px 0px 0px 58px;background:url(phone.png) 5px center no-repeat;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;text-align:left;}#sidenavi #sidefloater{padding-top:10px;}#sidenavi .item{padding:10px 10px 8px 10px;}#sidenavi > .item.selected{background:url(ui-leftnavi-sel.png) top left no-repeat;}#sidenavi a,#sidenavi a:visited{display:block;color:#333333;text-decoration:none;}#sidenavi a:hover{color:#d12907;text-decoration:none;}#sidenavi > .item.selected > a,#sidenavi > .item.selected > a:visited{color:#d12907;text-decoration:none;}#sidenavi .sidesubnavi{overflow:hidden;zoom:1;font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:17px;color:#333333;}#sidenavi .sidesubnavi .subitem{padding:7px 10px 0px 10px;}#sidenavi .sidesubnavi .subitem.selected a,#sidenavi .sidesubnavi .subitem.selected a:visited{color:#d12907;text-decoration:none;}#contentcontainer{overflow:hidden;zoom:1;width:960px;padding:30px 0px;margin:0px auto;}#content{overflow:hidden;zoom:1;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:20px;color:#333333;}#content p{margin:10px 0px;}#content a,#content a:visited{color:#d12907;text-decoration:underline;}#content a:hover{color:#712000;text-decoration:underline;}#content h1{font-family:Arial,Helvetica,sans-serif;font-size:32px;line-height:40px;margin:5px 0px 20px 0px;color:#d12907;}#content h2{font-family:Arial,Helvetica,sans-serif;font-size:20px;line-height:20px;padding:0px 0px 3px 0px;margin:30px 0px 15px 0px;color:#000000;border-bottom:1px #e0e0e0 solid;}#content h3{font-family:Arial,Helvetica,sans-serif;font-weight:bold;font-size:16px;line-height:22px;margin:20px 0px 10px 0px;color:#000000;}#content h4{font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:14px;font-weight:bold;padding:5px 0px 0px 0px;margin:-16px 0px 20px 0px;color:#000000;border-top:1px #e0e0e0 solid;}#content h4 a,#content h4 a:visited{color:#000000;text-decoration:none;}#content h4 a:hover{color:#d12907;text-decoration:none;}#content dl dt{font-weight:bold;margin-top:10px;margin-bottom:10px;}#content dl dd{padding:0px 0px 0px 30px;}#content ul{list-style-type:square;padding:0px 0px 0px 30px;}#content ul li{list-style-type:square;margin:8px 0px;}#content ol{list-style-type:decimal;padding:0px 0px 0px 30px;}#content ol li{list-style-type:decimal;margin:8px 0px;}#content div.pagecontent{overflow:hidden;zoom:1;}div.contentbox{border:1px #e0e0e0 solid;}div.contentbox div.title{font-size:16px;line-height:20px;font-weight:bold;padding:8px 15px 2px 15px;background:url(ui-leftnavi-sel.png) repeat-x;}div.contentbox div.content{padding:15px;}div.frontpage-p{overflow:hidden;zoom:1;width:960px;margin:0px;margin-bottom:20px;padding:0px;}div.frontpage-p div.frontpage-p-container{overflow:hidden;zoom:1;width:960px;height:200px;padding-bottom:30px;z-index:100;}div.frontpage-p a.nivo-imageLink{position:absolute;top:0px;left:0px;width:960px;height:200px;border:0;padding:0;margin:0;z-index:20;display:none;}div.frontpage-p div.frontpage-p-container div.nivo-directionNav{width:1px;height:1px;display:none !important;z-index:18 !important;}div.frontpage-p div.frontpage-p-container div.nivo-controlNav{position:absolute;top:200px;width:960px;text-align:center;font-size:28px;line-height:25px;}div.frontpage-p div.frontpage-p-container div.nivo-controlNav a{padding:0px 3px;text-decoration:none !important;color:#919191 !important;}div.frontpage-p div.frontpage-p-container div.nivo-controlNav a.active{color:#d12907 !important;}div.frontpage-p div.frontpage-p-selector{overflow:hidden;zoom:1;height:20px;text-align:center;}div.frontpage-main{overflow:hidden;zoom:1;width:960px;margin:20px 0px;padding:0px;}div.frontpage-main div.frontpage-left{overflow:hidden;zoom:1;width:645px;float:left;padding:0px;}div.frontpage-boxes{overflow:hidden;zoom:1;width:645px;margin:25px 0px 0px 0px;padding:0px;}div.frontpage-boxes div.frontpage-boxes-selector{overflow:hidden;zoom:1;width:645px;}div.frontpage-boxes div.frontpage-boxes-selector div.frontpage-boxes-selector-item{overflow:hidden;zoom:1;width:160px;float:left;margin-left:-1px;border-top:1px #cccccc solid;border-left:1px #cccccc solid;border-right:1px #cccccc solid;border-bottom:1px #cccccc solid;text-align:center;margin-top:10px;padding:0px 0px 0px 0px;}div.frontpage-boxes div.frontpage-boxes-selector div.frontpage-boxes-selector-item:first-child{margin-left:0px;}div.frontpage-boxes div.frontpage-boxes-selector div.frontpage-boxes-selector-item.selected{background:url(ui-tab-bg.png) repeat-x;margin-top:0px;border-bottom:none;padding:5px 0px 6px 0px;}div.frontpage-boxes div.frontpage-boxes-selector div.frontpage-boxes-selector-item a{display:block;font-size:20px;line-height:20px;color:#444444 !important;text-decoration:none !important;padding:9px 0px 8px 0px;}div.frontpage-boxes div.frontpage-boxes-container{overflow:hidden;zoom:1;width:603px;height:150px;padding:20px;border-left:1px #cccccc solid;border-right:1px #cccccc solid;border-bottom:1px #cccccc solid;}div.frontpage-boxes div.frontpage-boxes-container div.frontpage-box img{padding:0px 15px 15px 5px;}div.frontpage-main div.frontpage-right{overflow:hidden;zoom:1;width:295px;float:right;margin-left:20px;padding:0px;}div.frontpage-block{overflow:hidden;zoom:1;border:1px #cccccc solid;width:288px;margin:0 0 20px 5px;}div.frontpage-block div.header{text-align:left;padding:15px 15px 0px 15px;background:url(ui-tab-bg.png) repeat-x;font-family:Arial,Helvetica,sans-serif;font-size:20px;line-height:20px;}div.frontpage-block div.content{overflow:hidden;zoom:1;padding:10px 15px 15px 15px;}div.frontpage-block div.content div.call-us{font-size:12px;line-height:17px;}div.frontpage-block div.content div.training{padding:20px;overflow:hidden;zoom:1;font-size:12px;line-height:17px;}div.frontpage-block div.content div.training ul.training-short-list{list-style-type:none !important;margin:0 !important;padding:0 !important;}div.frontpage-block div.content div.training ul.training-short-list li{list-style-type:none !important;}div.frontpage-block div.content div.more{overflow:hidden;zoom:1;text-align:right;padding:15px 0px 0px 0px;font-size:12px;line-height:17px;}.our-team-page h2{clear:both;}div.our-team-item{overflow:hidden;zoom:1;width:162px;margin-left:5px;height:230px;float:left;}div.our-team-item .img img{border:1px #e0e0e0 solid;padding:2px;}table.phonetable{margin-top:1em;border-collapse:collapse;}.phonetable{margin-left:2em;}table.phonetable th,table.phonetable tr{text-align:center;}table.phonetable th{border:1px #e0e0e0 solid;background:#f8f8f8;padding:7px;font-weight:bold;}table.phonetable td{border:1px #e0e0e0 solid;padding:7px;}table.phonetable .label{text-align:left;}table.phonetable td.label{padding-left:2em;}.form-item{clear:both;margin-top:1em;position:relative;}.form-item label{display:block;font-weight:bold;position:absolute;top:0;left:0;width:13em;}.form-required{color:#fa0;font-weight:bold;}.form-item .description{color:#888;font-size:0.85em;line-height:150%;position:relative;left:14em;}#edit-submitbutton{position:relative;left:12em;margin:1em 0;}.form-item input[type=text],.form-item select,.form-item textarea{border:1px solid #CCC;width:493px;position:relative;top:0;left:12em;}.form-item textarea{height:12em;padding:3px;}.form-item-spacer{padding-top:1em;}.form-item #captcha{position:relative;top:0;left:12em;}#edit-submitted-captcha{margin-top:0.5em;width:154px;}fieldset.form-item-set{border:1px solid #ccc;display:block;margin:12px 0;padding:12px;}fieldset.form-item-set legend{border:none;display:block;padding:0 2px;}div.error{background:#fff;border:solid 1px #c52020;color:#C52020;padding:5px;}div.messages{margin:5px 20px;font-size:11px;}div.messages ul,div.messages ul li{list-style-image:none;list-style-type:none;}div.messages ul li{padding:0 0 0.2em 0;}.form-item .error{background-color :#fdd;}#emergency-contacts .node-field-name{text-align:right;font-weight:bold;padding-right:1em;}#emergency-contacts .node-field-value-phone{font-weight:bold;color:#137F00;}#emergency-contacts .node-field-help{font-weight:bold;}#compact_footer{width:auto !important;}#compact_contentcontainer{overflow:hidden;zoom:1;width:auto;padding:30px 0px;margin:0px 20px;}.custlogo img{padding:20px;border:1px solid white;}.custlogo img:hover{border:1px solid gray;}table.formtable{border-collapse:collapse;}table.formtable th{font-weight:normal;white-space:nowrap;padding:4px 20px 4px 0px;}table.formtable td{padding:4px 0px 4px 0px;}table.formtable td input[type='text'],table.formtable td select{border:1px #e0e0e0 solid;padding:4px;width:400px;}table.formtable td.submit{padding:10px 0px 0px 0px;text-align:center;}table.datatable{margin-top:1em;border-collapse:collapse;}.datatable{margin-left:2em;}table.datatable th,table.datatable tr{text-align:center;}table.datatable th{border:1px #e0e0e0 solid;background:#f8f8f8;padding:7px;font-weight:bold;}table.datatable td{border:1px #e0e0e0 solid;padding:7px;}table.datatable .label{text-align:left;}table.datatable td.label{padding-left:2em;}.frontpage-sidebar .header{padding:0px 0px 10px 0px;font-size:18px;font-weight:normal;text-align:center;}.frontpage-sidebar .header.link{padding:13px 0px 10px 4px;text-align:left;}.frontpage-sidebar .header a,.frontpage-sidebar .header a:visited{color:#333333 !important;text-decoration:none !important;}.frontpage-sidebar .header a:hover{color:#d12907 !important;text-decoration:none !important;}.frontpage-sidebar .header.bloglink{font-size:16px;padding:0px 0px 10px 10px;text-align:center;}.frontpage-sidebar .header.blogheader{font-weight:normal;text-align:center;font-size:15px;padding:13px 10px 10px 0px;}.frontpage-sidebar .header a.email{padding:13px 10px 10px 40px;background:url(email-small.png) left center no-repeat;}.frontpage-sidebar .call-us .numbers{padding:0px 0px 0px 38px;background:url(phone-small.png) 2px center no-repeat;font-family:Arial,Helvetica,sans-serif;font-size:11px;line-height:18px;text-align:left;}.frontpage-sidebar .eventum a,.frontpage-sidebar .eventum a:visited{padding:0px 2px 0px 55px;font-size:12px;line-height:18px;text-align:left;background:url(support-small.png) left center no-repeat;display:block;color:#333333 !important;text-decoration:none !important;}.frontpage-sidebar .eventum a:hover{color:#d12907 !important;text-decoration:underline !important;}div.presentation{border-top:1px #e0e0e0 dotted;padding:15px 0px;}div.presentation:first-child{margin-top:0;border:none;}div.presentation table.presentation{border-collapse:collapse;}div.presentation table.presentation td div.bordered-image-screenshot{border:1px #e0e0e0 solid;background:#f8f8f8;padding:5px;}div.presentation table.presentation td.presentations-descr{padding-left:15px;}div.presentation table.presentation td.presentations-descr h4{font-size:18px;font-weight:bold;}.customer-vote{width:412px;text-align:justify;}strong{font-weight:bold;}html,body{height:100%;}#stickywrapper{position:relative;min-height:100%;}* html #stickywrapper{height:100%;}#stickycontent{padding-bottom:102px;}#stickyfooter{position:relative;margin:-97px auto 0 auto;}a.links{font-style:oblique;text-decoration:underline;}span.subpart{font-weight:bold;}div.software-info-container{overflow:hidden;zoom:1;float:right;padding:0px 0px 25px 25px;}table.software-info-container{width:240px;border-collapse:collapse;}table.software-info-container td{border:1px #e0e0e0 solid;padding:10px 10px 10px 10px;}table.software-info-container td.latest{padding:10px 10px 10px 62px;background:url(software-latest.png) 15px center no-repeat;min-height:32px;font-size:16px;line-height:24px;}table.software-info-container td.download a{font-weight:bold;}table.software-info-container td.download{padding:15px 62px 15px 20px;background:url(software-download.png) 195px center no-repeat;min-height:32px;font-size:18px;line-height:24px;}table.software-info-container td.links{text-align:left;padding:4px 10px 4px 20px;}table.software-info-container td.links div{margin:10px 0px;}.inv{display:none;}table.downloadstable{margin-top:20px;border-collapse:collapse;}table.downloadstable th{border:1px #e0e0e0 solid;background:#f8f8f8;padding:7px;font-weight:bold;}table.downloadstable td{border:1px #e0e0e0 solid;padding:7px;}table.downloadstable td.file{width:90%;text-align:left;}table.downloadstable td.modified{width:5%;text-align:center;white-space:nowrap;}table.downloadstable td.size{width:5%;text-align:right;white-space:nowrap;}div.downloads-maintenance-promo,div.downloads-warning{border:1px #e0e0e0 solid;padding:15px 20px 15px 150px;margin:30px 0px;background:url(shield.png) 35px center no-repeat;}div.downloads-maintenance-promo > .close-button{float:right;clear:right;margin-top:-10px;margin-right:-15px;cursor:pointer;cursor:hand;}div.downloads-warning{background:url(warning.png) 35px center no-repeat;}div.downloads-version{border-top:1px #e0e0e0 solid;margin-top:-10px;padding-top:10px;text-align:right;font-size:14px;line-height:14px;font-weight:bold;}div.downloads-anchors{font-size:12px;line-height:15px;margin:20px 0px;}div.downloads-backtotop{font-size:12px;line-height:15px;padding-top:8px;}.downloadsignupdialog .ui-dialog-titlebar{display:none;}#downloadsignup h2{font-family:Arial,Helvetica,sans-serif;font-size:22px;line-height:22px;margin:10px 0px 20px 0px;color:#d12907;}#downloadsignup .intro{margin:10px 0px 15px 0px;}#downloadsignup .form .field{overflow:hidden;zoom:1;margin:10px 0px;}#downloadsignup .form .field .label{overflow:hidden;zoom:1;width:150px;float:left;padding-top:5px;}#downloadsignup .form .field .element{overflow:hidden;zoom:1;width:410px;float:left;}#downloadsignup .form .field .element input,#downloadsignup .form .field .element select{width:400px;border:1px #cccccc solid;padding:3px;outline:none;}#downloadsignup .form .field .element input:focus,#downloadsignup .form .field .element select:focus{border:1px #333333 solid;background:#f8f8f8;outline:none;}#downloadsignup .form .field .radiolist{overflow:hidden;zoom:1;display:block;padding:0;margin:0;}#downloadsignup .form .field table.radiolist{width:100%;}#downloadsignup .form .field .radiolist td{width:25%;}#downloadsignup .form .field div.radiolist label{display:block;min-width:55px;float:left;zoom:1;padding:8px 10px 2px 24px !important;text-indent:-24px;overflow:auto;}#downloadsignup .form .field table.radiolist label{padding:8px 15px 2px 0px !important;zoom:1;display:block;}#downloadsignup .form .field .radiolist label input{margin:0px 7px 0px 3px !important;}.schedule td{padding:3px;border:1px solid #eeeeee;padding-left:10px;font-size:16px;}.tdmini{font-weight:bold;font-size:10px !important;}.tdbreak{background-color:#ffeeee;text-align:center;}.trhead td{background-color:#d12907;color:#ffffff;font-weight:bold;}.speaker{font-size:10px;}table.left-headers th{font-weight:bold;text-align:right;padding:5px 12px;vertical-align:top;border-right:1px solid black;}table.left-headers td{padding:5px 12px;}.training-list tr th{font-weight:bold;}.training-list tr td{padding-right:15px;}a.interwiki{background:transparent url(/docs/wiki/lib/images/interwiki.png) 0px 1px no-repeat;padding-left:16px;}a.iw_wp{background-image:url(/docs/wiki/lib/images/interwiki/wp.gif)}a.iw_wpfr{background-image:url(/docs/wiki/lib/images/interwiki/wpfr.gif)}a.iw_wpde{background-image:url(/docs/wiki/lib/images/interwiki/wpde.gif)}a.iw_wpes{background-image:url(/docs/wiki/lib/images/interwiki/wpes.gif)}a.iw_wppl{background-image:url(/docs/wiki/lib/images/interwiki/wppl.gif)}a.iw_wpjp{background-image:url(/docs/wiki/lib/images/interwiki/wpjp.gif)}a.iw_wpmeta{background-image:url(/docs/wiki/lib/images/interwiki/wpmeta.gif)}a.iw_doku{background-image:url(/docs/wiki/lib/images/interwiki/doku.gif)}a.iw_dokubug{background-image:url(/docs/wiki/lib/images/interwiki/dokubug.gif)}a.iw_amazon{background-image:url(/docs/wiki/lib/images/interwiki/amazon.gif)}a.iw_amazon_de{background-image:url(/docs/wiki/lib/images/interwiki/amazon.de.gif)}a.iw_amazon_uk{background-image:url(/docs/wiki/lib/images/interwiki/amazon.uk.gif)}a.iw_phpfn{background-image:url(/docs/wiki/lib/images/interwiki/phpfn.gif)}a.iw_coral{background-image:url(/docs/wiki/lib/images/interwiki/coral.gif)}a.iw_sb{background-image:url(/docs/wiki/lib/images/interwiki/sb.gif)}a.iw_google{background-image:url(/docs/wiki/lib/images/interwiki/google.gif)}a.iw_meatball{background-image:url(/docs/wiki/lib/images/interwiki/meatball.gif)}a.iw_wiki{background-image:url(/docs/wiki/lib/images/interwiki/wiki.gif)}a.mediafile{background:transparent url(/docs/wiki/lib/images/fileicons/file.png) 0px 1px no-repeat;padding-left:18px;padding-bottom:1px;}a.mf_txt{background-image:url(/docs/wiki/lib/images/fileicons/txt.png)}a.mf_sxi{background-image:url(/docs/wiki/lib/images/fileicons/sxi.png)}a.mf_tgz{background-image:url(/docs/wiki/lib/images/fileicons/tgz.png)}a.mf_wav{background-image:url(/docs/wiki/lib/images/fileicons/wav.png)}a.mf_jpg{background-image:url(/docs/wiki/lib/images/fileicons/jpg.png)}a.mf_sxd{background-image:url(/docs/wiki/lib/images/fileicons/sxd.png)}a.mf_js{background-image:url(/docs/wiki/lib/images/fileicons/js.png)}a.mf_ps{background-image:url(/docs/wiki/lib/images/fileicons/ps.png)}a.mf_conf{background-image:url(/docs/wiki/lib/images/fileicons/conf.png)}a.mf_swf{background-image:url(/docs/wiki/lib/images/fileicons/swf.png)}a.mf_xml{background-image:url(/docs/wiki/lib/images/fileicons/xml.png)}a.mf_py{background-image:url(/docs/wiki/lib/images/fileicons/py.png)}a.mf_cpp{background-image:url(/docs/wiki/lib/images/fileicons/cpp.png)}a.mf_css{background-image:url(/docs/wiki/lib/images/fileicons/css.png)}a.mf_jpeg{background-image:url(/docs/wiki/lib/images/fileicons/jpeg.png)}a.mf_odi{background-image:url(/docs/wiki/lib/images/fileicons/odi.png)}a.mf_pptx{background-image:url(/docs/wiki/lib/images/fileicons/pptx.png)}a.mf_doc{background-image:url(/docs/wiki/lib/images/fileicons/doc.png)}a.mf_bz2{background-image:url(/docs/wiki/lib/images/fileicons/bz2.png)}a.mf_png{background-image:url(/docs/wiki/lib/images/fileicons/png.png)}a.mf_ogg{background-image:url(/docs/wiki/lib/images/fileicons/ogg.png)}a.mf_xls{background-image:url(/docs/wiki/lib/images/fileicons/xls.png)}a.mf_tar{background-image:url(/docs/wiki/lib/images/fileicons/tar.png)}a.mf_pl{background-image:url(/docs/wiki/lib/images/fileicons/pl.png)}a.mf_mp3{background-image:url(/docs/wiki/lib/images/fileicons/mp3.png)}a.mf_pdf{background-image:url(/docs/wiki/lib/images/fileicons/pdf.png)}a.mf_audio{background-image:url(/docs/wiki/lib/images/fileicons/audio.png)}a.mf_rtf{background-image:url(/docs/wiki/lib/images/fileicons/rtf.png)}a.mf_java{background-image:url(/docs/wiki/lib/images/fileicons/java.png)}a.mf_cs{background-image:url(/docs/wiki/lib/images/fileicons/cs.png)}a.mf_odt{background-image:url(/docs/wiki/lib/images/fileicons/odt.png)}a.mf_c{background-image:url(/docs/wiki/lib/images/fileicons/c.png)}a.mf_rpm{background-image:url(/docs/wiki/lib/images/fileicons/rpm.png)}a.mf_docx{background-image:url(/docs/wiki/lib/images/fileicons/docx.png)}a.mf_ppt{background-image:url(/docs/wiki/lib/images/fileicons/ppt.png)}a.mf_odp{background-image:url(/docs/wiki/lib/images/fileicons/odp.png)}a.mf_html{background-image:url(/docs/wiki/lib/images/fileicons/html.png)}a.mf_gz{background-image:url(/docs/wiki/lib/images/fileicons/gz.png)}a.mf_zip{background-image:url(/docs/wiki/lib/images/fileicons/zip.png)}a.mf_gif{background-image:url(/docs/wiki/lib/images/fileicons/gif.png)}a.mf_htm{background-image:url(/docs/wiki/lib/images/fileicons/htm.png)}a.mf_sql{background-image:url(/docs/wiki/lib/images/fileicons/sql.png)}a.mf_rar{background-image:url(/docs/wiki/lib/images/fileicons/rar.png)}a.mf_rb{background-image:url(/docs/wiki/lib/images/fileicons/rb.png)}a.mf_csv{background-image:url(/docs/wiki/lib/images/fileicons/csv.png)}a.mf_odc{background-image:url(/docs/wiki/lib/images/fileicons/odc.png)}a.mf_odf{background-image:url(/docs/wiki/lib/images/fileicons/odf.png)}a.mf_deb{background-image:url(/docs/wiki/lib/images/fileicons/deb.png)}a.mf_ods{background-image:url(/docs/wiki/lib/images/fileicons/ods.png)}a.mf_xlsx{background-image:url(/docs/wiki/lib/images/fileicons/xlsx.png)}a.mf_lua{background-image:url(/docs/wiki/lib/images/fileicons/lua.png)}a.mf_sxc{background-image:url(/docs/wiki/lib/images/fileicons/sxc.png)}a.mf_odg{background-image:url(/docs/wiki/lib/images/fileicons/odg.png)}a.mf_7z{background-image:url(/docs/wiki/lib/images/fileicons/7z.png)}a.mf_sxw{background-image:url(/docs/wiki/lib/images/fileicons/sxw.png)}a.mf_php{background-image:url(/docs/wiki/lib/images/fileicons/php.png)}div.clearer{clear:both;line-height:0;height:0;overflow:hidden;}div.no{display:inline;margin:0;padding:0;}.hidden{display:none;}div.error{background:#fcc url(/docs/wiki/lib/styles/../images/error.png) 0.5em 0px no-repeat;color:#000;border-bottom:1px solid #faa;font-size:90%;margin:0;padding-left:3em;overflow:hidden;}div.info{background:#ccf url(/docs/wiki/lib/styles/../images/info.png) 0.5em 0px no-repeat;color:#000;border-bottom:1px solid #aaf;font-size:90%;margin:0;padding-left:3em;overflow:hidden;}div.success{background:#cfc url(/docs/wiki/lib/styles/../images/success.png) 0.5em 0px no-repeat;color:#000;border-bottom:1px solid #afa;font-size:90%;margin:0;padding-left:3em;overflow:hidden;}div.notify{background:#ffc url(/docs/wiki/lib/styles/../images/notify.png) 0.5em 0px no-repeat;color:#000;border-bottom:1px solid #ffa;font-size:90%;margin:0;padding-left:3em;overflow:hidden;}.medialeft{float:left;}.mediaright{float:right;}.mediacenter{display:block;margin-left:auto;margin-right:auto;}.leftalign{text-align:left;}.centeralign{text-align:center;}.rightalign{text-align:right;}em.u{font-style:normal;text-decoration:underline;}em em.u{font-style:italic;}.code .br0{color:#6c6;}.code .co0{color:#808080;font-style:italic;}.code .co1{color:#808080;font-style:italic;}.code .co2{color:#808080;font-style:italic;}.code .co3{color:#808080;}.code .coMULTI{color:#808080;font-style:italic;}.code .es0{color:#009;font-weight:bold;}.code .kw1{color:#b1b100;}.code .kw2{color:#000;font-weight:bold;}.code .kw3{color:#006;}.code .kw4{color:#933;}.code .kw5{color:#00f;}.code .me1{color:#060;}.code .me2{color:#060;}.code .nu0{color:#c6c;}.code .re0{color:#00f;}.code .re1{color:#00f;}.code .re2{color:#00f;}.code .re3{color:#f33;font-weight:bold;}.code .re4{color:#099;}.code .st0{color:#f00;}.code .sy0{color:#6c6;}div#acl_manager div#acl__tree{font-size:90%;width:25%;height:300px;float:left;overflow:auto;border:1px solid #8cacbb;text-align:left;}div#acl_manager div#acl__tree a.cur{background-color:#ff9;font-weight:bold;}div#acl_manager div#acl__tree ul{list-style-type:none;margin:0;padding:0;}div#acl_manager div#acl__tree li{padding-left:1em;}div#acl_manager div#acl__tree ul img{margin-right:0.25em;cursor:pointer;}div#acl_manager div#acl__detail{width:73%;height:300px;float:right;overflow:auto;}div#acl_manager div#acl__detail fieldset{width:90%;}div#acl_manager div#acl__detail div#acl__user{border:1px solid #8cacbb;padding:0.5em;margin-bottom:0.6em;}div#acl_manager table.inline{width:100%;margin:0;}div#acl_manager .aclgroup{background:transparent url(/docs/wiki/lib/plugins/acl/pix/group.png) 0px 1px no-repeat;padding:1px 0px 1px 18px;}div#acl_manager .acluser{background:transparent url(/docs/wiki/lib/plugins/acl/pix/user.png) 0px 1px no-repeat;padding:1px 0px 1px 18px;}div#acl_manager .aclpage{background:transparent url(/docs/wiki/lib/plugins/acl/pix/page.png) 0px 1px no-repeat;padding:1px 0px 1px 18px;}div#acl_manager .aclns{background:transparent url(/docs/wiki/lib/plugins/acl/pix/ns.png) 0px 1px no-repeat;padding:1px 0px 1px 18px;}div#acl_manager label.disabled{color:#666!important;}#acl_manager label{text-align:left;font-weight:normal;display:inline;}#acl_manager table{margin-left:10%;width:80%;}#acl_manager table tr{background-color:inherit;}#acl_manager table tr:hover{background-color:#dee7ec;}div.toolbar #tool__bar_table button.selected{background:#fff url(/docs/wiki/lib/plugins/edittable/images/buttonshadow_toggled.png) repeat-x bottom;}div.toolbar #tool__bar_table button.disabled{background:#fff url(/docs/wiki/lib/plugins/edittable/images/buttonshadow_toggled2.png) repeat-x bottom;opacity:0.4;}div.toolbar #tool__bar_table button.separator{margin-left:0.5em;}div.toolbar #tool__bar_table{margin-bottom:0.5em;}#dw__editform #edit__wrap{margin-top:1.5em;overflow:auto;border:1px solid #8cacbb;}div.dokuwiki table.edit{margin:-1px;}div.dokuwiki table.edit th,div.dokuwiki table.edit td{min-width:5em;}div.dokuwiki table.edit input{border:none;background:transparent;font:inherit;width:100%;}html>body div.dokuwiki table.edit th,html>body div.dokuwiki table.edit td{background-image:url(/docs/wiki/lib/plugins/edittable/images/inputshadow.png);background-repeat:repeat-x;background-position:top;}div.dokuwiki table.edit td.handle{color:#666;background-color:#f5f5f5;padding:0;vertical-align:bottom;position:relative;}div.dokuwiki table.edit td.rowhandle{width:3em;}div.dokuwiki table.edit td.handle{cursor:move;}div.dokuwiki table.edit td.curhandle{background-color:#dee7ec;}div.dokuwiki table.edit td.disabledhandle{background-image:none;background-color:#c0c0c0;cursor:no-drop;}html>body div.dokuwiki table.edit td.handle{background-image:url(/docs/wiki/lib/plugins/edittable/images/buttonshadow.png);background-repeat:repeat-x;background-position:bottom;}#table__dragmarker{display:block;height:100%;width:100%;position:relative;}#table__dragmarker .dragmarker_topright{position:absolute;top:-0.5em;right:0px;}#table__dragmarker .dragmarker_bottomright{position:absolute;top:0.5em;right:0px;}#table__dragmarker .dragmarker_bottomleft{position:absolute;top:0.5em;left:0px;}.handle .handle_dropdown{float:right;margin-top:3px;}.handle .handle_dropdown img{padding:4px 2px 1px;cursor:pointer;}#dw__editform .handle .handle_dropdown div{position:absolute;z-index:25;}#dw__editform .handle .handle_dropdown div ul{background:#fff none repeat scroll 0 0;border:1px solid;list-style-image:none;list-style-position:outside;list-style-type:none;opacity:0.9;padding:0.3em;margin:0;cursor:auto;font-size:0.9em;}#dw__editform .handle .handle_dropdown div ul li{width:100%;text-align:left;}#dw__editform .handle .handle_dropdown div ul li a{width:100%;display:block;cursor:pointer;}#dw__editform .handle .handle_dropdown div ul li a:hover{background:#dee7ec;}div.dokuwiki div.editbutton_table{margin-top:-1em;}div.dokuwiki div.editbutton_table form input.button{float:none;margin-left:0.6em;padding:0 0.3em;background-image:none;border-top:none;border-bottom-right-radius:0.5em;-moz-border-radius-bottomright:0.5em;-webkit-border-bottom-right-radius:0.5em;border-bottom-left-radius:0.5em;-moz-border-radius-bottomleft:0.5em;-webkit-border-bottom-left-radius:0.5em;}div.dokuwiki div.section_highlight table{background-color:#dee7ec;}div.dokuwiki div.table.section_highlight{background-color:transparent !important;}.noteredirect{margin:1em;margin-left:auto;margin-right:auto;width:70% !important;min-height:18px;clear:both;text-align:justify;vertical-align:middle;border-collapse:collapse;padding:7px 10px 5px 32px;background-position:10px 50%;background-repeat:no-repeat;-moz-border-radius:10px;-khtml-border-radius:10px;border-radius:10px;background-color:#B5E0FF;background-image:url(/docs/wiki/lib/plugins/pageredirect/images/important_small.png);}#user__manager tr.disabled{color:#6f6f6f;background:#e4e4e4;}#user__manager tr.user_info{vertical-align:top;}#user__manager div.edit_user{width:46%;float:left;}#user__manager table{margin-bottom:1em;}#user__manager input.button[disabled]{color:#ccc!important;border-color:#ccc!important;}#plugin__manager h2{margin-left:0;}#plugin__manager form{display:block;margin:0;padding:0;}#plugin__manager legend{display:none;}#plugin__manager fieldset{width:auto;}#plugin__manager .button{margin:0;}#plugin__manager p,#plugin__manager label{text-align:left;}#plugin__manager .hidden{display:none;}#plugin__manager .new{background:#dee7ec;}#plugin__manager input[disabled]{color:#ccc;border-color:#ccc;}#plugin__manager .pm_menu,#plugin__manager .pm_info{margin-left:0;text-align:left;}#plugin__manager .pm_menu{float:left;width:48%;}#plugin__manager .pm_info{float:right;width:50%;}#plugin__manager .common fieldset{margin:0;padding:0 0 1.0em 0;text-align:left;border:none;}#plugin__manager .common label{padding:0 0 0.5em 0;}#plugin__manager .common input.edit{width:24em;margin:0.5em;}#plugin__manager .plugins fieldset{color:#000;background:#fff;text-align:right;border-top:none;border-right:none;border-left:none;}#plugin__manager .plugins fieldset.protected{background:#fdd;color:#000;}#plugin__manager .plugins fieldset.disabled{background:#e0e0e0;color:#a8a8a8;}#plugin__manager .plugins .legend{color:#000;background:inherit;display:block;margin:0;padding:0;font-size:1em;line-height:1.4em;font-weight:normal;text-align:left;float:left;padding:0;clear:none;}#plugin__manager .plugins .button{font-size:95%;}#plugin__manager .plugins fieldset.buttons{border:none;}#plugin__manager .plugins fieldset.buttons .button{float:left;}#plugin__manager .pm_info h3{margin-left:0;}#plugin__manager .pm_info dl{margin:1em 0;padding:0;}#plugin__manager .pm_info dt{width:6em;float:left;clear:left;margin:0;padding:0;}#plugin__manager .pm_info dd{margin:0 0 0 7em;padding:0;background:none;}#plugin__manager .plugins .enable{float:left;width:auto;margin-right:0.5em;}.dokuwiki #plugin__captcha_wrapper img{margin:1px;vertical-align:bottom;border:1px solid #8cacbb;}#config__manager div.success,#config__manager div.error,#config__manager div.info{background-position:0.5em;padding:0.5em;text-align:center;}#config__manager fieldset{margin:1em;width:auto;margin-bottom:2em;background-color:#dee7ec;color:#000;padding:0 1em;}#config__manager legend{font-size:1.25em;}#config__manager form{}#config__manager table{margin:1em 0;width:100%;}#config__manager fieldset td{text-align:left;}#config__manager fieldset td.value{width:31em;}#config__manager td.label{padding:0.8em 0 0.6em 1em;vertical-align:top;}#config__manager td.label label{clear:left;display:block;}#config__manager td.label img{padding:0 10px;vertical-align:middle;float:right;}#config__manager td.label span.outkey{font-size:70%;margin-top:-1.7em;margin-left:-1em;display:block;background-color:#fff;color:#666;float:left;padding:0 0.1em;position:relative;z-index:1;}#config__manager td input.edit{width:30em;}#config__manager td .input{width:30.8em;}#config__manager td select.edit{}#config__manager td textarea.edit{width:27.5em;height:4em;}#config__manager tr .input,#config__manager tr input,#config__manager tr textarea,#config__manager tr select{background-color:#fff;color:#000;}#config__manager tr.default .input,#config__manager tr.default input,#config__manager tr.default textarea,#config__manager tr.default select,#config__manager .selectiondefault{background-color:#cdf;color:#000;}#config__manager tr.protected .input,#config__manager tr.protected input,#config__manager tr.protected textarea,#config__manager tr.protected select,#config__manager tr.protected .selection{background-color:#fcc!important;color:#000 !important;}#config__manager td.error{background-color:red;color:#000;}#config__manager .selection{width:14.8em;float:left;margin:0 0.3em 2px 0;}#config__manager .selection label{float:right;width:14em;font-size:90%;}* html #config__manager .selection label{padding-top:2px;}#config__manager .selection input.checkbox{padding-left:0.7em;}#config__manager .other{clear:both;padding-top:0.5em;}#config__manager .other label{padding-left:2px;font-size:90%;}div.noteclassic,div.noteimportant,div.notewarning,div.notetip{margin:2em;margin-left:auto;margin-right:auto;width:70% !important;min-height:40px;clear:both;text-align:justify;vertical-align:middle;border-collapse:collapse;padding:15px 20px 15px 80px;background-position:20px 50%;background-repeat:no-repeat;-moz-border-radius:20px;-khtml-border-radius:20px;border-radius:20px;}div.noteclassic{background-color:#eef;background-image:url(/docs/wiki/lib/plugins/note/images/note.png);}div.noteimportant{background-color:#ffc;background-image:url(/docs/wiki/lib/plugins/note/images/important.png);}div.notewarning{background-color:#fdd;background-image:url(/docs/wiki/lib/plugins/note/images/warning.png);}div.notetip{background-color:#dfd;background-image:url(/docs/wiki/lib/plugins/note/images/tip.png);}.dtree{font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;font-size:11px;color:#000;white-space:nowrap;line-height:normal;}.dtree img{border:0px;vertical-align:top;}.dtree a{color:#090;text-decoration:none;}.dtree a.node,.dtree a.nodeSel a.navSel{white-space:nowrap;padding:1px 2px 1px 2px;}.dtree a.nodeSel{background-color:#dee7ec;}.dtree a.navSel{background-color:#ff9;}.indexmenu_nojs{display:block;}div.li a.indexmenu_idx{color:#f30 !important;text-decoration:none !important;font-weight:bold;}div.li a.indexmenu_idx_head{font-weight:bold;}div.dokuwiki div.indexmenu_list_themes{clear:both;border-top:2px solid #8cacbb;padding-left:1em;}.dtree a.nodeFdUrl:hover,.dtree a.nodeSel:hover,a.navSel:hover,.dtree a.nodeUrl:hover{color:#090;text-decoration:underline;background-color:#dee7ec;}.dtree a.node:hover{text-decoration:none;}.dtree .indexmenu_tocbullet{position:absolute;background:transparent url(/docs/wiki/lib/plugins/indexmenu/images/toc_bullet.gif) no-repeat scroll;vertical-align:middle;width:11px;height:11px;}.dtree .indexmenu_larrow{position:absolute;filter:alpha(opacity=60);-moz-opacity:.60;opacity:.60;background:transparent url(/docs/wiki/lib/plugins/indexmenu/images/larrow.gif) repeat-y scroll;padding-left:22px;z-index:100;}.indexmenu_toc{font-size:80%;line-height:1.2em;white-space:normal;overflow:hidden;width:200px !important;z-index:100 !important;word-wrap:break-word;}.indexmenu_toc .indexmenu_toc_inside{border:1px solid #8cacbb;background-color:#fff;text-align:left;padding:0.5em 0 0.7em 0;max-height:300px;height:expression( this.scrollHeight > 300 ? "300px":"auto" );overflow:auto;}.dtree .indexmenu_rarrow{position:absolute;background:white url(/docs/wiki/lib/plugins/indexmenu/images/rarrow.gif) no-repeat scroll;width:11px;height:15px;}.indexmenu_rmenu{position:absolute;z-index:100;background-color:#fff;border:1px solid black;font-size:80%;line-height:100%;padding-bottom:5px;}.indexmenu_rmenuhead{background:#CFC url(/docs/wiki/lib/plugins/indexmenu/images/close.gif) no-repeat scroll;border-bottom:1px solid #000;color:#000;font-size:90%;margin:0pt;text-align:left;padding:1px 15px;vertical-align:middle;overflow:hidden;width:80px;}.indexmenu_rmenu ul,.indexmenu_rmenu li{list-style-type:none !important;list-style-image:none !important;color:#000 !important;margin:2px !important;text-align:center;}.indexmenu_rmenu a:hover{background-color:#000 !important;color:#fff !important;}.indexmenu_opts{font-size:80%;}.dtree .emptynode{background:transparent url(/docs/wiki/lib/plugins/indexmenu/images/empty.gif) no-repeat scroll;display:inline;padding:1px 8px;width:16px;height:16px;vertical-align:top;zoom:1;}div.dokuwiki .header{padding:3px 0 0 2px;}div.dokuwiki .pagename{float:left;font-size:200%;font-weight:bolder;color:#dee7ec;text-align:left;vertical-align:middle;}div.dokuwiki .pagename a{color:#436976 !important;text-decoration:none !important;}div.dokuwiki .logo{float:right;font-size:220%;font-weight:bolder;text-align:right;vertical-align:middle;}div.dokuwiki .logo a{color:#dee7ec !important;text-decoration:none !important;font-variant:small-caps;letter-spacing:2pt;}div.dokuwiki .bar{border:1px #e0e0e0 solid;background:#f8f8f8;padding:10px;clear:both;}div.dokuwiki .bar-left{float:left;}div.dokuwiki .bar-right{float:right;text-align:right;}div.dokuwiki #bar__bottom{margin-bottom:3px;}div.dokuwiki .bar-tools{display:none;border-left:1px #e0e0e0 solid;border-right:1px #e0e0e0 solid;border-bottom:1px #e0e0e0 solid;background:#f8f8f8;padding:10px;clear:both;}div.dokuwiki div.meta{clear:both;margin:20px 0px 0px 0px;color:#638c9c;font-size:70%;}div.dokuwiki div.meta div.user{float:left;}div.dokuwiki div.meta div.doc{text-align:right;}*{padding:0;margin:0;}body{font:80% "Lucida Grande",Verdana,Lucida,Helvetica,Arial,sans-serif;background-color:#fff;color:#000;}div.dokuwiki div.page{text-align:justify;}div.dokuwiki table{font-size:100%;}div.dokuwiki tr,div.dokuwiki td,div.dokuwiki th{}div.dokuwiki img{border:0;}div.dokuwiki p,div.dokuwiki blockquote,div.dokuwiki table,div.dokuwiki pre{margin:0 0 1.0em 0;}div.dokuwiki hr{border:0px;border-top:1px solid #8cacbb;text-align:center;height:0px;}div.dokuwiki div.nothing{text-align:center;margin:2em;}div.dokuwiki form{border:none;display:inline;}div.dokuwiki label.block{display:block;text-align:right;font-weight:bold;}div.dokuwiki label.simple{display:block;text-align:left;font-weight:normal;}div.dokuwiki label.block input.edit{width:50%;}div.dokuwiki fieldset{width:300px;text-align:center;border:1px solid #8cacbb;padding:0.5em;margin:auto;}div.dokuwiki textarea.edit{font-family:monospace;font-size:14px;color:#000;background-color:#fff;border:1px solid #8cacbb;padding:0.3em 0 0 0.3em;width:100%;}html>body div.dokuwiki textarea.edit{background:#fff url(/docs/wiki/lib/tpl/default/images/inputshadow.png) repeat-x top;}div.dokuwiki input.edit,div.dokuwiki select.edit{font-size:100%;border:1px solid #8cacbb;color:#000;background-color:#fff;vertical-align:middle;margin:1px;padding:0.20em 0.3em;display:inline;}html>body div.dokuwiki input.edit,html>body div.dokuwiki select.edit{background:#fff url(/docs/wiki/lib/tpl/default/images/inputshadow.png) repeat-x top;}div.dokuwiki select.edit{padding:0.1em 0;}div.dokuwiki input.missing{font-size:100%;border:1px solid #8cacbb;color:#000;background-color:#fcc;vertical-align:middle;margin:1px;padding:0.20em 0.3em;display:inline;}div.dokuwiki textarea.edit[disabled],div.dokuwiki textarea.edit[readonly],div.dokuwiki input.edit[disabled],div.dokuwiki input.edit[readonly],div.dokuwiki input.button[disabled],div.dokuwiki select.edit[disabled]{background-color:#f5f5f5!important;color:#666!important;}div.dokuwiki div.toolbar,div.dokuwiki div#wiki__editbar{margin:2px 0;text-align:left;}div.dokuwiki div#size__ctl{float:right;width:60px;height:2.7em;}div.dokuwiki #size__ctl img{cursor:pointer;}div.dokuwiki div#wiki__editbar div.editButtons{float:left;padding:0 1.0em 0.7em 0;}div.dokuwiki div#wiki__editbar div.summary{float:left;}div.dokuwiki .nowrap{white-space:nowrap;}div.dokuwiki div#draft__status{float:right;color:#638c9c;}div.dokuwiki div.license{padding:0.5em;font-size:90%;text-align:center;}div.dokuwiki form#dw__editform div.license{clear:left;font-size:90%;}div.dokuwiki input.button,div.dokuwiki button.button{border:1px solid #8cacbb;color:#000;background-color:#fff;vertical-align:middle;text-decoration:none;font-size:100%;cursor:pointer;margin:1px;padding:0.125em 0.4em;}html>body div.dokuwiki input.button,html>body div.dokuwiki button.button{background:#fff url(/docs/wiki/lib/tpl/default/images/buttonshadow.png) repeat-x bottom;}* html div.dokuwiki input.button,* html div.dokuwiki button.button{height:1.8em;}div.dokuwiki div.secedit input.button{border:1px solid #8cacbb;color:#000;background-color:#fff;vertical-align:middle;text-decoration:none;margin:0;padding:0;font-size:10px;cursor:pointer;float:right;display:inline;}div.dokuwiki div.pagenav{margin:1em 0 0 0;}div.dokuwiki div.pagenav-prev{text-align:right;float:left;width:49%}div.dokuwiki div.pagenav-next{text-align:left;float:right;width:49%}div.dokuwiki a:link,div.dokuwiki a:visited{color:#436976;text-decoration:none;}div.dokuwiki a:hover,div.dokuwiki a:active{color:#000;text-decoration:underline;}div.dokuwiki h1 a{text-decoration:none !important;}div.dokuwiki h2 a,div.dokuwiki h3 a,div.dokuwiki h4 a,div.dokuwiki h5 a,div.dokuwiki a.nolink{color:#000 !important;text-decoration:none !important;}div.dokuwiki a.interwiki{}div.dokuwiki a.media{}div.dokuwiki a.mail{background:transparent url(/docs/wiki/lib/tpl/default/images/mail_icon.gif) 0px 1px no-repeat;padding:1px 0px 1px 16px;}div.dokuwiki a.wikilink2{text-decoration:none !important;border-bottom:dashed 1px #f30 !important;}div.dokuwiki div.preview{background-color:#f5f5f5;margin:0 0 0 2em;padding:4px;border:1px dashed #000;}div.dokuwiki div.breadcrumbs{background:url(http://s0.percona.com/ui-tab-bg.png) -14px left repeat-x;color:#999;font-size:11px;font-style:italic;padding:7px 0 15px 12px;}div.dokuwiki div.breadcrumbs a,div.dokuwiki div.breadcrumbs a:visited{color:#999 !important;border-color:#999 !important;}div.dokuwiki div.breadcrumbs a:hover{color:#d12907 !important;border-color:#d12907 !important;}div.dokuwiki span.user{color:#ccc;font-size:90%;}div.dokuwiki li.minor{color:#666;font-style:italic;}div.dokuwiki img.media{margin:3px;}div.dokuwiki img.medialeft{border:0;float:left;margin:0 1.5em 0 0;}div.dokuwiki img.mediaright{border:0;float:right;margin:0 0 0 1.5em;}div.dokuwiki img.mediacenter{border:0;display:block;margin:0 auto;}div.dokuwiki img.middle{vertical-align:middle;}div.dokuwiki acronym{cursor:help;border-bottom:1px dotted #000;}div.dokuwiki li.open{list-style-image:url(/docs/wiki/lib/tpl/default/images/open.gif);}div.dokuwiki li.closed{list-style-image:url(/docs/wiki/lib/tpl/default/images/closed.gif);}div.dokuwiki blockquote{border-left:2px solid #8cacbb;padding-left:3px;}div.dokuwiki pre{font-size:80%;padding:10px;border:1px dashed #8cacbb;color:#000;overflow:auto;}div.dokuwiki pre.pre{background-color:#f7f9fa;}div.dokuwiki pre.code{background-color:#f7f9fa;}div.dokuwiki pre.file{background-color:#dee7ec;}div.dokuwiki dl.file,div.dokuwiki dl.code{margin-top:2em;margin-bottom:2.5em;}div.dokuwiki dl.file dt,div.dokuwiki dl.code dt{border:1px dashed #8cacbb;display:inline;padding:0.1em 1em;margin-left:2em;}div.dokuwiki dl.code dt a,div.dokuwiki dl.file dt a{color:#000;}div.dokuwiki dl.code dt{background-color:#f7f9fa;border-bottom:1px solid #f7f9fa;}div.dokuwiki dl.file dt{background-color:#dee7ec;border-bottom:1px solid #dee7ec;}div.dokuwiki table.inline{background-color:#fff;border-spacing:0px;border-collapse:collapse;}div.dokuwiki table.inline th{padding:3px;border:1px solid #8cacbb;background-color:#dee7ec;}div.dokuwiki table.inline td{padding:3px;border:1px solid #8cacbb;}#toc{width:258px;font-size:12px;line-height:16px;clear:both;border:1px #e0e0e0 solid;background:#fff url(http://s1.percona.com/ui-tab-bg.png) top left repeat-x;}#toc div.tocheader{text-align:left;font-weight:bold;padding:7px 10px;margin-bottom:2px;font-size:16px;}#toc div.tocheader a,#toc div.tocheader a:visited{color:#000 !important;text-decoration:none !important;}#toc div.tocheader a:hover{color:#d12907 !important;text-decoration:none !important;}#toc span.toc_open,#toc span.toc_close{float:right;display:block;margin:0.4em 3px 0 0;}#toc span.toc_open span,#toc span.toc_close span{display:none;}#toc span.toc_open{margin-top:0.4em;border-top:0.4em solid #000;}#toc span.toc_close{margin-top:0;border-bottom:0.4em solid #000;}#toc #toc__inside{text-align:left;padding:1px 15px 15px 13px;}#toc ul.toc{list-style-type:none;padding-left:0px !important;margin:0;}#toc ul.toc ul{padding-left:15px !important;}#toc ul.toc li{margin:5px 0px !important;}#toc ul.toc li.clear{padding-left:0;}#toc a.toc:link,#toc a.toc:visited{color:#d12907;text-decoration:underline;}#toc a.toc:hover,#toc a.toc:active{color:#712000;text-decoration:underline;}div.dokuwiki table.diff{background-color:#fff;width:100%;}div.dokuwiki td.diff-blockheader{font-weight:bold;}div.dokuwiki table.diff th{border-bottom:1px solid #8cacbb;font-size:110%;width:50%;font-weight:normal;text-align:left;}div.dokuwiki table.diff th a{font-weight:bold;}div.dokuwiki table.diff th span.user{color:#000;font-size:80%;}div.dokuwiki table.diff th span.sum{font-size:80%;font-weight:bold;}div.dokuwiki table.diff th.minor{font-style:italic;}div.dokuwiki table.diff td{font-family:monospace;font-size:100%;}div.dokuwiki td.diff-addedline{background-color:#dfd;}div.dokuwiki td.diff-deletedline{background-color:#ffb;}div.dokuwiki td.diff-context{background-color:#f5f5f5;}div.dokuwiki table.diff td.diff-addedline strong,div.dokuwiki table.diff td.diff-deletedline strong{color:red;}div.dokuwiki div.footnotes{clear:both;border-top:1px solid #8cacbb;padding-left:1em;margin-top:1em;}div.dokuwiki div.fn{font-size:90%;}div.dokuwiki a.fn_bot{font-weight:bold;}div.insitu-footnote{font-size:80%;line-height:1.2em;border:1px solid #8cacbb;background-color:#f7f9fa;text-align:left;padding:4px;max-width:40%;}* html .insitu-footnote pre.code,* html .insitu-footnote pre.file{padding-bottom:18px;}div.dokuwiki .search_result{margin-bottom:6px;padding:0 10px 0 30px;}div.dokuwiki .search_snippet{color:#ccc;font-size:12px;margin-left:20px;}div.dokuwiki .search_sep{color:#000;}div.dokuwiki .search_hit{color:#000;background-color:#ff9;}div.dokuwiki strong.search_hit{font-weight:normal;}div.dokuwiki div.search_quickresult{margin:0 0 15px 30px;padding:0 10px 10px 0;border-bottom:1px dashed #8cacbb;}div.dokuwiki div.search_quickresult h3{margin:0 0 1.0em 0;font-size:1em;font-weight:bold;}div.dokuwiki ul.search_quickhits{margin:0 0 0.5em 1.0em;}div.dokuwiki ul.search_quickhits li{margin:0 1.0em 0 1.0em;float:left;width:30%;}div.dokuwiki div.section_highlight{background-color:#dee7ec;}div.footerinc{text-align:center;}.footerinc a img{opacity:0.5;border:0;}.footerinc a:hover img{opacity:1;}div.dokuwiki div.ajax_qsearch{position:absolute;right:237px;;width:200px;opacity:0.9;display:none;font-size:80%;line-height:1.2em;border:1px solid #8cacbb;background-color:#f7f9fa;text-align:left;padding:4px;}button.toolbutton{background-color:#fff;padding:0px;margin:0 1px 0 0;border:1px solid #8cacbb;cursor:pointer;}html>body button.toolbutton{background:#fff url(/docs/wiki/lib/tpl/default/images/buttonshadow.png) repeat-x bottom;}div.picker{width:250px;border:1px solid #8cacbb;background-color:#dee7ec;}div.pk_hl{width:125px;}button.pickerbutton{padding:0px;margin:0 1px 1px 0;border:0;background-color:transparent;font-size:80%;cursor:pointer;}div.dokuwiki div.img_big{float:left;margin-right:0.5em;}div.dokuwiki dl.img_tags dt{font-weight:bold;background-color:#dee7ec;}div.dokuwiki dl.img_tags dd{background-color:#f5f5f5;}div.dokuwiki div.imagemeta{color:#666;font-size:70%;line-height:95%;}div.dokuwiki div.imagemeta img.thumb{float:left;margin-right:0.1em;}div.dokuwiki h4{border-top:none !important;margin:20px 0px 20px 0px !important;}#media__manager{height:100%;overflow:hidden;}#media__left{width:30%;border-right:solid 1px #8cacbb;height:100%;overflow:auto;position:absolute;left:0;}#media__right{width:69.7%;height:100%;overflow:auto;position:absolute;right:0;}#media__manager h1{margin:0;padding:0;margin-bottom:0.5em;}#media__tree img{float:left;padding:0.5em 0.3em 0 0;}#media__tree ul{list-style-type:none;list-style-image:none;margin-left:1.5em;}#media__tree li{clear:left;list-style-type:none;list-style-image:none;}*+html #media__tree li,* html #media__tree li{border:1px solid #fff;}#media__opts{padding-left:1em;margin-bottom:0.5em;}#media__opts input{float:left;display:block;margin-top:4px;position:absolute;}*+html #media__opts input,* html #media__opts input{position:static;}#media__opts label{display:block;float:left;margin-left:20px;margin-bottom:4px;}*+html #media__opts label,* html #media__opts label{margin-left:10px;}#media__opts br{clear:left;}#media__content img.load{margin:1em auto;}#media__content #scroll__here{border:1px dashed #8cacbb;}#media__content .odd{background-color:#f7f9fa;padding:0.4em;}#media__content .even{padding:0.4em;}#media__content a.mediafile{margin-right:1.5em;font-weight:bold;}#media__content div.detail{padding:0.3em 0 0.3em 2em;}#media__content div.detail div.thumb{float:left;width:130px;text-align:center;margin-right:0.4em;}#media__content img.btn{vertical-align:text-bottom;}#media__content div.example{color:#666;margin-left:1em;}#media__content div.upload{font-size:90%;padding:0 0.5em 0.5em 0.5em;}#media__content form#dw__upload,#media__content div#dw__flashupload{display:block;border-bottom:solid 1px #8cacbb;padding:0 0.5em 1em 0.5em;}#media__content form#dw__upload fieldset{padding:0;margin:0;border:none;width:auto;}#media__content form#dw__upload p{text-align:left;padding:0.25em 0;margin:0;line-height:1.0em;}#media__content form#dw__upload label.check{float:none;width:auto;margin-left:11.5em;}#media__content form.meta{display:block;padding:0 0 1em 0;}#media__content form.meta label{display:block;width:25%;float:left;font-weight:bold;margin-left:1em;clear:left;}#media__content form.meta .edit{font:100% "Lucida Grande",Verdana,Lucida,Helvetica,Arial,sans-serif;float:left;width:70%;padding-right:0;padding-left:0.2em;margin:2px;}#media__content form.meta textarea.edit{height:8em;}#media__content form.meta div.metafield{clear:left;}#media__content form.meta div.buttons{clear:left;margin-left:20%;padding-left:1em;}#media__popup{background-color:#fff;display:none;border:1px solid #8cacbb;position:absolute;width:270px;}#media__popup h1{text-align:center;font-weight:normal;background-color:#dee7ec;height:16px;margin-bottom:5px;font-size:12px;border-bottom:0;}#media__popup p{display:block;line-height:14pt;margin:0.5em;}#media_nolink{padding:4px 0;}#media__popup label{float:left;width:9em;}#media__popup .button{margin-left:auto;margin-right:auto;}#media__popup .btnlbl{text-align:center;}#media__popup .btnlbl input{margin:0 1em;}#media__closeimg{float:right;}#media__linkopts label,#media__nolnk{width:80px;float:left;margin-left:10px;}#media__linkopts label{line-height:20px;}#media__nolnk,#media__linkopts label.long{margin-bottom:8px;line-height:12px;}#media__linkopts label.long{width:150px;float:none;}#media__linkopts br{clear:both;}#media__linkopts select{width:60px;margin-left:10px;}#media__linkopts input.edit{width:50px;margin-left:10px;}#media__linkopts #media__title{width:150px;}#admin__version{clear:left;float:right;color:#666;}.dokuwiki ul.admin_tasks{font-size:115%;float:left;width:40%;list-style-type:none;}.dokuwiki ul.admin_tasks li{line-height:22px;padding-left:35px;margin:1em 0;background:transparent none no-repeat scroll 0 0;text-align:left;}.dokuwiki ul.admin_tasks li div.li{font-weight:bold;}.dokuwiki ul.admin_tasks li.admin_acl{background-image:url(/docs/wiki/lib/tpl/default/../../images/admin/acl.png);}.dokuwiki ul.admin_tasks li.admin_usermanager{background-image:url(/docs/wiki/lib/tpl/default/../../images/admin/usermanager.png);}.dokuwiki ul.admin_tasks li.admin_plugin{background-image:url(/docs/wiki/lib/tpl/default/../../images/admin/plugin.png);}.dokuwiki ul.admin_tasks li.admin_config{background-image:url(/docs/wiki/lib/tpl/default/../../images/admin/config.png);}.dokuwiki ul.admin_tasks li.admin_revert{background-image:url(/docs/wiki/lib/tpl/default/../../images/admin/revert.png);}.dokuwiki ul.admin_tasks li.admin_popularity{background-image:url(/docs/wiki/lib/tpl/default/../../images/admin/popularity.png);}#link__wiz{position:absolute;display:block;z-index:99;width:300px;height:250px;padding:0;margin:0;overflow:hidden;border:1px solid #8cacbb;background-color:#f5f5f5;text-align:center;}#link__wiz_header{background-color:#dee7ec;height:16px;margin-bottom:5px;}#link__wiz_close{cursor:pointer;margin:0;}#link__wiz_result{background-color:#fff;width:293px;height:193px;overflow:auto;border:1px solid #8cacbb;margin:3px auto;text-align:left;}#link__wiz_result div.type_u{padding:3px 3px 3px 22px;background:transparent url(/docs/wiki/lib/tpl/default/../../images/up.png) 3px 3px no-repeat;}#link__wiz_result div.type_f{padding:3px 3px 3px 22px;background:transparent url(/docs/wiki/lib/tpl/default/../../images/page.png) 3px 3px no-repeat;}#link__wiz_result div.type_d{padding:3px 3px 3px 22px;background:transparent url(/docs/wiki/lib/tpl/default/../../images/ns.png) 3px 3px no-repeat;}#link__wiz_result div.even{background-color:#f5f5f5;}#link__wiz_result div.selected{background-color:#dee7ec;}#link__wiz_result span{display:block;color:#666;}.ondrag{cursor:move;opacity:0.8;}form#subscribe__form{display:block;width:300px;text-align:center;}form#subscribe__form fieldset{text-align:left;margin:0.5em 0;}form#subscribe__form label{display:block;margin:0 0.5em 0.5em;}
0\ No newline at end of file2\ No newline at end of file
13
=== added file 'doc/source/percona-theme/static/percona.com.js'
--- doc/source/percona-theme/static/percona.com.js 1970-01-01 00:00:00 +0000
+++ doc/source/percona-theme/static/percona.com.js 2012-02-16 17:09:19 +0000
@@ -0,0 +1,242 @@
1window.jQuery(function($) {
2
3
4
5function setCookie(c_name, value, expiredays)
6{
7 var exdate = new Date();
8 exdate.setDate(exdate.getDate() + expiredays);
9 document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";path=/;expires=" + exdate.toUTCString());
10}
11
12function getCookie(c_name)
13{
14 if (document.cookie.length > 0)
15 {
16 c_start = document.cookie.indexOf(c_name + "=");
17 if (c_start != -1)
18 {
19 c_start = c_start + c_name.length+1;
20 c_end = document.cookie.indexOf(";",c_start);
21 if (c_end == -1)
22 {
23 c_end = document.cookie.length;
24 }
25 return unescape(document.cookie.substring(c_start, c_end));
26 }
27 }
28 return "";
29}
30
31
32NAVI = new Object();
33
34NAVI.CloseTimer = null;
35
36NAVI.Open = function ( menu_tag, dir )
37{
38 NAVI_CancelTimer();
39 NAVI_Close();
40 SEARCH_CancelTimer();
41 SEARCH_Close();
42 if ('h' == dir)
43 {
44 return;
45 }
46 var pos = $("#navilink-span-"+menu_tag).offset();
47 if (dir=='r')
48 {
49 $("#navi-dropdown-"+menu_tag).css( { "position": "absolute", "left": (pos.left + ($("#navilink-span-"+menu_tag).width()) + 2 - ($("#navi-dropdown-"+menu_tag).width())) + "px", "top": (pos.top + 32) + "px" } );
50 }
51 else
52 {
53 $("#navi-dropdown-"+menu_tag).css( { "position": "absolute", "left": (pos.left) + "px", "top": (pos.top + 32) + "px" } );
54 }
55 $("#navi-dropdown-"+menu_tag).show();
56 $("#navilink-span-"+menu_tag).bind('mouseover',NAVI_CancelTimer);
57 $("#navilink-span-"+menu_tag).bind('mouseout',NAVI_Timer);
58 $("#navi-dropdown-"+menu_tag).bind('mouseover',NAVI_CancelTimer);
59 $("#navi-dropdown-"+menu_tag).bind('mouseout',NAVI_Timer);
60};
61
62function NAVI_Close()
63{
64 $(".navi-dropdown").hide();
65 $("#menu div").unbind('mouseover');
66 $(".dropdown").unbind('mouseover');
67 $(".dropdown").unbind('mouseout');
68
69 $("#search-dropdown").hide();
70 $("#searchlink-anchor").unbind('mouseover');
71 $("#searchlink-anchor").unbind('mouseout');
72 $("#search-dropdown").unbind('mouseover');
73 $("#search-dropdown").unbind('mouseout');
74}
75
76function NAVI_CancelTimer()
77{
78 if (NAVI.CloseTimer!=null)
79 {
80 window.clearTimeout(NAVI.CloseTimer);
81 NAVI.CloseTimer = null;
82 }
83}
84
85function NAVI_Timer()
86{
87 if (NAVI.CloseTimer==null)
88 {
89 NAVI.CloseTimer = window.setTimeout(NAVI_Close, 300);
90 }
91}
92
93
94SUBNAVI = new Object();
95
96SUBNAVI.Open = function ( menu_tag )
97{
98 if ($("#sidesubnavi-" + menu_tag + ':hidden').length)
99 {
100 $(".sidesubnavi").hide();
101 $("#sidesubnavi-"+menu_tag).show();
102 return false;
103 } else {
104 return true;
105 }
106};
107
108
109SEARCH = new Object();
110
111SEARCH.CloseTimer = null;
112
113SEARCH.Open = function()
114{
115 NAVI_CancelTimer();
116 NAVI_Close();
117 SEARCH_CancelTimer();
118 SEARCH_Close();
119 var pos = $("#searchlink-anchor").offset();
120 $("#search-dropdown").css( { "position": "absolute", "left": (pos.left - ($("#search-dropdown").width()) + 40) + "px", "top": (pos.top + 36) + "px" } );
121 $("#search-dropdown").show();
122 $("#searchlink-anchor").bind('mouseover',NAVI_CancelTimer);
123 $("#searchlink-anchor").bind('mouseout',NAVI_Timer);
124 $("#search-dropdown").bind('mouseover',NAVI_CancelTimer);
125 $("#search-dropdown").bind('mouseout',NAVI_Timer);
126 $("#search-input")[0].focus();
127};
128
129function SEARCH_Close()
130{
131 $(".navi-dropdown").hide();
132 $("#menu div").unbind('mouseover');
133 $(".dropdown").unbind('mouseover');
134 $(".dropdown").unbind('mouseout');
135
136 $("#search-dropdown").hide();
137 $("#searchlink-anchor").unbind('mouseover');
138 $("#searchlink-anchor").unbind('mouseout');
139 $("#search-dropdown").unbind('mouseover');
140 $("#search-dropdown").unbind('mouseout');
141}
142
143
144function SEARCH_CancelTimer()
145{
146 if (SEARCH.CloseTimer!=null)
147 {
148 window.clearTimeout(SEARCH.CloseTimer);
149 SEARCH.CloseTimer = null;
150 }
151}
152
153function SEARCH_Timer()
154{
155 if (SEARCH.CloseTimer==null)
156 {
157 SEARCH.CloseTimer = window.setTimeout(SEARCH_Close, 300);
158 }
159}
160
161menuImg1 = new Image(); menuImg1.src = 'http://s1.percona.com/ui-dropdown-header-l.png';
162menuImg2 = new Image(); menuImg2.src = 'http://s2.percona.com/ui-dropdown-header-r.png';
163menuImg3 = new Image(); menuImg3.src = 'http://s3.percona.com/ui-dropdown-header-search.png';
164menuImg4 = new Image(); menuImg4.src = 'http://s0.percona.com/ui-dropdown-bg.png';
165menuImg5 = new Image(); menuImg5.src = 'http://s1.percona.com/ui-dropdown-footer.png';
166
167
168});
169
170
171var Percona = {
172 ssl: false,
173 host: 'www.percona.com'
174};
175/**
176 * @param string selector jQuery selector string
177 */
178Percona.getRecentServerVersion = function(selector)
179{
180 if ('string' != typeof(selector))
181 {
182 alert('Percona.getRecentServerVersion: missed or wrong selector!');
183 }
184 /* Localize jQuery variable */
185 var jQuery;
186 /******** Load jQuery if not present *********/
187 if (window.jQuery === undefined || window.jQuery.fn.jquery !== '1.4.2')
188 {
189 var script_tag = document.createElement('script');
190 script_tag.setAttribute("type","text/javascript");
191 script_tag.setAttribute('src', 'http' + (Percona.ssl ? 's' : '') + ':/' + '/ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js');
192 script_tag.onload = scriptLoadHandler;
193 script_tag.onreadystatechange = function () /* Same thing but for IE */
194 {
195 if (this.readyState == 'complete' || this.readyState == 'loaded')
196 {
197 scriptLoadHandler();
198 }
199 };
200 /* Try to find the head, otherwise default to the documentElement */
201 (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag);
202 } else {
203 /* The jQuery version on the window is the one we want to use */
204 jQuery = window.jQuery;
205 main();
206 }
207 var scriptLoadHandler_counter = 0;
208 /******** Called once jQuery has loaded ******/
209 function scriptLoadHandler()
210 {
211 if (++scriptLoadHandler_counter > 1)
212 {
213 return;
214 }
215 /* Restore $ and window.jQuery to their previous values and store the
216 new jQuery in our local jQuery variable */
217 jQuery = window.jQuery.noConflict(true);
218 /* Call our main function */
219 main(jQuery);
220 }
221 /******** Our main function ********/
222 function main($)
223 {
224 var fillRecentServerVersion = function($)
225 {
226 if ($(selector).get(0))
227 {
228 $.get('http' + (Percona.ssl ? 's' : '') + ':/' + '/' + Percona.host + '/ajax/server-version/?callback=?', {}, function(json)
229 {
230 if ('object' == typeof(json) && 'string' == typeof(json.recentServerVersion))
231 {
232 $(selector).text(' ' + json.recentServerVersion);
233 }
234 }, 'jsonp');
235 }
236 };
237 $(document).ready(function()
238 {
239 fillRecentServerVersion(jQuery);
240 });
241 }
242};
0243
=== added file 'doc/source/percona-theme/static/phone-small.png'
1Binary files doc/source/percona-theme/static/phone-small.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/phone-small.png 2012-02-16 17:09:19 +0000 differ244Binary files doc/source/percona-theme/static/phone-small.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/phone-small.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/phone.png'
2Binary files doc/source/percona-theme/static/phone.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/phone.png 2012-02-16 17:09:19 +0000 differ245Binary files doc/source/percona-theme/static/phone.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/phone.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/shield.png'
3Binary files doc/source/percona-theme/static/shield.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/shield.png 2012-02-16 17:09:19 +0000 differ246Binary files doc/source/percona-theme/static/shield.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/shield.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/sidebar.js'
--- doc/source/percona-theme/static/sidebar.js 1970-01-01 00:00:00 +0000
+++ doc/source/percona-theme/static/sidebar.js 2012-02-16 17:09:19 +0000
@@ -0,0 +1,151 @@
1/*
2 * sidebar.js
3 * ~~~~~~~~~~
4 *
5 * This script makes the Sphinx sidebar collapsible.
6 *
7 * .sphinxsidebar contains .sphinxsidebarwrapper. This script adds
8 * in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton
9 * used to collapse and expand the sidebar.
10 *
11 * When the sidebar is collapsed the .sphinxsidebarwrapper is hidden
12 * and the width of the sidebar and the margin-left of the document
13 * are decreased. When the sidebar is expanded the opposite happens.
14 * This script saves a per-browser/per-session cookie used to
15 * remember the position of the sidebar among the pages.
16 * Once the browser is closed the cookie is deleted and the position
17 * reset to the default (expanded).
18 *
19 * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
20 * :license: BSD, see LICENSE for details.
21 *
22 */
23
24$(function() {
25 // global elements used by the functions.
26 // the 'sidebarbutton' element is defined as global after its
27 // creation, in the add_sidebar_button function
28 var bodywrapper = $('.bodywrapper');
29 var sidebar = $('.sphinxsidebar');
30 var sidebarwrapper = $('.sphinxsidebarwrapper');
31
32 // for some reason, the document has no sidebar; do not run into errors
33 if (!sidebar.length) return;
34
35 // original margin-left of the bodywrapper and width of the sidebar
36 // with the sidebar expanded
37 var bw_margin_expanded = bodywrapper.css('margin-left');
38 var ssb_width_expanded = sidebar.width();
39
40 // margin-left of the bodywrapper and width of the sidebar
41 // with the sidebar collapsed
42 var bw_margin_collapsed = '.8em';
43 var ssb_width_collapsed = '.8em';
44
45 // colors used by the current theme
46 var dark_color = $('.related').css('background-color');
47 var light_color = $('.document').css('background-color');
48
49 function sidebar_is_collapsed() {
50 return sidebarwrapper.is(':not(:visible)');
51 }
52
53 function toggle_sidebar() {
54 if (sidebar_is_collapsed())
55 expand_sidebar();
56 else
57 collapse_sidebar();
58 }
59
60 function collapse_sidebar() {
61 sidebarwrapper.hide();
62 sidebar.css('width', ssb_width_collapsed);
63 bodywrapper.css('margin-left', bw_margin_collapsed);
64 sidebarbutton.css({
65 'margin-left': '0',
66 'height': bodywrapper.height()
67 });
68 sidebarbutton.find('span').text('»');
69 sidebarbutton.attr('title', _('Expand sidebar'));
70 document.cookie = 'sidebar=collapsed';
71 }
72
73 function expand_sidebar() {
74 bodywrapper.css('margin-left', bw_margin_expanded);
75 sidebar.css('width', ssb_width_expanded);
76 sidebarwrapper.show();
77 sidebarbutton.css({
78 'margin-left': ssb_width_expanded-12,
79 'height': bodywrapper.height()
80 });
81 sidebarbutton.find('span').text('«');
82 sidebarbutton.attr('title', _('Collapse sidebar'));
83 document.cookie = 'sidebar=expanded';
84 }
85
86 function add_sidebar_button() {
87 sidebarwrapper.css({
88 'float': 'left',
89 'margin-right': '0',
90 'width': ssb_width_expanded - 28
91 });
92 // create the button
93 sidebar.append(
94 '<div id="sidebarbutton"><span>&laquo;</span></div>'
95 );
96 var sidebarbutton = $('#sidebarbutton');
97 light_color = sidebarbutton.css('background-color');
98 // find the height of the viewport to center the '<<' in the page
99 var viewport_height;
100 if (window.innerHeight)
101 viewport_height = window.innerHeight;
102 else
103 viewport_height = $(window).height();
104 sidebarbutton.find('span').css({
105 'display': 'block',
106 'margin-top': (viewport_height - sidebar.position().top - 20) / 2
107 });
108
109 sidebarbutton.click(toggle_sidebar);
110 sidebarbutton.attr('title', _('Collapse sidebar'));
111 sidebarbutton.css({
112 'color': '#FFFFFF',
113 'border-left': '1px solid ' + dark_color,
114 'font-size': '1.2em',
115 'cursor': 'pointer',
116 'height': bodywrapper.height(),
117 'padding-top': '1px',
118 'margin-left': ssb_width_expanded - 12
119 });
120
121 sidebarbutton.hover(
122 function () {
123 $(this).css('background-color', dark_color);
124 },
125 function () {
126 $(this).css('background-color', light_color);
127 }
128 );
129 }
130
131 function set_position_from_cookie() {
132 if (!document.cookie)
133 return;
134 var items = document.cookie.split(';');
135 for(var k=0; k<items.length; k++) {
136 var key_val = items[k].split('=');
137 var key = key_val[0];
138 if (key == 'sidebar') {
139 var value = key_val[1];
140 if ((value == 'collapsed') && (!sidebar_is_collapsed()))
141 collapse_sidebar();
142 else if ((value == 'expanded') && (sidebar_is_collapsed()))
143 expand_sidebar();
144 }
145 }
146 }
147
148 add_sidebar_button();
149 var sidebarbutton = $('#sidebarbutton');
150 set_position_from_cookie();
151});
0152
=== added file 'doc/source/percona-theme/static/software-download.png'
1Binary files doc/source/percona-theme/static/software-download.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/software-download.png 2012-02-16 17:09:19 +0000 differ153Binary files doc/source/percona-theme/static/software-download.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/software-download.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/software-latest.png'
2Binary files doc/source/percona-theme/static/software-latest.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/software-latest.png 2012-02-16 17:09:19 +0000 differ154Binary files doc/source/percona-theme/static/software-latest.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/software-latest.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/support-small.png'
3Binary files doc/source/percona-theme/static/support-small.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/support-small.png 2012-02-16 17:09:19 +0000 differ155Binary files doc/source/percona-theme/static/support-small.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/support-small.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/ui-dropdown-bg.png'
4Binary files doc/source/percona-theme/static/ui-dropdown-bg.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-dropdown-bg.png 2012-02-16 17:09:19 +0000 differ156Binary files doc/source/percona-theme/static/ui-dropdown-bg.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-dropdown-bg.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/ui-dropdown-footer.png'
5Binary files doc/source/percona-theme/static/ui-dropdown-footer.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-dropdown-footer.png 2012-02-16 17:09:19 +0000 differ157Binary files doc/source/percona-theme/static/ui-dropdown-footer.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-dropdown-footer.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/ui-dropdown-header-l.png'
6Binary files doc/source/percona-theme/static/ui-dropdown-header-l.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-dropdown-header-l.png 2012-02-16 17:09:19 +0000 differ158Binary files doc/source/percona-theme/static/ui-dropdown-header-l.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-dropdown-header-l.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/ui-dropdown-header-r.png'
7Binary files doc/source/percona-theme/static/ui-dropdown-header-r.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-dropdown-header-r.png 2012-02-16 17:09:19 +0000 differ159Binary files doc/source/percona-theme/static/ui-dropdown-header-r.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-dropdown-header-r.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/ui-dropdown-header-search.png'
8Binary files doc/source/percona-theme/static/ui-dropdown-header-search.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-dropdown-header-search.png 2012-02-16 17:09:19 +0000 differ160Binary files doc/source/percona-theme/static/ui-dropdown-header-search.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-dropdown-header-search.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/ui-footer-logo.png'
9Binary files doc/source/percona-theme/static/ui-footer-logo.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-footer-logo.png 2012-02-16 17:09:19 +0000 differ161Binary files doc/source/percona-theme/static/ui-footer-logo.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-footer-logo.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/ui-leftnavi-sel.png'
10Binary files doc/source/percona-theme/static/ui-leftnavi-sel.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-leftnavi-sel.png 2012-02-16 17:09:19 +0000 differ162Binary files doc/source/percona-theme/static/ui-leftnavi-sel.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-leftnavi-sel.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/ui-logo.png'
11Binary files doc/source/percona-theme/static/ui-logo.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-logo.png 2012-02-16 17:09:19 +0000 differ163Binary files doc/source/percona-theme/static/ui-logo.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-logo.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/ui-navi-hover-l.png'
12Binary files doc/source/percona-theme/static/ui-navi-hover-l.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-navi-hover-l.png 2012-02-16 17:09:19 +0000 differ164Binary files doc/source/percona-theme/static/ui-navi-hover-l.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-navi-hover-l.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/ui-navi-hover-r.png'
13Binary files doc/source/percona-theme/static/ui-navi-hover-r.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-navi-hover-r.png 2012-02-16 17:09:19 +0000 differ165Binary files doc/source/percona-theme/static/ui-navi-hover-r.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-navi-hover-r.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/ui-navi-l.png'
14Binary files doc/source/percona-theme/static/ui-navi-l.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-navi-l.png 2012-02-16 17:09:19 +0000 differ166Binary files doc/source/percona-theme/static/ui-navi-l.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-navi-l.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/ui-navi-r.png'
15Binary files doc/source/percona-theme/static/ui-navi-r.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-navi-r.png 2012-02-16 17:09:19 +0000 differ167Binary files doc/source/percona-theme/static/ui-navi-r.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-navi-r.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/ui-navi-sel-l.png'
16Binary files doc/source/percona-theme/static/ui-navi-sel-l.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-navi-sel-l.png 2012-02-16 17:09:19 +0000 differ168Binary files doc/source/percona-theme/static/ui-navi-sel-l.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-navi-sel-l.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/ui-navi-sel-r.png'
17Binary files doc/source/percona-theme/static/ui-navi-sel-r.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-navi-sel-r.png 2012-02-16 17:09:19 +0000 differ169Binary files doc/source/percona-theme/static/ui-navi-sel-r.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-navi-sel-r.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/ui-orange-content.png'
18Binary files doc/source/percona-theme/static/ui-orange-content.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-orange-content.png 2012-02-16 17:09:19 +0000 differ170Binary files doc/source/percona-theme/static/ui-orange-content.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-orange-content.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/ui-orange-front.png'
19Binary files doc/source/percona-theme/static/ui-orange-front.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-orange-front.png 2012-02-16 17:09:19 +0000 differ171Binary files doc/source/percona-theme/static/ui-orange-front.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-orange-front.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/ui-search.png'
20Binary files doc/source/percona-theme/static/ui-search.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-search.png 2012-02-16 17:09:19 +0000 differ172Binary files doc/source/percona-theme/static/ui-search.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-search.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/ui-tab-bg.png'
21Binary files doc/source/percona-theme/static/ui-tab-bg.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-tab-bg.png 2012-02-16 17:09:19 +0000 differ173Binary files doc/source/percona-theme/static/ui-tab-bg.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/ui-tab-bg.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/static/warning.png'
22Binary files doc/source/percona-theme/static/warning.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/warning.png 2012-02-16 17:09:19 +0000 differ174Binary files doc/source/percona-theme/static/warning.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/warning.png 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona-theme/theme.conf'
--- doc/source/percona-theme/theme.conf 1970-01-01 00:00:00 +0000
+++ doc/source/percona-theme/theme.conf 2012-02-16 17:09:19 +0000
@@ -0,0 +1,32 @@
1[theme]
2inherit = default
3stylesheet = default.css
4pygments_style = sphinx
5
6[options]
7rightsidebar = false
8stickysidebar = false
9collapsiblesidebar = false
10externalrefs = false
11
12footerbgcolor = #11303d
13footertextcolor = #ffffff
14sidebarbgcolor = #1c4e63
15sidebarbtncolor = #3c6e83
16sidebartextcolor = #ffffff
17sidebarlinkcolor = #98dbcc
18relbarbgcolor = #133f52
19relbartextcolor = #ffffff
20relbarlinkcolor = #ffffff
21bgcolor = #ffffff
22textcolor = #000000
23headbgcolor = #f2f2f2
24headtextcolor = #20435c
25headlinkcolor = #c60f0f
26linkcolor = #355f7c
27visitedlinkcolor = #355f7c
28codebgcolor = #eeffcc
29codetextcolor = #333333
30
31bodyfont = sans-serif
32headfont = 'Arial', 'Helvetica' sans-serif
033
=== added file 'doc/source/percona-xtrabackup-logo.jpg'
1Binary files doc/source/percona-xtrabackup-logo.jpg 1970-01-01 00:00:00 +0000 and doc/source/percona-xtrabackup-logo.jpg 2012-02-16 17:09:19 +0000 differ34Binary files doc/source/percona-xtrabackup-logo.jpg 1970-01-01 00:00:00 +0000 and doc/source/percona-xtrabackup-logo.jpg 2012-02-16 17:09:19 +0000 differ
=== added file 'doc/source/percona_favicon.ico'
2Binary files doc/source/percona_favicon.ico 1970-01-01 00:00:00 +0000 and doc/source/percona_favicon.ico 2012-02-16 17:09:19 +0000 differ35Binary files doc/source/percona_favicon.ico 1970-01-01 00:00:00 +0000 and doc/source/percona_favicon.ico 2012-02-16 17:09:19 +0000 differ
=== added directory 'doc/source/release-notes'
=== added file 'doc/source/release-notes.rst'
--- doc/source/release-notes.rst 1970-01-01 00:00:00 +0000
+++ doc/source/release-notes.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,35 @@
1======================================
2 |Percona| |XtraBackup| Release Notes
3======================================
4
5Percona |XtraBackup| 2.0 (Beta)
6===============================
7
8.. toctree::
9 :maxdepth: 1
10 :glob:
11
12 release-notes/2.0/*
13
14Percona |XtraBackup| 1.6 (Stable)
15=================================
16
17.. toctree::
18 :maxdepth: 1
19 :glob:
20
21 release-notes/1.6/*
22
23Older releases
24==============
25
26.. toctree::
27 :maxdepth: 1
28 :glob:
29
30 release-notes/1.5
31 release-notes/1.4
32 release-notes/1.3
33
34
35
036
=== added file 'doc/source/release-notes/1.3.rst'
--- doc/source/release-notes/1.3.rst 1970-01-01 00:00:00 +0000
+++ doc/source/release-notes/1.3.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,17 @@
1========================
2Version 1.3 (unreleased)
3========================
4
5Major changes:
6--------------
7
8* Port to |Percona Server| 5.1.47-11
9
10* Separate into two binaries - xtrabackup for |Percona Server| and xtrabackup_50 for |MySQL| 5.x.
11
12Fixed Bugs:
13-----------
14
15* Fixed `Bug #561106 <https://bugs.launchpad.net/percona-xtrabackup/+bug/561106>`_: incremental crash
16
17* Fixed duplicate ``close()`` problem at ``xtrabackup_copy_datafile()``.
018
=== added file 'doc/source/release-notes/1.4.rst'
--- doc/source/release-notes/1.4.rst 1970-01-01 00:00:00 +0000
+++ doc/source/release-notes/1.4.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,39 @@
1========================
2Percona |XtraBackup| 1.4
3========================
4
5Released on November 22, 2010
6
7Percona |XtraBackup| version 1.4 fixes problems related to incremental backups. If you do incremental backups, it's strongly recommended that you upgrade to this release.
8
9Functionality Added or Changed
10------------------------------
11
12* `Incremental backups <http://www.percona.com/docs/wiki/percona-xtrabackup:xtrabackup:incremental>`_ have changed and now allow the restoration of full backups containing certain rollback transactions that previously caused problems. Please see `Preparing the Backups <http://www.percona.com/docs/wiki/percona-xtrabackup:xtrabackup:incremental#Preparing_the_Backups>`_ and the :option:`--apply-log-only`. (From |innobackupex|, the :option:`--redo-only` option should be used.) (Yasufumi Kinoshita)
13
14 * The |XtraBackup| Test Suite was implemented and is now a standard part of each distribution. (Aleksandr Kuzminsky)
15
16* Other New Features
17
18 * The :option:`--prepare` now reports ``xtrabackup_binlog_pos_innodb`` if the information exists. (Yasufumi Kinoshita)
19
20 * When :option:`--prepare` is used to restore a partial backup, the data dictionary is now cleaned and contains only tables that exist in the backup. (Yasufumi Kinoshita)
21
22 * The :option:`--table` was extended to accept several regular expression arguments, separated by commas. (Yasufumi Kinoshita)
23
24* Other Changes
25
26 * Ported to the |Percona Server| 5.1.47 code base. (Yasufumi Kinoshita)
27
28 * |XtraBackup| now uses the memory allocators of the host operating system, rather than the built-in |InnoDB| allocators (see `Using Operating System Memory Allocators <http://dev.mysql.com/doc/innodb-plugin/1.1/en/innodb-performance-use_sys_malloc.html>`_). (Yasufumi Kinoshita)
29
30Bugs Fixed
31----------
32
33* `Bug #595770 <https://bugs.launchpad.net/bugs/595770>`_ - XtraBack binaries are now shipped containing debug symbols by default. (Aleksandr Kuzminsky)
34
35* `Bug #589639 <https://bugs.launchpad.net/bugs/589639>`_ - Fixed a problem of hanging when tablespaces were deleted during the recovery process. (Yasufumi Kinoshita)
36
37* `Bug #611960 <https://bugs.launchpad.net/bugs/611960>`_ - Fixed a segmentation fault in |xtrabackup|. (Yasufumi Kinoshita)
38
39* Miscellaneous important fixes related to incremental backups.
040
=== added file 'doc/source/release-notes/1.5.rst'
--- doc/source/release-notes/1.5.rst 1970-01-01 00:00:00 +0000
+++ doc/source/release-notes/1.5.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,35 @@
1=============================
2Percona |XtraBackup| 1.5-Beta
3=============================
4
5Released December 13, 2010 (`downloads <http://www.percona.com/downloads/XtraBackup/XtraBackup-1.5/>`_)
6
7This release adds additional functionality to Percona |XtraBackup| 1.4, the current general availability version of |XtraBackup|. This is a beta release.
8
9Functionality Added or Changes
10------------------------------
11
12* Support for |MySQL| 5.5 databases has been implemented. (Yasufumi Kinoshita)
13
14* |XtraBackup| can now be built from the |MySQL| 5.1.52, |MySQL| 5.5.7, or |Percona Server| 5.1.53-12 code bases (fixes bug `#683507 <https://bugs.launchpad.net/bugs/683507>`_). (Alexey Kopytov)
15
16* The program is now distributed as three separate binaries:
17
18 * |xtrabackup| - for use with |Percona Server| with the built-in |InnoDB| plugin
19
20 * :command:`xtrabackup_51` - for use with MySQL 5.0 & 5.1 with built-in |InnoDB|
21
22 * :command:`xtrabackup_55` - for use with |MySQL| 5.5 (this binary is not provided for the FreeBSD platform)
23
24* Backing up only specific tables can now be done by specifying them in a file, using the :option:`--tables-file`. (Yasufumi Kinoshita & Daniel Nichter)
25
26* Additional checks were added to monitor the rate the log file is being overwritten, to determine if |XtraBackup| is keeping up. If the log file is being overwritten faster than |XtraBackup| can keep up, a warning is given that the backup may be inconsistent. (Yasufumi Kinoyasu)
27
28* The |XtraBackup| binaries are now compiled with the ``-O3`` :command:`gcc` option, which may improve backup speed in stream mode in some cases.
29
30* It is now possible to copy multiple data files concurrently in parallel threads when creating a backup, using the :option:`--parallel` option. See `The xtrabackup Option Reference <http://www.percona.com/docs/wiki/percona-xtrabackup:xtrabackup:option-and-variable-reference>`_ and `Parallel Backups <http://www.percona.com/docs/wiki/percona-xtrabackup:innobackupex:how_to_recipes#Parallel_Backups>`_. (Alexey Kopytov)
31
32Bugs Fixed
33----------
34
35* `Bug #683507 <https://bugs.launchpad.net/bugs/683507>`_ - |xtrabackup| has been updated to build from the |MySQL| 5.1.52, |MySQL| 5.5.7, or |Percona Server| 5.1.53-12 code bases. (Alexey Kopytov)
036
=== added directory 'doc/source/release-notes/1.6'
=== added file 'doc/source/release-notes/1.6/1.6.0.rst'
--- doc/source/release-notes/1.6/1.6.0.rst 1970-01-01 00:00:00 +0000
+++ doc/source/release-notes/1.6/1.6.0.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,64 @@
1==========================
2|Percona| |XtraBackup| 1.6
3==========================
4
5Released on April 12, 2011 (Downloads are available `here <http://www.percona.com/downloads/XtraBackup/XtraBackup-1.6/>`_ and from the `Percona Software Repositories <http://www.percona.com/docs/wiki/repositories:start>`_.)
6
7Options Added
8-------------
9
10* Added option :option:`--extra-lsndir` to |innobackupex|. When specified for the backup phase, the option is passed to |xtrabackup|, and :term:`LSN` information is stored with the file in the specified directory. This is needed so that :term:`LSN` information is preserved during stream backup. (Vadim Tkachenko)
11
12* Added option :option:`--incremental-lsn` to |innobackupex|. If specified, this option is passed directly to the |xtrabackup| binary and :program:`--incremental-basedir` is ignored. (Vadim Tkachenko)
13
14* Added option :option:`--incremental-dir` to |innobackupex|. This option is passed directly to the |xtrabackup| binary. (Vadim Tkachenko)
15
16* Added option :option:`--safe-slave-backup` to |innobackupex|. (Daniel Nichter)
17
18* Added option :option:`--safe-slave-backup-timeout` to |innobackupex|. (Daniel Nichter)
19
20Other Changes
21-------------
22
23* Eliminated some compiler warnings. (Stewart Smith)
24
25* Ported |XtraBackup| to |MySQL| 5.1.55, |MySQL| 5.5.9, |Percona Server| 5.1.55-12.6, and |Percona Server| 5.5.9-20.1 code bases. The :command:`xtrabackup_55` binary is now based on |Percona Server| 5.5, rather than |MySQL| 5.5. Support for building against |InnoDB| plugin in |MySQL| 5.1 has been removed. (Alexey Kopytov)
26
27* Updates were made to the built-in |innobackupex| usage docs. (Baron Schwartz, Fred Linhoss)
28
29* Added a manual page for |XtraBackup|. (Aleksandr Kuzminsky)
30
31* Disabled auto-creating :file:`ib_logfile*` when |innobackupex| is called with :option:`--redo-only` or with :option:`--incremental-dir`. If necessary :file:`ib_logfile*` can be created later with :command:`xtrabackup --prepare` call. (Vadim Tkachenko)
32
33* Fixed |xtrabackup| exit code to improve portability: ``EXIT_SUCCESS`` on success and ``EXIT_FAILURE`` on a failure. (Aleksandr Kuzminsky)
34
35* For portability, the |XtraBackup| build script now tries to link with ``libaio`` only on Linux. (Aleksandr Kuzminsky)
36
37Bugs Fixed
38----------
39
40* `Bug #368945 <https://bugs.launchpad.net/bugs/368945>`_ - When option :option:`--prepare` was specified, an error message was requesting that ``datadir`` be set, even though it's not a required option. (Vadim Tkachenko)
41
42* `Bug #420181 <https://bugs.launchpad.net/bugs/420181>`_ - The |innobackupex| script now backs up :term:`.CSV` tables. (Valentine Gostev)
43
44* `Bug #597384 <https://bugs.launchpad.net/bugs/597384>`_ - The ``innobackup`` :option:`--include` option now handles non-|InnoDB| tables. (Vadim Tkachenko)
45
46* `Bug #606981 <https://bugs.launchpad.net/bugs/606981>`_ - Streaming |InnoDB| files with |tar4ibd| could lead to filesystem hangs when |InnoDB| was configured to access data files with the ``O_DIRECT`` flag. The reason was that |tar4ibd| did not have support for ``O_DIRECT`` and simultaneous ``O_DIRECT`` + non-``O_DIRECT`` access to a file on Linux is disallowed. Fixed |innobackupex| and |tar4ibd| to use ``O_DIRECT`` on input |InnoDB| files if the value of ``innodb_flush_method`` is ``O_DIRECT`` in the |InnoDB| configuration. (Alexey Kopytov)
47
48* `Bug #646647 <https://bugs.launchpad.net/bugs/646647>`_ - Removed the bogus warning about invalid data in the Perl version string in |innobackupex|. (Baron Schwartz)
49
50* `Bug #672384 <https://bugs.launchpad.net/bugs/672384>`_ - When no log files can be found in the backup directory while executing :option:`xtrabackup --stats`, a descriptive error message is printed instead of crashing. (Alexey Kopytov)
51
52* `Bug #688211 <https://bugs.launchpad.net/bugs/688211>`_ - Using the :option:`--password` option with |innobackupex| to specify MySQL passwords containing special shell characters (such as "&") did not work, even when the option value was properly quoted.
53
54* `Bug #688417 <https://bugs.launchpad.net/bugs/688417>`_ - It's now possible to do incremental backups for compressed |InnoDB| tables.
55
56* `Bug #701767 <https://bugs.launchpad.net/bugs/701767>`_ - The script ``innobackupex-1.5.1`` was renamed to |innobackupex|. Symbolic link ``innobackupex-1.5.1`` was created for backupward compatibility. (Vadim Tkachenko)
57
58* `Bug #703070 <https://bugs.launchpad.net/bugs/703070>`_ - ``xtrabackup_55`` crashed with an assertion failure on non-Linux platforms. (Alexey Kopytov)
59
60* `Bug #703077 <https://bugs.launchpad.net/bugs/703077>`_ - Building |xtrabackup| could fail on some platforms due to an incorrect argument to ``CMake``. Fixed by changing the ``-DWITH_ZLIB`` argument to lowercase, because that's what the ``CMake`` scripts actually expect. (Alexey Kopytov)
61
62* `Bug #713799 <https://bugs.launchpad.net/bugs/713799>`_ - Dropping a table during a backup process could result in assertion failure in |xtrabackup|. Now it continues with a warning message about the dropped table. (Alexey Kopytov)
63
64* `Bug #717784 <https://bugs.launchpad.net/bugs/717784>`_ - Performing parallel backups with the :option:`--parallel` option could cause |xtrabackup| to fail with the "cannot mkdir" error. (Alexey Kopytov)
065
=== added file 'doc/source/release-notes/1.6/1.6.2.rst'
--- doc/source/release-notes/1.6/1.6.2.rst 1970-01-01 00:00:00 +0000
+++ doc/source/release-notes/1.6/1.6.2.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,40 @@
1============================
2|Percona| |XtraBackup| 1.6.2
3============================
4
5Percona is glad to announce the release of Percona XtraBackup 1.6.2 on 25 July, 2011 (Downloads are available `here <http://www.percona.com/downloads/XtraBackup/XtraBackup-1.6.2/>`_ and from the `Percona Software Repositories <http://www.percona.com/docs/wiki/repositories:start>`_).
6
7This release is purely composed of bug fixes and is the current stable release of |Percona| |Xtrabackup|.
8
9All of |Percona|'s software is open-source and free, all the details of the release and its development process can be found in the `1.6.2 milestone at Launchpad <https://launchpad.net/percona-xtrabackup/+milestone/1.6.2>`_.
10
11New Options
12-----------
13
14:option:`--version`
15~~~~~~~~~~~~~~~~~~~
16
17 The :option:`--version` option has been added to the |xtrabackup| binary for printing its version. Previously, the version was displayed only while executing the binary without arguments or performing a backup. Bug Fixed: `#610614 <https://bugs.launchpad.net/bugs/610614>`_ (Alexey Kopytov).
18
19Changes
20-------
21
22 * As exporting tables should only be used with :term:`innodb_file_per_table` set in the server, the variable is checked by |xtrabackup| when using the :option:`--export <innobackupex --export>` option. It will fail before applying the archived log without producing a potentially unusable backup. Bug Fixed: `#758888 <https://bugs.launchpad.net/bugs/758888>`_ (Alexey Kopytov).
23
24Bugs Fixed
25----------
26
27 * When creating an :term:`InnoDB` with its own tablespace after taking a full backup, if the log files have been flushed, taking an incremental backup based on that full one would not contain the added table. This has been corrected by explicitly creating the tablespace before applying the delta files in such cases. Bug Fixed: `#766607 <https://bugs.launchpad.net/bugs/766607>`_ (Alexey Kopytov).
28
29 * In some cases, |innobackupex| ignored the specified |xtrabackup| binary with the :option:`--ibbackup` option. Bug Fixed: `#729497 <https://bugs.launchpad.net/bugs/729497>`_ (Stewart Smith).
30
31 * Minor file descriptors leaks in error cases were fixed. Bug Fixed: `#803718 <https://bugs.launchpad.net/bugs/803718>`_ (Stewart Smith).
32
33Other Changes
34-------------
35
36 * Improvements and fixes on the XtraBackup Test Suite: `#744303 <https://bugs.launchpad.net/bugs/744303>`_, `#787966 < <https://bugs.launchpad.net/bugs/787966>`_ (Alexey Kopytov)
37
38 * Improvements and fixes on platform-specific distribution: `#785556 <https://bugs.launchpad.net/bugs/785556>`_ (Ignacio Nin)
39
40 * Improvements and fixes on the XtraBackup Documentation: `#745185 <https://bugs.launchpad.net/bugs/745185>`_, `#721339 <https://bugs.launchpad.net/bugs/721339>`_ (Rodrigo Gadea)
041
=== added file 'doc/source/release-notes/1.6/1.6.3.rst'
--- doc/source/release-notes/1.6/1.6.3.rst 1970-01-01 00:00:00 +0000
+++ doc/source/release-notes/1.6/1.6.3.rst 2012-02-16 17:09:19 +0000
@@ -0,0 +1,40 @@
1============================
2|Percona| |XtraBackup| 1.6.3
3============================
4
5Percona is glad to announce the release of Percona XtraBackup 1.6.3 on 22 September, 2011 (Downloads are available `here <http://www.percona.com/downloads/XtraBackup/XtraBackup-1.6.3/>`_ and from the :doc:`Percona Software Repositories </installation>`).
6
7This release is purely composed of bug fixes and is the current stable release of |Percona| |Xtrabackup|.
8
9If the :term:`innodb_file_per_table` server option is been used and ``DDL`` operations, ``TRUNCATE TABLE``, ``DROP/CREATE the_same_table`` or ``ALTER`` statements on |InnoDB| tables are executed while taking a backup, an upgrade to |XtraBackup| 1.6.3 is **strongly recommended**. Under this scenario, if the server version is prior to 5.5.11 in 5.5 series or prior to 5.1.49 in 5.1 series, a server upgrade is also recommended.
10
11All of |Percona| 's software is open-source and free, all the details of the release and its development process can be found in the `1.6.3 milestone at Launchpad <https://launchpad.net/percona-xtrabackup/+milestone/1.6.3>`_.
12
13
14Bugs Fixed
15----------
16
17 * Streaming backups did not work for compressed |InnoDB| tables due to missing support for compressed pages in |tar4ibd|. Bug Fixed: :bug:`665210` (*Alexey Kopytov*).
18
19 * |XtraBackup| failed when ``innodb_flush_method`` in the server configuration file was set to ``ALL_O_DIRECT``. Bug Fixed: :bug:`759225` (*Alexey Kopytov*).
20
21 * Due to a regression introduced in |XtraBackup| 1.6.2, :command:`innobackupex --copy-back` did not work if the :command:`xtrabackup` binary was not specified explicitly with the :option:`--ibbackup` option. Bug Fixed: :bug:`817132` (*Alexey Kopytov*).
22
23 * The :option:`--slave-info` option now works correctly with :option:`--safe-slave-backup` when either :option:`--no-lock` or :option:`--incremental` is also specified. Bug Fixed: :bug:`834657` (*Alexey Kopytov*).
24
25 * :program:`tar4ibd` could fail with an error when processing doublewrite pages. Bug Fixed: :bug:`810269` (*Alexey Kopytov*).
26
27 * Unsupported command line options could cause a :program:`tar4ibd` crash. Such options have been removed. Bug Fixed: :bug:`677279` (*Alexey Kopytov*).
28
29 * Executing ``DDL`` operations, ``TRUNCATE TABLE``, ``DROP/CREATE the_same_table`` or ``ALTER`` statements on |InnoDB| tables while taking a backup could lead to a |xtrabackup| failure due to a tablespace ``ID`` mismatch when using per-table tablespaces. Note that this fix may not work correctly with |MySQL| 5.5 or |Percona Server| 5.5 prior to version 5.5.11. 5.1 releases from 5.1.49 or higher have been confirmed not to be affected.
30 If the :term:`innodb_file_per_table` option is been used, an upgrade to |XtraBackup| 1.6.3 is **strongly recommended**. Under this scenario, if the server version is prior to 5.5.11 in 5.5 series or prior to 5.1.49 in 5.1 series, a server upgrade is also recommended. Bug Fixed: :bug:`722638` (*Alexey Kopytov*).
31
32
33Other Changes
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches