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
1=== added file 'doc/Makefile'
2--- doc/Makefile 1970-01-01 00:00:00 +0000
3+++ doc/Makefile 2012-02-16 17:09:19 +0000
4@@ -0,0 +1,130 @@
5+# Makefile for Sphinx documentation
6+#
7+
8+# You can set these variables from the command line.
9+SPHINXOPTS =
10+SPHINXBUILD = sphinx-build
11+PAPER =
12+BUILDDIR = build
13+
14+# Internal variables.
15+PAPEROPT_a4 = -D latex_paper_size=a4
16+PAPEROPT_letter = -D latex_paper_size=letter
17+ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
18+
19+.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
20+
21+help:
22+ @echo "Please use \`make <target>' where <target> is one of"
23+ @echo " html to make standalone HTML files"
24+ @echo " dirhtml to make HTML files named index.html in directories"
25+ @echo " singlehtml to make a single large HTML file"
26+ @echo " pickle to make pickle files"
27+ @echo " json to make JSON files"
28+ @echo " htmlhelp to make HTML files and a HTML help project"
29+ @echo " qthelp to make HTML files and a qthelp project"
30+ @echo " devhelp to make HTML files and a Devhelp project"
31+ @echo " epub to make an epub"
32+ @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
33+ @echo " latexpdf to make LaTeX files and run them through pdflatex"
34+ @echo " text to make text files"
35+ @echo " man to make manual pages"
36+ @echo " changes to make an overview of all changed/added/deprecated items"
37+ @echo " linkcheck to check all external links for integrity"
38+ @echo " doctest to run all doctests embedded in the documentation (if enabled)"
39+
40+clean:
41+ -rm -rf $(BUILDDIR)/*
42+
43+html:
44+ $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
45+ @echo
46+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
47+
48+dirhtml:
49+ $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
50+ @echo
51+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
52+
53+singlehtml:
54+ $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
55+ @echo
56+ @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
57+
58+pickle:
59+ $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
60+ @echo
61+ @echo "Build finished; now you can process the pickle files."
62+
63+json:
64+ $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
65+ @echo
66+ @echo "Build finished; now you can process the JSON files."
67+
68+htmlhelp:
69+ $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
70+ @echo
71+ @echo "Build finished; now you can run HTML Help Workshop with the" \
72+ ".hhp project file in $(BUILDDIR)/htmlhelp."
73+
74+qthelp:
75+ $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
76+ @echo
77+ @echo "Build finished; now you can run "qcollectiongenerator" with the" \
78+ ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
79+ @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/PerconaXtraBackup.qhcp"
80+ @echo "To view the help file:"
81+ @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/PerconaXtraBackup.qhc"
82+
83+devhelp:
84+ $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
85+ @echo
86+ @echo "Build finished."
87+ @echo "To view the help file:"
88+ @echo "# mkdir -p $$HOME/.local/share/devhelp/PerconaXtraBackup"
89+ @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/PerconaXtraBackup"
90+ @echo "# devhelp"
91+
92+epub:
93+ $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
94+ @echo
95+ @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
96+
97+latex:
98+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
99+ @echo
100+ @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
101+ @echo "Run \`make' in that directory to run these through (pdf)latex" \
102+ "(use \`make latexpdf' here to do that automatically)."
103+
104+latexpdf:
105+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
106+ @echo "Running LaTeX files through pdflatex..."
107+ make -C $(BUILDDIR)/latex all-pdf
108+ @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
109+
110+text:
111+ $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
112+ @echo
113+ @echo "Build finished. The text files are in $(BUILDDIR)/text."
114+
115+man:
116+ $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
117+ @echo
118+ @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
119+
120+changes:
121+ $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
122+ @echo
123+ @echo "The overview file is in $(BUILDDIR)/changes."
124+
125+linkcheck:
126+ $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
127+ @echo
128+ @echo "Link check complete; look for any errors in the above output " \
129+ "or in $(BUILDDIR)/linkcheck/output.txt."
130+
131+doctest:
132+ $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
133+ @echo "Testing of doctests in the sources finished, look at the " \
134+ "results in $(BUILDDIR)/doctest/output.txt."
135
136=== added file 'doc/make.bat'
137--- doc/make.bat 1970-01-01 00:00:00 +0000
138+++ doc/make.bat 2012-02-16 17:09:19 +0000
139@@ -0,0 +1,170 @@
140+@ECHO OFF
141+
142+REM Command file for Sphinx documentation
143+
144+if "%SPHINXBUILD%" == "" (
145+ set SPHINXBUILD=sphinx-build
146+)
147+set BUILDDIR=build
148+set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source
149+if NOT "%PAPER%" == "" (
150+ set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
151+)
152+
153+if "%1" == "" goto help
154+
155+if "%1" == "help" (
156+ :help
157+ echo.Please use `make ^<target^>` where ^<target^> is one of
158+ echo. html to make standalone HTML files
159+ echo. dirhtml to make HTML files named index.html in directories
160+ echo. singlehtml to make a single large HTML file
161+ echo. pickle to make pickle files
162+ echo. json to make JSON files
163+ echo. htmlhelp to make HTML files and a HTML help project
164+ echo. qthelp to make HTML files and a qthelp project
165+ echo. devhelp to make HTML files and a Devhelp project
166+ echo. epub to make an epub
167+ echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
168+ echo. text to make text files
169+ echo. man to make manual pages
170+ echo. changes to make an overview over all changed/added/deprecated items
171+ echo. linkcheck to check all external links for integrity
172+ echo. doctest to run all doctests embedded in the documentation if enabled
173+ goto end
174+)
175+
176+if "%1" == "clean" (
177+ for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
178+ del /q /s %BUILDDIR%\*
179+ goto end
180+)
181+
182+if "%1" == "html" (
183+ %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
184+ if errorlevel 1 exit /b 1
185+ echo.
186+ echo.Build finished. The HTML pages are in %BUILDDIR%/html.
187+ goto end
188+)
189+
190+if "%1" == "dirhtml" (
191+ %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
192+ if errorlevel 1 exit /b 1
193+ echo.
194+ echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
195+ goto end
196+)
197+
198+if "%1" == "singlehtml" (
199+ %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
200+ if errorlevel 1 exit /b 1
201+ echo.
202+ echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
203+ goto end
204+)
205+
206+if "%1" == "pickle" (
207+ %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
208+ if errorlevel 1 exit /b 1
209+ echo.
210+ echo.Build finished; now you can process the pickle files.
211+ goto end
212+)
213+
214+if "%1" == "json" (
215+ %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
216+ if errorlevel 1 exit /b 1
217+ echo.
218+ echo.Build finished; now you can process the JSON files.
219+ goto end
220+)
221+
222+if "%1" == "htmlhelp" (
223+ %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
224+ if errorlevel 1 exit /b 1
225+ echo.
226+ echo.Build finished; now you can run HTML Help Workshop with the ^
227+.hhp project file in %BUILDDIR%/htmlhelp.
228+ goto end
229+)
230+
231+if "%1" == "qthelp" (
232+ %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
233+ if errorlevel 1 exit /b 1
234+ echo.
235+ echo.Build finished; now you can run "qcollectiongenerator" with the ^
236+.qhcp project file in %BUILDDIR%/qthelp, like this:
237+ echo.^> qcollectiongenerator %BUILDDIR%\qthelp\PerconaXtraBackup.qhcp
238+ echo.To view the help file:
239+ echo.^> assistant -collectionFile %BUILDDIR%\qthelp\PerconaXtraBackup.ghc
240+ goto end
241+)
242+
243+if "%1" == "devhelp" (
244+ %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
245+ if errorlevel 1 exit /b 1
246+ echo.
247+ echo.Build finished.
248+ goto end
249+)
250+
251+if "%1" == "epub" (
252+ %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
253+ if errorlevel 1 exit /b 1
254+ echo.
255+ echo.Build finished. The epub file is in %BUILDDIR%/epub.
256+ goto end
257+)
258+
259+if "%1" == "latex" (
260+ %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
261+ if errorlevel 1 exit /b 1
262+ echo.
263+ echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
264+ goto end
265+)
266+
267+if "%1" == "text" (
268+ %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
269+ if errorlevel 1 exit /b 1
270+ echo.
271+ echo.Build finished. The text files are in %BUILDDIR%/text.
272+ goto end
273+)
274+
275+if "%1" == "man" (
276+ %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
277+ if errorlevel 1 exit /b 1
278+ echo.
279+ echo.Build finished. The manual pages are in %BUILDDIR%/man.
280+ goto end
281+)
282+
283+if "%1" == "changes" (
284+ %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
285+ if errorlevel 1 exit /b 1
286+ echo.
287+ echo.The overview file is in %BUILDDIR%/changes.
288+ goto end
289+)
290+
291+if "%1" == "linkcheck" (
292+ %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
293+ if errorlevel 1 exit /b 1
294+ echo.
295+ echo.Link check complete; look for any errors in the above output ^
296+or in %BUILDDIR%/linkcheck/output.txt.
297+ goto end
298+)
299+
300+if "%1" == "doctest" (
301+ %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
302+ if errorlevel 1 exit /b 1
303+ echo.
304+ echo.Testing of doctests in the sources finished, look at the ^
305+results in %BUILDDIR%/doctest/output.txt.
306+ goto end
307+)
308+
309+:end
310
311=== added directory 'doc/source'
312=== added directory 'doc/source/_static'
313=== added file 'doc/source/_static/percona-xtrabackup-logo.jpg'
314Binary 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
315=== added file 'doc/source/_static/percona_favicon.ico'
316Binary 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
317=== added directory 'doc/source/_templates'
318=== added file 'doc/source/conf.py'
319--- doc/source/conf.py 1970-01-01 00:00:00 +0000
320+++ doc/source/conf.py 2012-02-16 17:09:19 +0000
321@@ -0,0 +1,258 @@
322+# -*- coding: utf-8 -*-
323+#
324+# Percona XtraBackup documentation build configuration file, created by
325+# sphinx-quickstart on Mon Jun 27 22:27:15 2011.
326+#
327+# This file is execfile()d with the current directory set to its containing dir.
328+#
329+# Note that not all possible configuration values are present in this
330+# autogenerated file.
331+#
332+# All configuration values have a default; values that are commented out
333+# serve to show the default.
334+
335+import sys, os
336+
337+# If extensions (or modules to document with autodoc) are in another directory,
338+# add these directories to sys.path here. If the directory is relative to the
339+# documentation root, use os.path.abspath to make it absolute, like shown here.
340+#sys.path.insert(0, os.path.abspath('.'))
341+
342+# -- General configuration -----------------------------------------------------
343+
344+# If your documentation needs a minimal Sphinx version, state it here.
345+#needs_sphinx = '1.0'
346+
347+# Add any Sphinx extension module names here, as strings. They can be extensions
348+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
349+
350+extensions = ['sphinx.ext.intersphinx', 'sphinx.ext.todo',
351+ 'sphinx.ext.coverage', 'sphinx.ext.ifconfig',
352+ 'sphinx.ext.extlinks']
353+
354+# Add any paths that contain templates here, relative to this directory.
355+templates_path = ['_templates']
356+
357+# The suffix of source filenames.
358+source_suffix = '.rst'
359+
360+# The encoding of source files.
361+#source_encoding = 'utf-8-sig'
362+
363+# The master toctree document.
364+master_doc = 'index'
365+
366+# General information about the project.
367+project = u'Percona XtraBackup'
368+copyright = u'2010-2012, Percona Inc'
369+
370+# The version info for the project you're documenting, acts as replacement for
371+# |version| and |release|, also used in various other places throughout the
372+# built documents.
373+#
374+# The short X.Y version.
375+version = '1.6'
376+# The full version, including alpha/beta/rc tags.
377+release = '5'
378+
379+# The language for content autogenerated by Sphinx. Refer to documentation
380+# for a list of supported languages.
381+#language = None
382+
383+# There are two options for replacing |today|: either, you set today to some
384+# non-false value, then it is used:
385+#today = ''
386+# Else, today_fmt is used as the format for a strftime call.
387+#today_fmt = '%B %d, %Y'
388+
389+# List of patterns, relative to source directory, that match files and
390+# directories to ignore when looking for source files.
391+exclude_patterns = []
392+
393+# The reST default role (used for this markup: `text`) to use for all documents.
394+#default_role = None
395+
396+# If true, '()' will be appended to :func: etc. cross-reference text.
397+#add_function_parentheses = True
398+
399+# If true, the current module name will be prepended to all description
400+# unit titles (such as .. function::).
401+#add_module_names = True
402+
403+# If true, sectionauthor and moduleauthor directives will be shown in the
404+# output. They are ignored by default.
405+#show_authors = False
406+
407+# The name of the Pygments (syntax highlighting) style to use.
408+pygments_style = 'sphinx'
409+
410+
411+rst_prolog = '''
412+.. |check| replace:: ``|[[---CHECK---]]|``
413+
414+.. |xtrabackup| replace:: :program:`xtrabackup`
415+
416+.. |innobackupex| replace:: :program:`innobackupex`
417+
418+.. |XtraDB| replace:: :term:`XtraDB`
419+
420+.. |InnoDB| replace:: :term:`InnoDB`
421+
422+.. |MyISAM| replace:: :term:`MyISAM`
423+
424+.. |Percona Toolkit| replace:: *Percona Toolkit*
425+
426+.. |LSN| replace:: :term:`LSN`
427+
428+.. |XtraBackup| replace:: *XtraBackup*
429+
430+.. |Percona Server| replace:: *Percona Server*
431+
432+.. |Percona| replace:: *Percona*
433+
434+.. |MySQL| replace:: *MySQL*
435+
436+.. |Drizzle| replace:: *Drizzle*
437+
438+.. |MariaDB| replace:: *MariaDB*
439+
440+.. |tar4ibd| replace:: :program:`tar4ibd`
441+
442+.. |tar| replace:: :program:`tar`
443+
444+'''
445+
446+extlinks = {'bug': ('https://bugs.launchpad.net/percona-xtrabackup/+bug/%s',
447+ '#')}
448+
449+# A list of ignored prefixes for module index sorting.
450+#modindex_common_prefix = []
451+
452+
453+# -- Options for HTML output ---------------------------------------------------
454+
455+# The theme to use for HTML and HTML Help pages. See the documentation for
456+# a list of builtin themes.
457+html_theme = 'percona-theme'
458+
459+# Theme options are theme-specific and customize the look and feel of a theme
460+# further. For a list of options available for each theme, see the
461+# documentation.
462+#html_theme_options = {}
463+
464+# Add any paths that contain custom themes here, relative to this directory.
465+html_theme_path = ['.', './percona-theme']
466+
467+# The name for this set of Sphinx documents. If None, it defaults to
468+# "<project> v<release> documentation".
469+html_title = 'Percona XtraBackup Documentation'
470+
471+# A shorter title for the navigation bar. Default is the same as html_title.
472+html_short_title = 'XtraBackup Docs'
473+
474+# The name of an image file (relative to this directory) to place at the top
475+# of the sidebar.
476+html_logo = 'percona-xtrabackup-logo.jpg'
477+
478+# The name of an image file (within the static path) to use as favicon of the
479+# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
480+# pixels large.
481+html_favicon = 'percona_favicon.ico'
482+
483+# Add any paths that contain custom static files (such as style sheets) here,
484+# relative to this directory. They are copied after the builtin static files,
485+# so a file named "default.css" will overwrite the builtin "default.css".
486+html_static_path = ['_static']
487+
488+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
489+# using the given strftime format.
490+#html_last_updated_fmt = '%b %d, %Y'
491+
492+# If true, SmartyPants will be used to convert quotes and dashes to
493+# typographically correct entities.
494+#html_use_smartypants = True
495+
496+# Custom sidebar templates, maps document names to template names.
497+#html_sidebars = {}
498+
499+# Additional templates that should be rendered to pages, maps page names to
500+# template names.
501+#html_additional_pages = {}
502+
503+# If false, no module index is generated.
504+#html_domain_indices = True
505+
506+# If false, no index is generated.
507+#html_use_index = True
508+
509+# If true, the index is split into individual pages for each letter.
510+#html_split_index = False
511+
512+# If true, links to the reST sources are added to the pages.
513+#html_show_sourcelink = True
514+
515+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
516+#html_show_sphinx = True
517+
518+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
519+#html_show_copyright = True
520+
521+# If true, an OpenSearch description file will be output, and all pages will
522+# contain a <link> tag referring to it. The value of this option must be the
523+# base URL from which the finished HTML is served.
524+#html_use_opensearch = ''
525+
526+# This is the file name suffix for HTML files (e.g. ".xhtml").
527+#html_file_suffix = None
528+
529+# Output file base name for HTML help builder.
530+htmlhelp_basename = 'PerconaXtraBackupDoc'
531+
532+
533+# -- Options for LaTeX output --------------------------------------------------
534+
535+# The paper size ('letter' or 'a4').
536+#latex_paper_size = 'letter'
537+
538+# The font size ('10pt', '11pt' or '12pt').
539+#latex_font_size = '10pt'
540+
541+# Grouping the document tree into LaTeX files. List of tuples
542+# (source start file, target name, title, author, documentclass [howto/manual]).
543+latex_documents = [
544+ ('index', 'PerconaXtraBackup.tex', u'Percona XtraBackup Documentation',
545+ u'Percona Inc', 'manual'),
546+]
547+
548+# The name of an image file (relative to this directory) to place at the top of
549+# the title page.
550+#latex_logo = None
551+
552+# For "manual" documents, if this is true, then toplevel headings are parts,
553+# not chapters.
554+#latex_use_parts = False
555+
556+# If true, show page references after internal links.
557+#latex_show_pagerefs = False
558+
559+# If true, show URL addresses after external links.
560+#latex_show_urls = False
561+
562+# Additional stuff for the LaTeX preamble.
563+#latex_preamble = ''
564+
565+# Documents to append as an appendix to all manuals.
566+#latex_appendices = []
567+
568+# If false, no module index is generated.
569+#latex_domain_indices = True
570+
571+
572+# -- Options for manual page output --------------------------------------------
573+
574+# One entry per manual page. List of tuples
575+# (source start file, name, description, authors, manual section).
576+man_pages = [
577+ ('index', 'perconaxtrabackup', u'Percona XtraBackup Documentation',
578+ [u'Percona Inc'], 1)
579+]
580
581=== added file 'doc/source/faq.rst'
582--- doc/source/faq.rst 1970-01-01 00:00:00 +0000
583+++ doc/source/faq.rst 2012-02-16 17:09:19 +0000
584@@ -0,0 +1,61 @@
585+============================
586+ Frequently Asked Questions
587+============================
588+
589+Do I need an InnoDB Hot Backup license to use XtraBackup?
590+=========================================================
591+
592+No. 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.
593+
594+Why is innobackupex distributed as innobackupex-1.5.1?
595+======================================================
596+
597+That'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|.
598+
599+What's the difference between :program:`innobackupex` and :program:`innobackup`?
600+================================================================================
601+
602+Because :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.
603+
604+Despite the options for specific features of |innobackupex|, the main differences are:
605+
606+ * printing to ``STDERR`` instead of ``STDOUT`` (which enables the :option:`--stream` option),
607+
608+ * the configuration file - :term:`my.cnf` - is detected automatically (or setted with :option:`innobackupex --defaults-file`) instead of the mandotory first argument,
609+
610+ * and defaults to |xtrabackup| as binary to use in the :option:`--ibbackup`.
611+
612+.. * Ssleep and compress?
613+
614+See :doc:`innobackupex/innobackupex_option_reference` for more details.
615+
616+
617+Why the :program:`xtrabackup` binary doesn't makes a "full backup" of the database? Should I use :program:`innobackupex` always?
618+================================================================================================================================
619+
620+: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.
621+
622+: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.
623+
624+However, for some specific tasks, you must use :program:`xtrabackup` directly. See the :ref:`user-manual` for details on each one.
625+
626+Are you aware of any web-based backup management tools (commercial or not) built around |Xtrabackup|?
627+=====================================================================================================
628+
629+`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
630+non-blocking backups of MySQL using XtraBackup. ZRM with XtraBackup
631+provides resource utilization management by providing throttling based
632+on the number of IO operations per second. XtraBackup based backups also
633+allow for table level recovery even though the backup was done at the
634+database level (needs the recovery database server to be Percona Server
635+with XtraDB)."*
636+
637+|xtrabackup| binary fails with a floating point exception
638+=========================================================
639+
640+In 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.
641+
642+How innobackupex handles the ibdata/ib_log files on restore if they aren't in mysql datadir?
643+============================================================================================
644+
645+In 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.
646
647=== added file 'doc/source/glossary.rst'
648--- doc/source/glossary.rst 1970-01-01 00:00:00 +0000
649+++ doc/source/glossary.rst 2012-02-16 17:09:19 +0000
650@@ -0,0 +1,113 @@
651+==========
652+ Glossary
653+==========
654+
655+.. glossary::
656+
657+ LSN
658+ 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.
659+
660+ innodb_file_per_table
661+ 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,
662+
663+ .. code-block:: guess
664+
665+ [mysqld]
666+ innodb_file_per_table
667+
668+ or start the server with ``--innodb_file_per_table``.
669+
670+ innodb_expand_import
671+ This feature of |Percona Server| implements the ability to import arbitrary :term:`.ibd` files exported using the |XtraBackup| :option:`--export` option.
672+
673+ See the `the full documentation <http://www.percona.com/doc/percona-server/5.5/management/innodb_expand_import.html>`_ for more information.
674+
675+ innodb_data_home_dir
676+ 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,
677+
678+ .. code-block:: guess
679+
680+ [mysqld]
681+ innodb_data_home_dir = ./
682+
683+ innodb_data_file_path
684+ Specifies the names, sizes and location of shared tablespace files:
685+
686+ .. code-block:: guess
687+
688+ [mysqld]
689+ innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend
690+
691+ innodb_log_group_home_dir
692+ Specifies the location of the |InnoDB| log files:
693+
694+ .. code-block:: guess
695+
696+ [mysqld]
697+ innodb_log_group_home=/var/lib/mysql
698+
699+ innodb_buffer_pool_size
700+ 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:
701+
702+ .. code-block:: guess
703+
704+ [mysqld]
705+ innodb_buffer_pool_size=8MB
706+
707+ InnoDB
708+ 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.
709+
710+ MyISAM
711+ 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`
712+
713+ XtraDB
714+ *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>`_ .
715+
716+ my.cnf
717+ 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.
718+
719+ datadir
720+ The directory in which the database server stores its databases. Most Linux distribution use :file:`/var/lib/mysql` by default.
721+
722+ ibdata
723+ Default prefix for tablespace files, e.g. :file:`ibdata1` is a 10MB autoextensible file that |MySQL| creates for the shared tablespace by default.
724+
725+ .frm
726+ For each table, the server will create a file with the ``.frm`` extension containing the table definition (for all storage engines).
727+
728+ .ibd
729+ 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.
730+
731+ .MYD
732+ Each |MyISAM| table has ``.MYD`` (MYData) file which contains the data on it.
733+
734+ .MYI
735+ Each |MyISAM| table has ``.MYI`` (MYIndex) file which contains the table's indexes.
736+
737+ .exp
738+ 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.
739+
740+ .MRG
741+ 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.
742+
743+ .TRG
744+ File containing the Triggers associated to a table, e.g. `:file:`mytable.TRG`. With the :term:`.TRN` file, they represent all the Trigger definitions.
745+
746+ .TRN
747+ 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.
748+
749+ .ARM
750+ Each table with the :program:`Archive Storage Engine` has ``.ARM`` file which contains the metadata of it.
751+
752+ .ARZ
753+ Each table with the :program:`Archive Storage Engine` has ``.ARZ`` file which contains the data of it.
754+
755+ .CSM
756+ Each table with the :program:`CSV Storage Engine` has ``.CSM`` file which contains the metadata of it.
757+
758+ .CSV
759+ 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).
760+
761+ .opt
762+ |MySQL| stores options of a database (like charset) in a file with a :option:`.opt` extension in the database directory.
763+
764
765=== added file 'doc/source/how-tos.rst'
766--- doc/source/how-tos.rst 1970-01-01 00:00:00 +0000
767+++ doc/source/how-tos.rst 2012-02-16 17:09:19 +0000
768@@ -0,0 +1,72 @@
769+=====================
770+ How-tos and Recipes
771+=====================
772+
773+.. _recipes-ibk:
774+
775+Recipes for |innobackupex|
776+==========================
777+
778+.. toctree::
779+ :maxdepth: 1
780+
781+ howtos/recipes_ibkx_local
782+ howtos/recipes_ibkx_stream
783+ howtos/recipes_ibkx_inc
784+
785+
786+.. _recipes-xbk:
787+
788+Recipes for |xtrabackup|
789+========================
790+
791+.. toctree::
792+ :maxdepth: 1
793+
794+ howtos/recipes_xbk_full
795+ howtos/recipes_xbk_inc
796+ howtos/recipes_xbk_restore
797+
798+.. _howtos:
799+
800+How-Tos
801+=======
802+
803+.. toctree::
804+ :maxdepth: 1
805+
806+ howtos/setting_up_replication
807+
808+.. _aux-guides:
809+
810+Auxiliary Guides
811+================
812+
813+.. toctree::
814+ :maxdepth: 1
815+
816+ howtos/enabling_tcp
817+ howtos/permissions
818+ howtos/ssh_server
819+
820+Assumptions in this section
821+===========================
822+
823+Most 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.
824+
825+``HOST``
826+ A system with a |MySQL|-based server installed, configured and running. We will assume the following about this system:
827+
828+ * the MySQL server is able to :doc:`communicate with others by the standard TCP/IP port <howtos/enabling_tcp>`;
829+
830+ * a SSH server is installed and configured - see :doc:`here <howtos/ssh_server>` if it is not;
831+
832+ * you have an user account in the system with the appropriate :doc:`permissions <howtos/permissions>` and
833+
834+ * you have a MySQL's user account with appropriate :doc:`privileges <howtos/permissions>`.
835+
836+``USER``
837+ 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>`.
838+
839+``DB-USER``
840+ An user account in the database server with appropriate privileges for the task. A guide for checking them is :doc:`here <howtos/permissions>`.
841
842=== added file 'doc/source/how_xtrabackup_works.rst'
843--- doc/source/how_xtrabackup_works.rst 1970-01-01 00:00:00 +0000
844+++ doc/source/how_xtrabackup_works.rst 2012-02-16 17:09:19 +0000
845@@ -0,0 +1,17 @@
846+========================
847+ How |XtraBackup| Works
848+========================
849+
850+|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.
851+
852+This 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.
853+
854+|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.
855+
856+The 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.
857+
858+The 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.
859+
860+The 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.
861+
862+The |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.
863
864=== added directory 'doc/source/howtos'
865=== added file 'doc/source/howtos/enabling_tcp.rst'
866--- doc/source/howtos/enabling_tcp.rst 1970-01-01 00:00:00 +0000
867+++ doc/source/howtos/enabling_tcp.rst 2012-02-16 17:09:19 +0000
868@@ -0,0 +1,22 @@
869+Enabling the server to communicate with through TCP/IP
870+======================================================
871+
872+Most of the Linux distributions do not enable by default to accept TCP/IP connections from outside in their MySQL or Percona Server packages.
873+
874+You can check it with ``netstat`` on a shell: ::
875+
876+ $ netstat -lnp | grep mysql
877+ tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2480/mysqld
878+ unix 2 [ ACC ] STREAM LISTENING 8101 2480/mysqld /tmp/mysql.sock
879+
880+You should check two things:
881+
882+* there is a line starting with ``tcp`` (the server is indeed accepting TCP connections) and
883+
884+* 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).
885+
886+In 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``.
887+
888+After 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``).
889+
890+And we're done! We have a MySQL server running which is able to communicate with the world through TCP/IP.
891
892=== added file 'doc/source/howtos/permissions.rst'
893--- doc/source/howtos/permissions.rst 1970-01-01 00:00:00 +0000
894+++ doc/source/howtos/permissions.rst 2012-02-16 17:09:19 +0000
895@@ -0,0 +1,54 @@
896+======================================
897+ Privileges and Permissions for Users
898+======================================
899+
900+We 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.
901+
902+By "privileges" we refer to the abilities of a database user to perform different kinds of actions on the database server.
903+
904+
905+At a system level
906+-----------------
907+
908+There 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: ::
909+
910+ $ stat /etc/mysql | grep Access
911+ Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
912+ Access: 2011-05-12 21:19:07.129850437 -0300
913+ $ ls -ld /etc/mysql/my.cnf
914+ -rw-r--r-- 1 root root 4703 Apr 5 06:26 /etc/mysql/my.cnf
915+
916+As 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``: ::
917+
918+ $ sudo -l
919+ Password:
920+ You may run the following commands on this host:
921+ (root) /usr/bin/
922+ (root) NOPASSWD: /etc/init.d/mysqld
923+ (root) NOPASSWD: /bin/vi /etc/mysql/my.cnf
924+ (root) NOPASSWD: /usr/local/bin/top
925+ (root) NOPASSWD: /usr/bin/ls
926+ (root) /bin/tail
927+
928+Being able to execute with ``sudo`` scripts in ``/etc/init.d/``, ``/etc/rc.d/`` or ``/sbin/service`` is the ability to start and stop services.
929+
930+Also, 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.
931+
932+There 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.
933+
934+At a database server level
935+--------------------------
936+
937+To query the privileges that your database user has been granted, at a console of the server execute: ::
938+
939+ mysql> SHOW GRANTS;
940+
941+or for a particular user with: ::
942+
943+ mysql> SHOW GRANTS FOR 'db-user'@'host';
944+
945+It 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>`_.
946+
947+Note 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: ::
948+
949+ mysql> SHOW PRIVILEGES;
950
951=== added file 'doc/source/howtos/recipes_ibkx_inc.rst'
952--- doc/source/howtos/recipes_ibkx_inc.rst 1970-01-01 00:00:00 +0000
953+++ doc/source/howtos/recipes_ibkx_inc.rst 2012-02-16 17:09:19 +0000
954@@ -0,0 +1,64 @@
955+==============================
956+ Making an Incremental Backup
957+==============================
958+
959+Every incremental backup starts with a full one, which we will call the *base backup*: ::
960+
961+ innobackupex --user=USER --password=PASSWORD /path/to/backup/dir/
962+
963+Note 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/``).
964+
965+Assuming that variable ``$FULLBACKUP`` contains :file:`/path/to/backup/dir/2011-5-23_23-01-18`, let's do an incremental backup an hour later: ::
966+
967+ innobackupex --incremental /path/to/inc/dir \
968+ --incremental-basedir=$FULLBACKUP --user=USER --password=PASSWORD
969+
970+Now, 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``.
971+
972+Preparing incremental backups is a bit different than full ones:
973+
974+First you have to replay the committed transactions on each backup, ::
975+
976+ innobackupex --apply-log --redo-only $FULLBACKUP \
977+ --use-memory=1G --user=USER --password=PASSWORD
978+
979+The :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).
980+
981+If everything went fine, you should see an output similar to: ::
982+
983+ 111225 01:10:12 InnoDB: Shutdown completed; log sequence number 91514213
984+
985+Now apply the incremental backup to the base backup, by issuing: ::
986+
987+ innobackupex --apply-log $FULLBACKUP
988+ --incremental-dir=$INCREMENTALBACKUP
989+ --use-memory=1G --user=DVADER --password=D4RKS1D3
990+
991+Note the ``$INCREMENTALBACKUP``.
992+
993+*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``.
994+
995+If 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.
996+
997+You can check the file xtrabackup_checkpoints at the directory of each one.
998+
999+They should look like: (in the base backup) ::
1000+
1001+ backup_type = full-backuped
1002+ from_lsn = 0
1003+ to_lsn = 1291135
1004+
1005+and in the incremental ones: ::
1006+
1007+ backup_type = incremental
1008+ from_lsn = 1291135
1009+ to_lsn = 1291340
1010+
1011+The ``to_lsn`` number must match the ``from_lsn`` of the next one.
1012+
1013+Once you put all the parts together, you can prepare again the full backup (base + incrementals) once again to rollback the pending transactions: ::
1014+
1015+ innobackupex-1.5.1 --apply-log $FULLBACKUP --use-memory=1G \
1016+ --user=$USERNAME --password=$PASSWORD
1017+
1018+Now 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).
1019
1020=== added file 'doc/source/howtos/recipes_ibkx_local.rst'
1021--- doc/source/howtos/recipes_ibkx_local.rst 1970-01-01 00:00:00 +0000
1022+++ doc/source/howtos/recipes_ibkx_local.rst 2012-02-16 17:09:19 +0000
1023@@ -0,0 +1,49 @@
1024+========================================================
1025+ Make a Local Full Backup (Create, Prepare and Restore)
1026+========================================================
1027+
1028+Create the Backup
1029+=================
1030+
1031+This 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`, ::
1032+
1033+ $ innobackupex /data/backups
1034+
1035+There 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: ::
1036+
1037+ 100313 02:43:07 innobackupex: completed OK!
1038+
1039+Prepare the Backup
1040+==================
1041+
1042+To 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: ::
1043+
1044+ $ innobackupex --use-memory=4G --apply-log /data/backups/2010-03-13_02-42-44/
1045+
1046+You should check for a confirmation message: ::
1047+
1048+ 100313 02:51:02 innobackupex: completed OK!
1049+
1050+Now the files in :file:`/data/backups/2010-03-13_02-42-44` is ready to be used by the server.
1051+
1052+Restore the Backup
1053+==================
1054+
1055+To restore the already-prepared backup, first stop the server and then use the :option:`--copy-back` function of |innobackupex|::
1056+
1057+ innobackupex --copy-back /data/backups/2010-03-13_02-42-44/
1058+ ## Use chmod to correct the permissions, if necessary!
1059+
1060+This will copy the prepared data back to its original location as defined by the ``datadir`` in your :term:`my.cnf`.
1061+
1062+After the confirmation message::
1063+
1064+ 100313 02:58:44 innobackupex: completed OK!
1065+
1066+you should check the file permissions after copying the data back. You may need to adjust them with something like::
1067+
1068+ $ chown -R mysql:mysql /var/lib/mysql
1069+
1070+Now the :term:`datadir` contains the restored data. You are ready to start the server.
1071+
1072+
1073
1074=== added file 'doc/source/howtos/recipes_ibkx_stream.rst'
1075--- doc/source/howtos/recipes_ibkx_stream.rst 1970-01-01 00:00:00 +0000
1076+++ doc/source/howtos/recipes_ibkx_stream.rst 2012-02-16 17:09:19 +0000
1077@@ -0,0 +1,36 @@
1078+=========================
1079+ Make a Streaming Backup
1080+=========================
1081+
1082+Stream 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.
1083+
1084+To extract the resulting tar file, you **must** use the ``-i`` option, such as ``tar -ixvf backup.tar``.
1085+
1086+.. warning:: Remember to use the ``-i`` option for extracting a tarred backup. For more information, see :doc:`../innobackupex/streaming_backups_innobackupex`.
1087+
1088+Here are some examples:
1089+
1090+.. code-block:: console
1091+
1092+ ## Stream the backup into a tar archived named 'backup.tar'
1093+ innobackupex --stream=tar ./ > backup.tar
1094+
1095+ ## The same, but compress it
1096+ innobackupex --stream=tar ./ | gzip - > backup.tar.gz
1097+
1098+ ## Send it to another server instead of storing it locally
1099+ innobackupex --stream=tar ./ | ssh user@desthost "cat - > /data/backups/backup.tar"
1100+
1101+ ## The same thing with ''netcat'' (faster). On the destination host:
1102+ nc -l 9999 | cat - > /data/backups/backup.tar
1103+ ## On the source host:
1104+ innobackupex --stream=tar ./ | nc desthost 9999
1105+
1106+ ## The same thing, but done as a one-liner:
1107+ ssh user@desthost "( nc -l 9999 > /data/backups/backup.tar & )" \
1108+ && innobackupex --stream=tar ./ | nc desthost 9999
1109+
1110+ ## Throttle the throughput to 10MB/sec. Requires the 'pv' tools; you
1111+ ## can find them at http://www.ivarch.com/programs/quickref/pv.shtml
1112+ innobackupex --stream=tar ./ | pv -q -L10m \
1113+ | ssh user@desthost "cat - > /data/backups/backup.tar"
1114
1115=== added file 'doc/source/howtos/recipes_xbk_full.rst'
1116--- doc/source/howtos/recipes_xbk_full.rst 1970-01-01 00:00:00 +0000
1117+++ doc/source/howtos/recipes_xbk_full.rst 2012-02-16 17:09:19 +0000
1118@@ -0,0 +1,32 @@
1119+======================
1120+ Making a Full Backup
1121+======================
1122+
1123+ 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).
1124+
1125+Make a backup:
1126+==============
1127+::
1128+
1129+ xtrabackup --backup --target-dir=/data/backups/mysql/
1130+
1131+Prepare the backup twice:
1132+=========================
1133+::
1134+
1135+ xtrabackup --prepare --target-dir=/data/backups/mysql/
1136+ xtrabackup --prepare --target-dir=/data/backups/mysql/
1137+
1138+Success Criterion
1139+=================
1140+
1141+* The exit status of xtrabackup is 0.
1142+
1143+* 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).
1144+
1145+Notes
1146+=====
1147+
1148+* 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>`.
1149+
1150+* A more detailed explanation is :doc:`here <../xtrabackup_bin/creating_a_backup>`
1151
1152=== added file 'doc/source/howtos/recipes_xbk_inc.rst'
1153--- doc/source/howtos/recipes_xbk_inc.rst 1970-01-01 00:00:00 +0000
1154+++ doc/source/howtos/recipes_xbk_inc.rst 2012-02-16 17:09:19 +0000
1155@@ -0,0 +1,64 @@
1156+==============================
1157+ Making an Incremental Backup
1158+==============================
1159+
1160+Backup 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.
1161+
1162+Create one full backup
1163+======================
1164+
1165+Making an incremental backup requires a full backup as a base::
1166+
1167+ xtrabackup --backup --target-dir=/data/backups/mysql/
1168+
1169+It is important that you **do not run** the :option:`--prepare` command yet.
1170+
1171+Create two incremental backups
1172+==============================
1173+
1174+Suppose the full backup is on Monday, and you will create an incremental one on Tuesday::
1175+
1176+ xtrabackup --backup --target-dir=/data/backups/inc/tue/ \
1177+ --incremental-basedir=/data/backups/mysql/
1178+
1179+and the same policy is applied on Wednesday::
1180+
1181+ xtrabackup --backup --target-dir=/data/backups/inc/wed/ \
1182+ --incremental-basedir=/data/backups/inc/tue/
1183+
1184+Prepare the base backup
1185+=======================
1186+
1187+Prepare the base backup (Monday's backup)::
1188+
1189+ xtrabackup --prepare --apply-log-only --target-dir=/data/backups/mysql/
1190+
1191+Roll forward the base data to the first increment
1192+=================================================
1193+
1194+Roll Monday's data forward to the state on Tuesday: ::
1195+
1196+ xtrabackup --prepare --apply-log-only --target-dir=/data/backups/mysql/ \
1197+ --incremental-dir=/data/backups/inc/tue/
1198+
1199+Roll forward again to the second increment
1200+==========================================
1201+
1202+Roll forward again to the state on Wednesday: ::
1203+
1204+ xtrabackup --prepare --apply-log-only --target-dir=/data/backups/mysql/ \
1205+ --incremental-dir=/data/backups/inc/wed/
1206+
1207+Prepare the whole backup to be ready to use
1208+===========================================
1209+
1210+Create the new logs by preparing it::
1211+
1212+ xtrabackup --prepare --target-dir=/data/backups/mysql/
1213+
1214+Notes
1215+=====
1216+
1217+* 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>`.
1218+
1219+* A more detailed explanation is :doc:`here <../xtrabackup_bin/incremental_backups>`.
1220
1221=== added file 'doc/source/howtos/recipes_xbk_restore.rst'
1222--- doc/source/howtos/recipes_xbk_restore.rst 1970-01-01 00:00:00 +0000
1223+++ doc/source/howtos/recipes_xbk_restore.rst 2012-02-16 17:09:19 +0000
1224@@ -0,0 +1,10 @@
1225+======================
1226+ Restoring the Backup
1227+======================
1228+
1229+Because :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: ::
1230+
1231+ cd /data/backups/mysql/
1232+ rsync -rvt --exclude 'xtrabackup_checkpoints' --exclude 'xtrabackup_logfile' \
1233+ ./ /var/lib/mysql
1234+ chown -R mysql:mysql /var/lib/mysql/
1235
1236=== added file 'doc/source/howtos/setting_up_replication.rst'
1237--- doc/source/howtos/setting_up_replication.rst 1970-01-01 00:00:00 +0000
1238+++ doc/source/howtos/setting_up_replication.rst 2012-02-16 17:09:19 +0000
1239@@ -0,0 +1,246 @@
1240+.. _replication_howto:
1241+
1242+========================================================================
1243+ How to setup a slave for replication in 6 simple steps with Xtrabackup
1244+========================================================================
1245+
1246+ 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.
1247+
1248+ You can have almost real-time backups in 6 simple steps by setting up a replication environment with |XtraBackup|.
1249+
1250+ *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.
1251+
1252+All the things you will need
1253+============================
1254+
1255+Setting 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:
1256+
1257+* ``TheMaster``
1258+ 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:
1259+
1260+ * the |MySQL| server is able to communicate with others by the standard TCP/IP port;
1261+
1262+ * the *SSH* server is installed and configured;
1263+
1264+ * you have an user account in the system with the appropriate permissions;
1265+
1266+ * you have a MySQL's user account with appropriate privileges.
1267+
1268+ * server has binlogs enabled and server-id set up to 1.
1269+
1270+
1271+* ``TheSlave``
1272+ 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``.
1273+
1274+* ``Xtrabackup``
1275+ The backup tool we will use. It should be installed in both computers for convenience.
1276+
1277+STEP 1: Make a backup on ``TheMaster`` and prepare it
1278+=====================================================
1279+
1280+At ``TheMaster``, issue the following to a shell:
1281+
1282+.. code-block:: console
1283+
1284+ TheMaster$ innobackupex --user=yourDBuser --password=MaGiCdB1 /path/to/backupdir
1285+
1286+After this is finished you should get:
1287+
1288+.. code-block:: console
1289+
1290+ innobackupex: completed OK!
1291+
1292+This 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).
1293+
1294+In order for snapshot to be consistent you need to prepare the data:
1295+
1296+.. code-block:: console
1297+
1298+ TheMaster$ innobackupex --user=yourDBuser --password=MaGiCdB1 /
1299+ --apply-log /path/to/backupdir/$TIMESTAMP/
1300+
1301+You 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.
1302+
1303+|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``.
1304+
1305+If 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:
1306+
1307+.. code-block:: console
1308+
1309+ [client]
1310+ user=root
1311+ pass=MaGiCdB1
1312+
1313+This is will give you root access to MySQL.
1314+
1315+STEP 2: Copy backed up data to TheSlave
1316+========================================
1317+
1318+Use 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.
1319+
1320+.. code-block:: console
1321+
1322+ TheMaster$ rsync -avprP -e ssh /path/to/backupdir/$TIMESTAMP TheSlave:/path/to/mysql/
1323+
1324+After data has been copied you can back up the original or previously installed |MySQL| datadir:
1325+
1326+.. code-block:: console
1327+
1328+ TheSlave$ mv /path/to/mysql/datadir /path/to/mysql/datadir_bak
1329+
1330+and move the snapshot from ``TheMaster`` in its place:
1331+
1332+.. code-block:: console
1333+
1334+ TheSlave$ mv /path/to/mysql/$TIMESTAMP /path/to/mysql/datadir
1335+
1336+After you copy data over, make sure |MySQL| has proper permissions to access them.
1337+
1338+.. code-block:: console
1339+
1340+ TheSlave$ chown mysql:mysql /path/to/mysql/datadir
1341+
1342+In 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.
1343+
1344+STEP 3: Configure The Master's MySQL server
1345+===========================================
1346+
1347+Add the appropriate grant in order for slave to be able to connect to master:
1348+
1349+.. code-block:: mysql
1350+
1351+ TheMaster|mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'$slaveip'
1352+ IDENTIFIED BY '$slavepass';
1353+
1354+Also make sure that firewall rules are correct and that ``TheSlave`` can connect to ``TheMaster``.
1355+
1356+STEP 4: Configure The Slave's MySQL server
1357+==========================================
1358+
1359+First copy the :term:`my.cnf` file from ``TheMaster`` to ``TheSlave``:
1360+
1361+.. code-block:: console
1362+
1363+ TheSlave$ scp user@TheMaster:/etc/mysql/my.cnf /etc/mysql/my.cnf
1364+
1365+then change the following options in /etc/mysql/my.cnf:
1366+
1367+.. code-block:: console
1368+
1369+ server-id=2
1370+
1371+and start/restart :command:`mysqld` on ``TheSlave``.
1372+
1373+In 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`.
1374+
1375+
1376+STEP 5: Start the replication
1377+=============================
1378+
1379+Look at the content of the file :file:`xtrabackup_binlog_info`, it will be something like:
1380+
1381+.. code-block:: console
1382+
1383+ TheSlave$ cat /var/lib/mysql/xtrabackup_binlog_info
1384+ TheMaster-bin.000001 481
1385+
1386+Execute the ``CHANGE MASTER`` statement on a MySQL console and use the username and password you've set up in STEP 3:
1387+
1388+.. code-block:: mysql
1389+
1390+ TheSlave|mysql> CHANGE MASTER TO
1391+ MASTER_HOST='$masterip',
1392+ MASTER_USER='repl',
1393+ MASTER_PASSWORD='$slavepass',
1394+ MASTER_LOG_FILE='TheMaster-bin.000001',
1395+ MASTER_LOG_POS=481;
1396+
1397+and start the slave:
1398+
1399+.. code-block:: mysql
1400+
1401+ TheSlave|mysql> START SLAVE;
1402+
1403+STEP 6: Check
1404+=============
1405+
1406+You should check that everything went OK with:
1407+
1408+.. code-block:: mysql
1409+
1410+ TheSlave|mysql> SHOW SLAVE STATUS \G
1411+ ...
1412+ Slave_IO_Running: Yes
1413+ Slave_SQL_Running: Yes
1414+ ...
1415+ Seconds_Behind_Master: 13
1416+ ...
1417+
1418+Both ``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``.
1419+
1420+Adding more slaves to The Master
1421+================================
1422+
1423+You 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.
1424+
1425+At ``TheSlave``, do a full backup:
1426+
1427+.. code-block:: console
1428+
1429+ TheSlave$ innobackupex --user=yourDBuser --password=MaGiCiGaM /
1430+ --slave-info /path/to/backupdir
1431+
1432+By using the :option:`--slave-info` Xtrabackup creates additional file called :file:`xtrabackup_slave_info`.
1433+
1434+Apply the logs:
1435+
1436+.. code-block:: console
1437+
1438+ TheSlave$ innobackupex --apply-log --use-memory=2G /path/to/backupdir/$TIMESTAMP/
1439+
1440+Copy the directory from the ``TheSlave`` to ``TheNewSlave``:
1441+
1442+.. code-block:: console
1443+
1444+ rsync -avprP -e ssh /path/to/backupdir/$TIMESTAMP TheNewSlave:/path/to/mysql/datadir
1445+
1446+Add additional grant on the master:
1447+
1448+.. code-block:: mysql
1449+
1450+ TheMaster|mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'$newslaveip'
1451+ IDENTIFIED BY '$slavepass';
1452+
1453+Copy the configuration file from ``TheSlave``:
1454+
1455+.. code-block:: console
1456+
1457+ TheNEWSlave$ scp user@TheSlave:/etc/mysql/my.cnf /etc/mysql/my.cnf
1458+
1459+Make sure you change the server-id variable in :file:`/etc/mysql/my.cnf` to 3 and disable the replication on start:
1460+
1461+.. code-block:: console
1462+
1463+ skip-slave-start
1464+ server-id=3
1465+
1466+After setting ``server_id``, start :command:`mysqld`.
1467+
1468+Fetch 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``:
1469+
1470+.. code-block:: mysql
1471+
1472+ TheNEWSlave|mysql> CHANGE MASTER TO
1473+ MASTER_HOST='$masterip'
1474+ MASTER_USER='repl',
1475+ MASTER_PASSWORD='$slavepass',
1476+ MASTER_LOG_FILE='TheMaster-bin.000001',
1477+ MASTER_LOG_POS=481;
1478+
1479+and start the slave:
1480+
1481+.. code-block:: mysql
1482+
1483+ TheSlave|mysql> START SLAVE;
1484+
1485+If both IO and SQL threads are running when you check the ``TheNewSlave``, server is replicating ``TheMaster``.
1486
1487=== added file 'doc/source/howtos/ssh_server.rst'
1488--- doc/source/howtos/ssh_server.rst 1970-01-01 00:00:00 +0000
1489+++ doc/source/howtos/ssh_server.rst 2012-02-16 17:09:19 +0000
1490@@ -0,0 +1,25 @@
1491+=========================================
1492+ Installing and configuring a SSH server
1493+=========================================
1494+
1495+Many 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: ::
1496+
1497+ ubuntu$ sudo apt-get install openssh-server
1498+ archlinux$ sudo pacman -S openssh
1499+
1500+You 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.
1501+
1502+
1503+Some links of them are:
1504+
1505+* Debian - http://wiki.debian.org/SSH
1506+
1507+* Ubuntu - https://help.ubuntu.com/10.04/serverguide/C/openssh-server.html
1508+
1509+* Archlinux - https://wiki.archlinux.org/index.php/SSH
1510+
1511+* Fedora - http://docs.fedoraproject.org/en-US/Fedora/12/html/Deployment_Guide/s1-openssh-server-config.html
1512+
1513+* CentOS - http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-openssh-server-config.html
1514+
1515+* RHEL - http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/ch-OpenSSH.html
1516
1517=== added file 'doc/source/index.rst'
1518--- doc/source/index.rst 1970-01-01 00:00:00 +0000
1519+++ doc/source/index.rst 2012-02-16 17:09:19 +0000
1520@@ -0,0 +1,81 @@
1521+.. Percona Xtrabackup documentation master file, created by
1522+ sphinx-quickstart on Fri May 6 01:04:39 2011.
1523+ You can adapt this file completely to your liking, but it should at least
1524+ contain the root `toctree` directive.
1525+
1526+====================================
1527+ Percona Xtrabackup - Documentation
1528+====================================
1529+
1530+*Percona* |XtraBackup| is an open-source hot backup utility for |MySQL| - based servers that doesn't lock your database during the backup.
1531+
1532+It 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`.
1533+
1534+Whether 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/>`_.
1535+
1536+*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.
1537+
1538+Introduction
1539+============
1540+
1541+.. toctree::
1542+ :maxdepth: 1
1543+ :glob:
1544+
1545+ intro
1546+
1547+Installation
1548+============
1549+
1550+.. toctree::
1551+ :maxdepth: 1
1552+ :glob:
1553+
1554+ installation
1555+ installation/compiling_xtrabackup
1556+
1557+User's Manual
1558+=============
1559+
1560+.. toctree::
1561+ :maxdepth: 2
1562+ :glob:
1563+
1564+ manual
1565+
1566+Tutorials, Recipes, How-tos
1567+===========================
1568+
1569+.. toctree::
1570+ :maxdepth: 2
1571+ :hidden:
1572+
1573+ how-tos
1574+
1575+* :ref:`recipes-xbk`
1576+
1577+* :ref:`recipes-ibk`
1578+
1579+* :ref:`howtos`
1580+
1581+* :ref:`aux-guides`
1582+
1583+Miscellaneous
1584+=============
1585+
1586+.. toctree::
1587+ :maxdepth: 1
1588+ :glob:
1589+
1590+ faq
1591+ release-notes
1592+ glossary
1593+ trademark-policy
1594+
1595+Indices and tables
1596+==================
1597+
1598+* :ref:`genindex`
1599+
1600+* :ref:`search`
1601+
1602
1603=== added directory 'doc/source/innobackupex'
1604=== added file 'doc/source/innobackupex/creating_a_backup_ibk.rst'
1605--- doc/source/innobackupex/creating_a_backup_ibk.rst 1970-01-01 00:00:00 +0000
1606+++ doc/source/innobackupex/creating_a_backup_ibk.rst 2012-02-16 17:09:19 +0000
1607@@ -0,0 +1,74 @@
1608+=======================================
1609+ Creating a Backup with |innobackupex|
1610+=======================================
1611+
1612+|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.
1613+
1614+To 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 ::
1615+
1616+ $ innobackupex --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR/
1617+
1618+and check the last line of the output for a confirmation message:
1619+
1620+.. code-block:: console
1621+
1622+ innobackupex: Backup created in directory '/path/to/BACKUP-DIR/2011-12-25_00-00-09'
1623+ innobackupex: MySQL binlog position: filename 'mysql-bin.000003', position 1946
1624+ 111225 00:00:53 innobackupex: completed OK!
1625+
1626+The 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.
1627+
1628+Under the hood
1629+==============
1630+
1631+|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.
1632+
1633+It will also create the following files for convenience on the created directory:
1634+
1635+ * Information related to the backup and the server
1636+
1637+ * :file:`xtrabackup_checkpoints`
1638+ The type of the backup (e.g. full or incremental), its state (e.g. prepared) and the |LSN| range contained in it.
1639+
1640+ * :file:`xtrabackup_binlog_info`
1641+ The binary log file used by the server and its position at the moment of the backup.
1642+
1643+ * :file:`xtrabackup_binlog_info`
1644+ The binary log file and its current position for |InnoDB| or |XtraDB| tables.
1645+
1646+ * :file:`xtrabackup_binary`
1647+ The |xtrabackup| binary used in the process.
1648+
1649+ * :file:`backup-my.cnf`
1650+ The options of the configuration file used in the backup.
1651+
1652+ * Information related to the replication environment (if using the :option:`--slave-info` option):
1653+
1654+ * :file:`xtrabackup_slave_info`
1655+ The ``CHANGE MASTER`` statement needed for setting up a slave.
1656+
1657+ * The output of :program:`mysqld` during the backup process:
1658+
1659+ * :file:`mysql-stderr`
1660+
1661+ * :file:`mysql-stdout`
1662+
1663+Other options to consider
1664+=========================
1665+
1666+The :option:`--no-timestamp` option
1667+-----------------------------------
1668+
1669+This option tells |innobackupex| not to create a time stamped directory to store the backup::
1670+
1671+ $ innobackupex --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR/ --no-timestamp
1672+
1673+|innobackupex| will create the ``BACKUP-DIR`` subdirectory (or fail if exists) and store the backup inside of it.
1674+
1675+The :option:`--defaults-file` option
1676+------------------------------------
1677+
1678+You can provide other configuration file to |innobackupex| with this option. The only limitation is that **it has to be the first option passed**::
1679+
1680+ $ innobackupex --defaults-file=/tmp/other-my.cnf --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR/
1681+
1682
1683=== added file 'doc/source/innobackupex/how_innobackupex_works.rst'
1684--- doc/source/innobackupex/how_innobackupex_works.rst 1970-01-01 00:00:00 +0000
1685+++ doc/source/innobackupex/how_innobackupex_works.rst 2012-02-16 17:09:19 +0000
1686@@ -0,0 +1,73 @@
1687+.. _how_ibk_works:
1688+
1689+==========================
1690+ How |innobackupex| Works
1691+==========================
1692+
1693+: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.
1694+
1695+The following describes the rationale behind :program:`innobackupex` actions.
1696+
1697+.. _making-backup-ibk:
1698+
1699+Making a Backup
1700+===============
1701+
1702+If no mode is specified, |innobackupex| will assume the backup mode.
1703+
1704+By 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.
1705+
1706+If 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`).
1707+
1708+When 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.
1709+
1710+If 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).
1711+
1712+Once 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.
1713+
1714+When 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.
1715+
1716+It will also create the following files in the directory of the backup:
1717+
1718+:file:`xtrabackup_checkpoints`
1719+ containing the :term:`LSN` and the type of backup;
1720+
1721+:file:`xtrabackup_binlog_info`
1722+ containing the position of the binary log at the moment of backing up;
1723+
1724+:file:`xtrabackup_binlog_pos_innodb`
1725+ containing the position of the binary log at the moment of backing up relative to |InnoDB| transactions;
1726+
1727+:file:`xtrabackup_slave_info`
1728+ 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;
1729+
1730+:file:`backup-my.cnf`
1731+ containing only the :file:`my.cnf` options required for the backup;
1732+
1733+:file:`xtrabackup_binary`
1734+ containing the binary used for the backup;
1735+
1736+:file:`mysql-stderr`
1737+ containing the ``STDERR`` of :program:`mysqld` during the process and
1738+
1739+:file:`mysql-stdout`
1740+ containing the ``STDOUT`` of the server.
1741+
1742+If 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).
1743+
1744+After each copy the files will be deleted. The same rationale is for the :option:`--stream` mode.
1745+
1746+Finally, the binary log position will be printed to ``STDERR`` and |innobackupex| will exit returning 0 if all went OK.
1747+
1748+Note 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``.
1749+
1750+.. _copy-back-ibk:
1751+
1752+Restoring a backup
1753+==================
1754+
1755+To restore a backup with |innobackupex| the :option:`--copy-back` option must be used.
1756+
1757+|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.
1758+
1759+It 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.
1760
1761=== added file 'doc/source/innobackupex/importing_exporting_tables_ibk.rst'
1762--- doc/source/innobackupex/importing_exporting_tables_ibk.rst 1970-01-01 00:00:00 +0000
1763+++ doc/source/innobackupex/importing_exporting_tables_ibk.rst 2012-02-16 17:09:19 +0000
1764@@ -0,0 +1,46 @@
1765+.. _imp_exp_ibk:
1766+
1767+===========================================
1768+ Importing and Exporting Individual Tables
1769+===========================================
1770+
1771+In 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|.
1772+
1773+The 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.
1774+
1775+The 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.
1776+
1777+Exporting tables
1778+================
1779+
1780+Exporting 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: ::
1781+
1782+ $ innobackupex --apply-log --export /path/to/backup
1783+
1784+This will create for each |InnoDB| with its own tablespace a file with :term:`.exp` extension. An output of this procedure would contain: ::
1785+
1786+ ..
1787+ xtrabackup: export option is specified.
1788+ xtrabackup: export metadata of table 'mydatabase/mytable' to file
1789+ `./mydatabase/mytable.exp` (1 indexes)
1790+ ..
1791+
1792+Each :term:`.exp` file will be used for importing that table.
1793+
1794+Importing tables
1795+================
1796+
1797+To 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: ::
1798+
1799+ OTHERSERVER|mysql> CREATE TABLE mytable (...) ENGINE=InnoDB;
1800+
1801+then discard its tablespace: ::
1802+
1803+ OTHERSERVER|mysql> ALTER TABLE mydatabase.mytable DISCARD TABLESPACE;
1804+
1805+After this, copy :file:`mytable.ibd` and :file:`mytable.exp` files to database's home, and import its tablespace: ::
1806+
1807+ OTHERSERVER|mysql> ALTER TABLE mydatabase.mytable IMPORT TABLESPACE;
1808+
1809+Once this is executed, data in the imported table will be available.
1810+
1811
1812=== added file 'doc/source/innobackupex/incremental_backups_innobackupex.rst'
1813--- doc/source/innobackupex/incremental_backups_innobackupex.rst 1970-01-01 00:00:00 +0000
1814+++ doc/source/innobackupex/incremental_backups_innobackupex.rst 2012-02-16 17:09:19 +0000
1815@@ -0,0 +1,119 @@
1816+=========================================
1817+ Incremental Backups with |innobackupex|
1818+=========================================
1819+
1820+As 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.
1821+
1822+This 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.
1823+
1824+An incremental backup copies all pages since a specific |LSN|.
1825+
1826+Once 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.
1827+
1828+Creating an Incremental Backups with |innobackupex|
1829+===================================================
1830+
1831+First, a full backup is needed, this will be the BASE for the incremental one: ::
1832+
1833+ $ innobackupex /data/backups
1834+
1835+This 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.
1836+
1837+.. note:: You can use the :option:`innobackupex --no-timestamp` option to override this behavior and the backup will be created in the given directory.
1838+
1839+If you check at the :file:`xtrabackup-checkpoints` file in ``BASE-DIR``, you should see something like::
1840+
1841+ backup_type = full-backuped
1842+ from_lsn = 0
1843+ to_lsn = 1291135
1844+
1845+To create an incremental backup the next day, use the :option:`--incremental` option and provide the BASEDIR::
1846+
1847+ $ innobackupex --incremental /data/backups --incremental-basedir=BASEDIR
1848+
1849+and 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``.
1850+
1851+If you check at the :file:`xtrabackup-checkpoints` file in ``INCREMENTAL-DIR-1``, you should see something like::
1852+
1853+ backup_type = incremental
1854+ from_lsn = 1291135
1855+ to_lsn = 1352113
1856+
1857+Creating another incremental backup the next day will be analogous, but this time the previous incremental one will be base: ::
1858+
1859+ $ innobackupex --incremental /data/backups --incremental-basedir=INCREMENTAL-DIR-1
1860+
1861+yielding (in this example) :file:`/data/backups/2012-01-02_23-02-08`. We will use ``INCREMENTAL-DIR-2`` instead for simplicity.
1862+
1863+At this point, the :file:`xtrabackup-checkpoints` file in ``INCREMENTAL-DIR-2`` should contain something like::
1864+
1865+ backup_type = incremental
1866+ from_lsn = 1352113
1867+ to_lsn = 1358967
1868+
1869+As 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: ::
1870+
1871+ innobackupex --incremental /data/backups --incremental-lsn=1291135
1872+ innobackupex --incremental /data/backups --incremental-lsn=1358967
1873+
1874+This 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.
1875+
1876+.. 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.
1877+
1878+Preparing an Incremental Backup with |innobackupex|
1879+===================================================
1880+
1881+Preparing incremental backups is a bit different than full ones. This is, perhaps, the stage where more attention is needed:
1882+
1883+ * First, **only the committed transactions must be replayed on each backup**. This will put the base full backup and the incremental ones altogether.
1884+
1885+ * Then, the uncommitted transaction must be rolled back in order to have a ready-to-use backup.
1886+
1887+If 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.
1888+
1889+Having this in mind, the procedure is very straight-forward using the :option:`--redo-only` option, starting with the base backup: ::
1890+
1891+ innobackupex --apply-log --redo-only BASE-DIR
1892+
1893+You should see an output similar to: ::
1894+
1895+ 120103 22:00:12 InnoDB: Shutdown completed; log sequence number 1291135
1896+ 120103 22:00:12 innobackupex: completed OK!
1897+
1898+Then, the first incremental backup can be applied to the base backup, by issuing: ::
1899+
1900+ innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1
1901+
1902+You should see an output similar to the previous one but with corresponding |LSN|: ::
1903+
1904+ 120103 22:08:43 InnoDB: Shutdown completed; log sequence number 1358967
1905+ 120103 22:08:43 innobackupex: completed OK!
1906+
1907+If no :option:`--incremental-dir` is set, |innobackupex| will use the most recently subdirectory created in the basedir.
1908+
1909+At 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.
1910+
1911+Repeat the procedure with the second one: ::
1912+
1913+ innobackupex --apply-log BASE-DIR --incremental-dir=INCREMENTAL-DIR-2
1914+
1915+If the "completed OK!" message was shown, the final data will be in the base backup directory, ``BASE-DIR``.
1916+
1917+You 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.
1918+
1919+Once you put all the parts together, you can prepare again the full backup (base + incrementals) once again to rollback the uncommitted transactions: ::
1920+
1921+ innobackupex --apply-log BASE-DIR
1922+
1923+Now 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).
1924+
1925+Note 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.
1926+
1927+Restoring Incremental Backups with |innobackupex|
1928+=================================================
1929+
1930+After preparing the incremental backups, the base directory contains the same as a full one. For restoring it you can use: ::
1931+
1932+ innobackupex --copy-back BASE-DIR
1933+
1934+and you may have to change the ownership as detailed on :doc:`restoring_a_backup_ibk`.
1935
1936=== added file 'doc/source/innobackupex/innobackupex_option_reference.rst'
1937--- doc/source/innobackupex/innobackupex_option_reference.rst 1970-01-01 00:00:00 +0000
1938+++ doc/source/innobackupex/innobackupex_option_reference.rst 2012-02-16 17:09:19 +0000
1939@@ -0,0 +1,166 @@
1940+=============================================
1941+ The :program:`innobackupex` Option Reference
1942+=============================================
1943+
1944+.. program:: innobackupex
1945+
1946+This page documents all of the command-line options for the :program:`innobackupex` Perl script.
1947+
1948+
1949+Options
1950+=======
1951+
1952+.. option:: --help
1953+
1954+ This option displays a help screen and exits.
1955+
1956+.. option:: --version
1957+
1958+ This option displays the |innobackupex| version and copyright notice and then exits.
1959+
1960+.. option:: --apply-log
1961+
1962+ 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.
1963+
1964+.. option:: --redo-only
1965+
1966+ 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.
1967+
1968+.. option:: --copy-back
1969+
1970+ Copy all the files in a previously made backup from the backup directory to their original locations.
1971+
1972+.. option:: --include
1973+
1974+ 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.
1975+
1976+.. option:: --defaults-file
1977+
1978+ 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.
1979+
1980+.. option:: --databases
1981+
1982+ 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`.)
1983+
1984+.. option:: --tables-file
1985+
1986+ 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.
1987+
1988+.. option:: --throttle
1989+
1990+ 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.
1991+
1992+.. option:: --export
1993+
1994+ 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.
1995+
1996+.. option:: --use-memory
1997+
1998+ 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.
1999+
2000+.. option:: --password = 'PASSWORD'
2001+
2002+ 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.
2003+
2004+.. option:: --user = 'USER'
2005+
2006+ 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.
2007+
2008+.. option:: --port
2009+
2010+ 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.
2011+
2012+.. option:: --socket
2013+
2014+ 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.
2015+
2016+.. option:: --host
2017+
2018+ 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.
2019+
2020+.. option:: --no-timestamp
2021+
2022+ 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.
2023+
2024+.. option:: --slave-info
2025+
2026+ 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.
2027+
2028+.. option:: --no-lock
2029+
2030+ 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.
2031+ 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`.
2032+
2033+.. option:: --ibbackup = 'autodetect'
2034+
2035+ 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.
2036+
2037+.. option:: --incremental
2038+
2039+ 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.
2040+
2041+.. option:: --incremental-basedir
2042+
2043+ 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.
2044+
2045+.. option:: --incremental-dir
2046+
2047+ 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.
2048+
2049+.. option:: --incremental-lsn
2050+
2051+ 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.
2052+
2053+.. option:: --extra-lsndir
2054+
2055+ 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.
2056+
2057+.. option:: --remote-host
2058+
2059+ This option accepts a string argument that specifies the remote host on which the backup files will be created, by using an ssh connection.
2060+
2061+.. option:: --stream
2062+
2063+ 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.
2064+
2065+.. option:: --tmpdir
2066+
2067+ 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.
2068+
2069+.. option:: --tar4ibd
2070+
2071+ Uses :program:`tar4ibd` in :option:`--stream` mode. It is enabled by default if no other command is specified (e.g. :option:`--force-tar`).
2072+
2073+.. option:: --force-tar
2074+
2075+ This option forces the use of :command:`tar` when creating a streamed backup, rather than :program:`tar4ibd`, which is the default.
2076+
2077+.. option:: --scpopt = '-Cp -c arcfour'
2078+
2079+ 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``.
2080+
2081+.. option:: --sshopt
2082+
2083+ 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.
2084+
2085+.. option:: --parallel
2086+
2087+ 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.
2088+
2089+.. option:: --safe-slave-backup
2090+
2091+ 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.
2092+
2093+.. option:: --safe-slave-backup-timeout
2094+
2095+ How many seconds :option:`--safe-slave-backup`` should wait for ``Slave_open_temp_tables`` to become zero. Defaults to 300 seconds.
2096+
2097+.. option:: --rsync
2098+
2099+ Use the :program:`rsync` utility to optimize local file
2100+ transfers. When this option is specified, :program:`innobackupex`
2101+ uses :program:`rsync` to copy all non-InnoDB files instead of
2102+ spawning a separate :program:`cp` for each file, which can be much
2103+ faster for servers with a large number of databases or tables. This
2104+ option cannot be used together with :option:`--remote-host` or
2105+ :option:`--stream`.
2106
2107=== added file 'doc/source/innobackupex/innobackupex_script.rst'
2108--- doc/source/innobackupex/innobackupex_script.rst 1970-01-01 00:00:00 +0000
2109+++ doc/source/innobackupex/innobackupex_script.rst 2012-02-16 17:09:19 +0000
2110@@ -0,0 +1,72 @@
2111+=========================
2112+ The innobackupex Script
2113+=========================
2114+
2115+The |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.
2116+
2117+We 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.
2118+
2119+This manual section explains how to use |innobackupex| in detail.
2120+
2121+Prerequisites
2122+=============
2123+
2124+.. toctree::
2125+ :maxdepth: 1
2126+
2127+ privileges
2128+
2129+
2130+The Backup Cycle - Full Backups
2131+===============================
2132+
2133+.. toctree::
2134+ :maxdepth: 1
2135+
2136+ creating_a_backup_ibk
2137+ preparing_a_backup_ibk
2138+ restoring_a_backup_ibk
2139+
2140+Other Types of Backups
2141+======================
2142+
2143+.. toctree::
2144+ :maxdepth: 1
2145+
2146+ incremental_backups_innobackupex
2147+ partial_backups_innobackupex
2148+
2149+Proficiency
2150+===========
2151+
2152+.. toctree::
2153+ :maxdepth: 1
2154+
2155+ streaming_backups_innobackupex
2156+ replication_ibk
2157+ parallel_copy_ibk
2158+ throttling_ibk
2159+ remote_backups_ibk
2160+ importing_exporting_tables_ibk
2161+ pit_recovery_ibk
2162+
2163+
2164+.. performance_tunning_innobackupex
2165+
2166+Implementation
2167+==============
2168+
2169+.. toctree::
2170+ :maxdepth: 1
2171+
2172+ how_innobackupex_works
2173+
2174+
2175+References
2176+==========
2177+
2178+.. toctree::
2179+ :maxdepth: 1
2180+
2181+ innobackupex_option_reference
2182+
2183
2184=== added file 'doc/source/innobackupex/parallel_copy_ibk.rst'
2185--- doc/source/innobackupex/parallel_copy_ibk.rst 1970-01-01 00:00:00 +0000
2186+++ doc/source/innobackupex/parallel_copy_ibk.rst 2012-02-16 17:09:19 +0000
2187@@ -0,0 +1,18 @@
2188+.. _parallel-ibk:
2189+
2190+=============================================
2191+ Accelerating with :option:`--parallel` copy
2192+=============================================
2193+
2194+When 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.
2195+
2196+To 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.
2197+
2198+
2199+As 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).
2200+
2201+If the data is stored on a single file, this option will have no effect.
2202+
2203+To use this feature, simply add the option to a local backup, for example: ::
2204+
2205+ $ innobackupex --parallel /path/to/backup
2206
2207=== added file 'doc/source/innobackupex/partial_backups_innobackupex.rst'
2208--- doc/source/innobackupex/partial_backups_innobackupex.rst 1970-01-01 00:00:00 +0000
2209+++ doc/source/innobackupex/partial_backups_innobackupex.rst 2012-02-16 17:09:19 +0000
2210@@ -0,0 +1,88 @@
2211+=================
2212+ Partial Backups
2213+=================
2214+
2215+|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>`.
2216+
2217+There 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.
2218+
2219+Creating Partial Backups
2220+========================
2221+
2222+There 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`).
2223+
2224+Using the :option:`--include` option
2225+------------------------------------
2226+
2227+The regular expression provided to this will be matched against the fully qualified tablename, including the database name, in the form ``databasename.tablename``.
2228+
2229+For example, ::
2230+
2231+ $ innobackupex --include='^mydatabase[.]mytable' /path/to/backup
2232+
2233+will create a timestamped directory with the usual files that |innobackupex| creates, but only the data files related to the tables matched.
2234+
2235+Note 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.
2236+
2237+Using the :option:`--tables-file` option
2238+----------------------------------------
2239+
2240+The text file provided (the path) to this option can contain multiple table names, one per line, in the ``databasename.tablename`` format.
2241+
2242+For example, ::
2243+
2244+ $ echo "mydatabase.mytable" > /tmp/tables.txt
2245+ $ innobackupex --tables-file=/tmp/tables.txt /path/to/backup
2246+
2247+will 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.
2248+
2249+This 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.
2250+
2251+
2252+Using the :option:`--databases` option
2253+--------------------------------------
2254+
2255+This 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.
2256+
2257+For example, ::
2258+
2259+ $ innobackupex --databases="mydatabase.mytable mysql" /path/to/backup
2260+
2261+will 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.
2262+
2263+Preparing Partial Backups
2264+=========================
2265+
2266+For preparing partial backups, the procedure is analogous to :doc:`exporting tables <importing_exporting_tables_ibk>` : apply the logs and use the :option:`--export` option::
2267+
2268+ $ innobackupex --apply-log --export /path/to/partial/backup
2269+
2270+You 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::
2271+
2272+ 111225 0:54:06 InnoDB: Error: table 'mydatabase/mytablenotincludedinpartialb'
2273+ InnoDB: in InnoDB data dictionary has tablespace id 6,
2274+ InnoDB: but tablespace with that id or name does not exist. It will be removed from data dictionary.
2275+
2276+You 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::
2277+
2278+ xtrabackup: export option is specified.
2279+ xtrabackup: export metadata of table 'employees/departments' to file `.//departments.exp` (2 indexes)
2280+ xtrabackup: name=PRIMARY, id.low=80, page=3
2281+ xtrabackup: name=dept_name, id.low=81, page=4
2282+
2283+Note 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.
2284+
2285+Finally, check the for the confirmation message in the output::
2286+
2287+ 111225 00:54:18 innobackupex: completed OK!
2288+
2289+
2290+Restoring Partial Backups
2291+=========================
2292+
2293+Restoring should be done by :doc:`importing the tables <importing_exporting_tables_ibk>` in the partial backup to the server.
2294+
2295+Although 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)...
2296+
2297+
2298+
2299
2300=== added file 'doc/source/innobackupex/pit_recovery_ibk.rst'
2301--- doc/source/innobackupex/pit_recovery_ibk.rst 1970-01-01 00:00:00 +0000
2302+++ doc/source/innobackupex/pit_recovery_ibk.rst 2012-02-16 17:09:19 +0000
2303@@ -0,0 +1,65 @@
2304+========================
2305+ Point-In-Time recovery
2306+========================
2307+
2308+Recovering up to particular moment in database's history can be done with |innobackupex| and the binary logs of the server.
2309+
2310+Note 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.
2311+
2312+For taking the snapshot, we will use |innobackupex| for a full backup::
2313+
2314+ $ innobackupex /path/to/backup --no-timestamp
2315+
2316+(the :option:`--no-timestamp` option is for convenience in this example) and we will prepare it to be ready for restoration: ::
2317+
2318+ $ innobackupex --apply-log /path/to/backup
2319+
2320+For more details on these procedures, see :doc:`creating_a_backup_ibk` and :doc:`preparing_a_backup_ibk`.
2321+
2322+Now, 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.
2323+
2324+To find out what is the situation of binary logging in the server, execute the following queries: ::
2325+
2326+ mysql> SHOW BINARY LOGS;
2327+ +------------------+-----------+
2328+ | Log_name | File_size |
2329+ +------------------+-----------+
2330+ | mysql-bin.000001 | 126 |
2331+ | mysql-bin.000002 | 1306 |
2332+ | mysql-bin.000003 | 126 |
2333+ | mysql-bin.000004 | 497 |
2334+ +------------------+-----------+
2335+
2336+and ::
2337+
2338+ mysql> SHOW MASTER STATUS;
2339+ +------------------+----------+--------------+------------------+
2340+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
2341+ +------------------+----------+--------------+------------------+
2342+ | mysql-bin.000004 | 497 | | |
2343+ +------------------+----------+--------------+------------------+
2344+
2345+The 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).
2346+
2347+To find out the position of the snapshot taken, see the :file:`xtrabackup_binlog_info` at the backup's directory: ::
2348+
2349+ $ cat /path/to/backup/xtrabackup_binlog_info
2350+ mysql-bin.000003 57
2351+
2352+This 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: ::
2353+
2354+ $ innobackupex --copy-back /path/to/backup
2355+
2356+As 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 ::
2357+
2358+ $ mysqlbinlog /path/to/datadir/mysql-bin.000003 /path/to/datadir/mysql-bin.000004 \
2359+ --start-position=57 > mybinlog.sql
2360+
2361+Note 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.
2362+
2363+Inspect 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``::
2364+
2365+ $ mysqlbinlog /path/to/datadir/mysql-bin.000003 /path/to/datadir/mysql-bin.000004 \
2366+ --start-position=57 --stop-datetime="11-12-25 01:00:00" | mysql -u root -p
2367+
2368+and the database will be rolled forward up to that Point-In-Time.
2369
2370=== added file 'doc/source/innobackupex/preparing_a_backup_ibk.rst'
2371--- doc/source/innobackupex/preparing_a_backup_ibk.rst 1970-01-01 00:00:00 +0000
2372+++ doc/source/innobackupex/preparing_a_backup_ibk.rst 2012-02-16 17:09:19 +0000
2373@@ -0,0 +1,36 @@
2374+=============================================
2375+ Preparing a Full Backup with |innobackupex|
2376+=============================================
2377+
2378+After 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.
2379+
2380+To prepare a backup with |innobackupex| you have to use the :option:`--apply-log` and the path to the backup directory as an argument::
2381+
2382+ $ innobackupex --apply-log /path/to/BACKUP-DIR
2383+
2384+and check the last line of the output for a confirmation on the process::
2385+
2386+ 111225 1:01:57 InnoDB: Shutdown completed; log sequence number 1609228
2387+ 111225 01:01:57 innobackupex: completed OK!
2388+
2389+If it succeeded, |innobackupex| performed all operations needed, leaving the data ready to use immediately.
2390+
2391+Under the hood
2392+==============
2393+reading the configuration from the files in the backup directory,
2394+
2395+|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.
2396+
2397+This 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>`.
2398+
2399+Note 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`.
2400+
2401+Other options to consider
2402+=========================
2403+
2404+The :option:`--use-memory` option
2405+---------------------------------
2406+
2407+The 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::
2408+
2409+ $ innobackupex --apply-log --use-memory=4G /path/to/BACKUP-DIR
2410
2411=== added file 'doc/source/innobackupex/privileges.rst'
2412--- doc/source/innobackupex/privileges.rst 1970-01-01 00:00:00 +0000
2413+++ doc/source/innobackupex/privileges.rst 2012-02-16 17:09:19 +0000
2414@@ -0,0 +1,66 @@
2415+==================================
2416+ Connection and Privileges Needed
2417+==================================
2418+
2419+|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.
2420+
2421+Privileges 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**.
2422+
2423+Permissions 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**.
2424+
2425+Whether |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.
2426+
2427+All 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.
2428+
2429+Connecting to the server
2430+========================
2431+
2432+The database user used to connect to the server and its password are specified by the :option:`--user` and :option:`--password` option, ::
2433+
2434+ $ innobackupex --user=DBUSER --password=SECRET /path/to/backup/dir/
2435+ $ innobackupex --user=LUKE --password=US3TH3F0RC3 --stream=tar ./ | bzip2 -
2436+ $ xtrabackup --user=DVADER --password=14MY0URF4TH3R --backup --target-dir=/data/bkps/
2437+
2438+If you don't use the :option:`--user` option, |XtraBackup| will assume the database user whose name is the system user executing it.
2439+
2440+Other Connection Options
2441+------------------------
2442+
2443+According to your system, you may need to specify one or more of the following options to connect to the server:
2444+
2445+=============== ===================================================================
2446+Option Description
2447+=============== ===================================================================
2448+--port The port to use when connecting to the database server with TCP/IP.
2449+--socket The socket to use when connecting to the local database.
2450+--host The host to use when connecting to the database server with TCP/IP.
2451+=============== ===================================================================
2452+
2453+These options are passed to the :command:`mysql` child process without alteration, see :option:`mysql --help` for details.
2454+
2455+Permissions and Privileges Needed
2456+=================================
2457+
2458+
2459+Once 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`.
2460+
2461+The database user needs the following privileges on the tables / databases to be backed up:
2462+
2463+ * ``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
2464+
2465+ * ``REPLICATION CLIENT`` in order to obtain the binary log position,
2466+
2467+ * ``CREATE TABLESPACE`` in order to import tables (see :ref:`imp_exp_ibk`) and
2468+
2469+ * ``SUPER`` in order to start/stop the slave threads in a replication environment.
2470+
2471+The explanation of when these are used can be found in :ref:`how_ibk_works`.
2472+
2473+An SQL example of creating a database user with the minimum privileges required to full backups would be:
2474+
2475+.. code-block:: sql
2476+
2477+ mysql> CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 's3cret';
2478+ mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'bkpuser';
2479+ mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'bkpuser'@'localhost';
2480+ mysql> FLUSH PRIVILEGES;
2481
2482=== added file 'doc/source/innobackupex/remote_backups_ibk.rst'
2483--- doc/source/innobackupex/remote_backups_ibk.rst 1970-01-01 00:00:00 +0000
2484+++ doc/source/innobackupex/remote_backups_ibk.rst 2012-02-16 17:09:19 +0000
2485@@ -0,0 +1,18 @@
2486+=====================================================
2487+ Sending Backups to Remote Hosts with |innobackupex|
2488+=====================================================
2489+
2490+Besides 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` ::
2491+
2492+ $ innobackupex --remote-host=REMOTEUSER@REMOTEHOST /path/IN/REMOTE/HOST/to/backup/
2493+
2494+|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`
2495+
2496+.. warning:: The path you provide for storing the backup will be created at ``REMOTEHOST``, not at the local host.
2497+
2498+Then 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::
2499+
2500+ $ innobackupex --remote-host=REMOTEUSER@REMOTEHOST /path/IN/REMOTE/HOST/to/backup/ \
2501+ --tmpdir=/tmp --options-scp="-Cp -c arcfour"
2502+
2503+
2504
2505=== added file 'doc/source/innobackupex/replication_ibk.rst'
2506--- doc/source/innobackupex/replication_ibk.rst 1970-01-01 00:00:00 +0000
2507+++ doc/source/innobackupex/replication_ibk.rst 2012-02-16 17:09:19 +0000
2508@@ -0,0 +1,19 @@
2509+============================================
2510+ Taking Backups in Replication Environments
2511+============================================
2512+
2513+There are options specific to backing up servers in a replication environments.
2514+
2515+The :option:`--slave-info` option
2516+=================================
2517+
2518+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`` statement.
2519+
2520+This 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`.
2521+
2522+The :option:`--safe-slave-backup` option
2523+========================================
2524+
2525+In 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.
2526+
2527+Using this option is always recommended when taking backups from a slave server.
2528
2529=== added file 'doc/source/innobackupex/restoring_a_backup_ibk.rst'
2530--- doc/source/innobackupex/restoring_a_backup_ibk.rst 1970-01-01 00:00:00 +0000
2531+++ doc/source/innobackupex/restoring_a_backup_ibk.rst 2012-02-16 17:09:19 +0000
2532@@ -0,0 +1,20 @@
2533+=============================================
2534+ Restoring a Full Backup with |innobackupex|
2535+=============================================
2536+
2537+For convenience, |innobackupex| has a :option:`--copy-back` option, which performs the restoration of a backup to the server's :term:`datadir` ::
2538+
2539+ $ innobackupex --copy-back /path/to/BACKUP-DIR
2540+
2541+It 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::
2542+
2543+ innobackupex: Finished copying back files.
2544+
2545+ 111225 01:08:13 innobackupex: completed OK!
2546+
2547+
2548+As 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::
2549+
2550+ $ chown -R mysql:mysql /var/lib/mysql
2551+
2552+Also 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`.
2553
2554=== added file 'doc/source/innobackupex/streaming_backups_innobackupex.rst'
2555--- doc/source/innobackupex/streaming_backups_innobackupex.rst 1970-01-01 00:00:00 +0000
2556+++ doc/source/innobackupex/streaming_backups_innobackupex.rst 2012-02-16 17:09:19 +0000
2557@@ -0,0 +1,34 @@
2558+===================================
2559+ Streaming and Compressing Backups
2560+===================================
2561+
2562+Streaming mode, supported by |XtraBackup|, sends backup to ``STDOUT`` in special ``tar`` format instead of copying files to the backup directory.
2563+
2564+This 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.
2565+
2566+.. warning:: If both --stream and --incremental are passed to innobackupex, the incremental parameters are ignored and a full backup is created.
2567+
2568+To 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::
2569+
2570+ $ innobackupex --stream=tar /tmp
2571+
2572+|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.
2573+
2574+To store the backup in one archive it directly ::
2575+
2576+ $ innobackupex --stream=tar /root/backup/ > /root/backup/out.tar
2577+
2578+For sending it directly to another host by ::
2579+
2580+ $ innobackupex --stream=tar ./ | ssh user@destination \ "cat - > /data/backups/backup.tar"
2581+
2582+.. warning:: To extract |XtraBackup| 's archive you **must** use |tar| with ``-i`` option::
2583+
2584+ $ tar -xizf backup.tar.gz
2585+
2586+Choosing the compression tool that best suits you: ::
2587+
2588+ $ innobackupex --stream=tar ./ | gzip - > backup.tar.gz
2589+ $ innobackupex --stream=tar ./ | bzip2 - > backup.tar.bz2
2590+
2591+Note that the streamed backup will need to be prepared before restoration. Streaming mode does not prepare the backup.
2592
2593=== added file 'doc/source/innobackupex/throttling_ibk.rst'
2594--- doc/source/innobackupex/throttling_ibk.rst 1970-01-01 00:00:00 +0000
2595+++ doc/source/innobackupex/throttling_ibk.rst 2012-02-16 17:09:19 +0000
2596@@ -0,0 +1,11 @@
2597+========================================
2598+ Throttling backups with |innobackupex|
2599+========================================
2600+
2601+Although |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.
2602+
2603+This 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.
2604+
2605+One 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.
2606+
2607+The :option:`--throttle` option is somehow similar to the ``--sleep`` option in ``mysqlbackup`` and should be used instead of it, as ``--sleep`` will be ignored.
2608
2609=== added directory 'doc/source/installation'
2610=== added file 'doc/source/installation.rst'
2611--- doc/source/installation.rst 1970-01-01 00:00:00 +0000
2612+++ doc/source/installation.rst 2012-02-16 17:09:19 +0000
2613@@ -0,0 +1,33 @@
2614+=======================================
2615+ Installing |XtraBackup| from Binaries
2616+=======================================
2617+
2618+Before installing, you might want to read the :doc:`release-notes`.
2619+
2620+Ready-to-use binaries are available from the |XtraBackup| `download page <http://www.percona.com/downloads/XtraBackup/>`_, including:
2621+
2622+ * ``RPM`` packages for *RHEL* 5 and *RHEL* 6 (including compatible distributions such as CentOS and Oracle Enterprise Linux)
2623+
2624+ * *Debian* packages for *Debian* and *Ubuntu*
2625+
2626+ * Generic ``.tar.gz`` binary packages
2627+
2628+Using Percona Software Repositories
2629+===================================
2630+
2631+.. toctree::
2632+ :maxdepth: 1
2633+
2634+ installation/apt_repo
2635+ installation/yum_repo
2636+
2637+|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.
2638+
2639+This is the recommend way of installing where possible.
2640+
2641+.. Installing on Windows
2642+.. =====================
2643+
2644+.. 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.
2645+
2646+.. 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.
2647
2648=== added file 'doc/source/installation/apt_repo.rst'
2649--- doc/source/installation/apt_repo.rst 1970-01-01 00:00:00 +0000
2650+++ doc/source/installation/apt_repo.rst 2012-02-16 17:09:19 +0000
2651@@ -0,0 +1,50 @@
2652+===================================
2653+ Percona :program:`apt` Repository
2654+===================================
2655+
2656+*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: ::
2657+
2658+ $ gpg --keyserver hkp://keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
2659+ ... [some output removed] ...
2660+ gpg: imported: 1
2661+
2662+ $ gpg -a --export CD2EFD2A | sudo apt-key add -
2663+
2664+Add this to :file:`/etc/apt/sources.list`, replacing ``lenny`` with the name of your distribution: ::
2665+
2666+ deb http://repo.percona.com/apt lenny main
2667+ deb-src http://repo.percona.com/apt lenny main
2668+
2669+Remember to update the local cache: ::
2670+
2671+ $ apt-get update
2672+
2673+Supported Architectures
2674+=======================
2675+
2676+ * x86_64 (also known as amd64)
2677+ * x86
2678+
2679+Supported Releases
2680+==================
2681+
2682+Debian
2683+------
2684+
2685+ * 5.0 lenny
2686+ * 6.0 squeeze
2687+
2688+Ubuntu
2689+------
2690+
2691+ * 10.04LTS lucid
2692+ * 11.04 natty
2693+ * 11.10 oneiric
2694+
2695+Release Candidate Repository
2696+============================
2697+
2698+To 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: ::
2699+
2700+ deb http://repo.percona.com/apt-rc lenny main
2701+ deb-src http://repo.percona.com/apt-rc lenny main
2702
2703=== added file 'doc/source/installation/compiling_xtrabackup.rst'
2704--- doc/source/installation/compiling_xtrabackup.rst 1970-01-01 00:00:00 +0000
2705+++ doc/source/installation/compiling_xtrabackup.rst 2012-02-16 17:09:19 +0000
2706@@ -0,0 +1,67 @@
2707+===========================================
2708+ Compiling and Installing from Source Code
2709+===========================================
2710+
2711+The 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: ::
2712+
2713+ bzr branch lp:percona-xtrabackup/1.6
2714+
2715+or ::
2716+
2717+ bzr branch lp:percona-xtrabackup
2718+
2719+You should then have a directory named after the release you branched, such as ``percona-xtrabackup``.
2720+
2721+
2722+Compiling on Linux
2723+==================
2724+
2725+Prerequisites
2726+-------------
2727+
2728+The following packages and tools must be installed to compile *Percona XtraBackup* from source. These might vary from system to system.
2729+
2730+In Debian-based distributions, you need to: ::
2731+
2732+ $ apt-get install build-essential flex bison automake autoconf bzr \
2733+ libtool cmake libaio-dev mysql-client libncurses-dev zlib1g-dev
2734+
2735+In ``RPM``-based distributions, you need to: ::
2736+
2737+ $ yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr \
2738+ bison libtool ncurses5-devel
2739+
2740+Compiling with :command:`build.sh`
2741+----------------------------------
2742+
2743+Once 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.
2744+
2745+The script needs the codebase for which the building is targeted, you must provide it with one of the following values or aliases:
2746+
2747+ ================== ========= ============================================
2748+ Value Alias Server
2749+ ================== ========= ============================================
2750+ innodb51_builtin 5.1 build against built-in InnoDB in MySQL 5.1
2751+ innodb51 plugin build agsinst InnoDB plugin in MySQL 5.1
2752+ innodb55 5.5 build against InnoDB in MySQL 5.5
2753+ xtradb51 xtradb build against Percona Server with XtraDB 5.1
2754+ xtradb55 xtradb55 build against Percona Server with XtraDB 5.5
2755+ ================== ========= ============================================
2756+
2757+Note 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.
2758+
2759+At the base directory of the downloaded source code, if you execute ::
2760+
2761+ $ AUTO_DOWNLOAD="yes" ./utils/build.sh xtradb
2762+
2763+and 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:
2764+
2765+ ================== =====================================================
2766+ Target Location
2767+ ================== =====================================================
2768+ innodb51_builtin mysql-5.1/storage/innobase/xtrabackup
2769+ innodb51 mysql-5.1/storage/innodb_plugin/xtrabackup
2770+ innodb55 mysql-5.5/storage/innobase/xtrabackup
2771+ xtradb51 Percona-Server-5.1/storage/innodb_plugin/xtrabackup
2772+ xtradb55 Percona-Server-5.5/storage/innobase/xtrabackup
2773+ ================== =====================================================
2774
2775=== added file 'doc/source/installation/yum_repo.rst'
2776--- doc/source/installation/yum_repo.rst 1970-01-01 00:00:00 +0000
2777+++ doc/source/installation/yum_repo.rst 2012-02-16 17:09:19 +0000
2778@@ -0,0 +1,77 @@
2779+===================================
2780+ Percona :program:`yum` Repository
2781+===================================
2782+
2783+The |Percona| :program:`yum` repository supports popular *RPM*-based operating systems, including the *Amazon Linux AMI*.
2784+
2785+The 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.
2786+
2787+Automatic Installation
2788+======================
2789+
2790+Execute the following command as a ``root`` user, replacing ``x86_64`` with ``i386`` if you are not running a 64-bit operating system: ::
2791+
2792+ $ rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm
2793+
2794+You should see some output such as the following: ::
2795+
2796+ Retrieving http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm
2797+ Preparing... ########################################### [100%]
2798+ 1:percona-release ########################################### [100%]
2799+
2800+The RPMs for the automatic installation are available at http://www.percona.com/downloads/percona-release/ and include source code.
2801+
2802+Manual Installation
2803+===================
2804+
2805+To install the repository manually, place the following into a new file named :file:`/etc/yum.repos.d/Percona.repo`: ::
2806+
2807+ [percona]
2808+ name = CentOS $releasever - Percona
2809+ baseurl=http://repo.percona.com/centos/$releasever/os/$basearch/
2810+ enabled = 1
2811+ gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona
2812+ gpgcheck = 1
2813+
2814+Also, 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`.
2815+
2816+Testing The Repository
2817+======================
2818+
2819+Make sure packages are downloaded from the repository, by executing the following command as root: ::
2820+
2821+ yum list | grep percona
2822+
2823+You should see output similar to the following: ::
2824+
2825+ percona-release.x86_64 0.0-1 installed
2826+ ...
2827+ Percona-Server-client-51.x86_64 5.1.47-rel11.1.51.rhel5 percona
2828+ Percona-Server-devel-51.x86_64 5.1.47-rel11.1.51.rhel5 percona
2829+ Percona-Server-server-51.x86_64 5.1.47-rel11.1.51.rhel5 percona
2830+ Percona-Server-shared-51.x86_64 5.1.47-rel11.1.51.rhel5 percona
2831+ Percona-Server-test-51.x86_64 5.1.47-rel11.1.51.rhel5 percona
2832+ ...
2833+ xtrabackup.x86_64 1.2-22.rhel5 percona
2834+
2835+Supported Platforms
2836+===================
2837+
2838+ * ``x86_64``
2839+ * ``i386``
2840+
2841+Supported Releases
2842+==================
2843+
2844+The *CentOS* repositories should work well with *Red Hat Enterprise Linux* too, provided that :program:`yum` is installed on the server.
2845+
2846+* *CentOS* 5 and *RHEL* 5
2847+* *CentOS* 6 and *RHEL* 6
2848+* *Amazon Linux AMI* (works the same as *CentOS* 5)
2849+
2850+Release Candidate Repository
2851+============================
2852+
2853+To subscribe to the release candidate repository, install the release candidate (RC) *RPM*: ::
2854+
2855+ rpm -Uhv http://www.percona.com/downloads/percona-release/percona-rc-0.0-2.x86_64.rpm
2856
2857=== added file 'doc/source/intro.rst'
2858--- doc/source/intro.rst 1970-01-01 00:00:00 +0000
2859+++ doc/source/intro.rst 2012-02-16 17:09:19 +0000
2860@@ -0,0 +1,165 @@
2861+==========================
2862+ About Percona Xtrabackup
2863+==========================
2864+
2865+
2866+*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:
2867+
2868+* Backups that complete quickly and reliably
2869+
2870+* Uninterrupted transaction processing during backups
2871+
2872+* Savings on disk space and network bandwidth
2873+
2874+* Automatic backup verification
2875+
2876+* Higher uptime due to faster restore time
2877+
2878+|XtraBackup| makes |MySQL| hot backups for all versions of |Percona Server|, |MySQL|, |MariaDB|, and |Drizzle|. It performs streaming, compressed, and incremental |MySQL| backups.
2879+
2880+|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.
2881+
2882+|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.
2883+
2884+MySQL Backup Tool Feature Comparison
2885+====================================
2886+
2887+.. raw:: html
2888+
2889+ <table class="datatable" style="text-align: center;">
2890+ <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>
2891+ <tr><td class="label">License</td><td style="text-align: center;">GPL</td><td style="text-align: center;">Proprietary</td></tr>
2892+ <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>
2893+ <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>
2894+ <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>
2895+ <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>
2896+ <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>
2897+ <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>
2898+ <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>
2899+ <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>
2900+ <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>
2901+ <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>
2902+ <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>
2903+ <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>
2904+ <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>
2905+ <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>
2906+ <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>
2907+ <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>
2908+ <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>
2909+ </tbody></table>
2910+
2911+
2912+.. .. tabularcolumns:: |l|c|c|
2913+
2914+
2915+.. .. list-table:: MySQL Backup Tool Feature Comparison
2916+.. :header-rows: 1
2917+
2918+.. * - Feature
2919+.. - Percona XtraBackup
2920+.. - MySQL Enterprise Backup (InnoDB Hot Backup)
2921+.. * - License
2922+.. - GPL
2923+.. - Proprietary
2924+.. * - Price
2925+.. - Free
2926+.. - $5000 per server
2927+.. * - Open source
2928+.. - |yes|
2929+.. -
2930+.. * - Non-blocking
2931+.. - |yes|
2932+.. - |yes|
2933+.. * - InnoDB backups
2934+.. - |yes|
2935+.. - |yes|
2936+.. * - MyISAM backups [#f1]_
2937+.. - |yes|
2938+.. - |yes|
2939+.. * - Compressed backups
2940+.. - |yes|
2941+.. - |yes|
2942+.. * - Partial backups
2943+.. - |yes|
2944+.. - |yes|
2945+.. * - Throttling [#f2]_
2946+.. - |yes|
2947+.. - |yes|
2948+.. * - Point-in-time recovery support
2949+.. - |yes|
2950+.. - |yes|
2951+.. * - Incremental backups
2952+.. - |yes|
2953+.. - |yes|
2954+.. * - Parallel backups [#f3]_
2955+.. - |yes|
2956+.. -
2957+.. * - Streaming backups
2958+.. - |yes|
2959+.. -
2960+.. * - OS buffer optimizations [#f4]_
2961+.. - |yes|
2962+.. -
2963+.. * - Export individual tables
2964+.. - |yes|
2965+.. -
2966+.. * - Restore tables to a different server
2967+.. - |yes|
2968+.. -
2969+.. * - Analyze data & index files
2970+.. - |yes|
2971+.. -
2972+.. * - Familiar command-line behavior [#f5]_
2973+.. - |yes|
2974+.. -
2975+
2976+.. .. |yes| image:: check-yes.png
2977+
2978+.. License GPL Proprietary
2979+.. Price Free $5000 per server
2980+.. Open source Yes
2981+.. Non-blocking Yes Yes
2982+.. InnoDB backups Yes Yes
2983+.. MyISAM backups [#f1]_ Yes Yes
2984+.. Compressed backups Yes Yes
2985+.. Partial backups Yes Yes
2986+.. Throttling [#f2]_ Yes Yes
2987+.. Point-in-time recovery support Yes Yes
2988+.. Incremental backups Yes Yes
2989+.. Parallel backups [#f3]_ Yes
2990+.. Streaming backups Yes
2991+.. OS buffer optimizations [#f4]_ Yes
2992+.. Export individual tables Yes
2993+.. Restore tables to a different server Yes
2994+.. Analyze data & index files Yes
2995+.. Familiar command-line behavior [#f5]_ Yes
2996+.. ======================================== =================== =========================
2997+
2998+The above comparison is based on XtraBackup version 1.4 and MySQL Enterprise Backup version 3.5 on December 7, 2010.
2999+
3000+
3001+What are the features of Percona XtraBackup?
3002+============================================
3003+
3004+Here is a short list of |XtraBackup| features. See the documentation for more.
3005+
3006+* Ceate hot |InnoDB| backups without pausing your database
3007+* Make incremental backups of |MySQL|
3008+* Stream compressed |MySQL| backups to another server
3009+* Move tables between |MySQL| servers online
3010+* Create new |MySQL| replication slaves easily
3011+* Backup |MySQL| without adding load to the server
3012+
3013+
3014+
3015+.. rubric:: Footnotes
3016+
3017+.. [#note-1] |MyISAM| backups require a table lock.
3018+
3019+.. [#note-2] |XtraBackup| performs throttling based on the number of IO operations per second. *MySQL Enterprise Backup* supports a configurable sleep time between operations.
3020+
3021+.. [#note-3] |XtraBackup| tunes the operating system buffers to avoid swapping. See the documentation.
3022+
3023+.. [#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.
3024+
3025+
3026
3027=== added file 'doc/source/manual.rst'
3028--- doc/source/manual.rst 1970-01-01 00:00:00 +0000
3029+++ doc/source/manual.rst 2012-02-16 17:09:19 +0000
3030@@ -0,0 +1,27 @@
3031+.. _user-manual:
3032+
3033+==================================
3034+ *Percona XtraBackup* User Manual
3035+==================================
3036+
3037+.. toctree::
3038+ :maxdepth: 1
3039+ :hidden:
3040+
3041+ innobackupex/innobackupex_script
3042+ xtrabackup_bin/xtrabackup_binary
3043+ tar4ibd/tar4ibd_binary
3044+ how_xtrabackup_works
3045+
3046+|XtraBackup| is really a set of three tools:
3047+
3048+:doc:`innobackupex <innobackupex/innobackupex_script>`
3049+ a wrapper script that provides functionality to backup a whole |MySQL| database instance with :term:`MyISAM`, :term:`InnoDB`, and :term:`XtraDB` tables.
3050+
3051+:doc:`xtrabackup <xtrabackup_bin/xtrabackup_binary>`
3052+ a compiled *C* binary, which copies only :term:`InnoDB` and :term:`XtraDB` data
3053+
3054+:doc:`tar4ibd <tar4ibd/tar4ibd_binary>`
3055+ tars |InnoDB| data safely.
3056+
3057+It 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.
3058
3059=== added directory 'doc/source/percona-theme'
3060=== added file 'doc/source/percona-theme/layout.html'
3061--- doc/source/percona-theme/layout.html 1970-01-01 00:00:00 +0000
3062+++ doc/source/percona-theme/layout.html 2012-02-16 17:09:19 +0000
3063@@ -0,0 +1,473 @@
3064+{#
3065+ basic/layout.html
3066+ ~~~~~~~~~~~~~~~~~
3067+
3068+ Master layout template for Sphinx themes.
3069+
3070+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
3071+ :license: BSD, see LICENSE for details.
3072+#}
3073+{%- block doctype -%}
3074+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3075+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3076+{%- endblock %}
3077+{%- set reldelim1 = reldelim1 is not defined and ' &raquo;' or reldelim1 %}
3078+{%- set reldelim2 = reldelim2 is not defined and ' |' or reldelim2 %}
3079+{%- set render_sidebar = (not embedded) and (not theme_nosidebar|tobool) and
3080+ (sidebars != []) %}
3081+{%- set url_root = pathto('', 1) %}
3082+{# XXX necessary? #}
3083+{%- if url_root == '#' %}{% set url_root = '' %}{% endif %}
3084+{%- if not embedded and docstitle %}
3085+ {%- set titlesuffix = " &mdash; "|safe + docstitle|e %}
3086+{%- else %}
3087+ {%- set titlesuffix = "" %}
3088+{%- endif %}
3089+
3090+{%- macro relbar() %}
3091+ <div class="related">
3092+ <h3>{{ _('Navigation') }}</h3>
3093+ <ul>
3094+ {%- for rellink in rellinks %}
3095+ <li class="right" {% if loop.first %}style="margin-right: 10px"{% endif %}>
3096+ <a href="{{ pathto(rellink[0]) }}" title="{{ rellink[1]|striptags|e }}"
3097+ {{ accesskey(rellink[2]) }}>{{ rellink[3] }}</a>
3098+ {%- if not loop.first %}{{ reldelim2 }}{% endif %}</li>
3099+ {%- endfor %}
3100+ {%- block rootrellink %}
3101+ <li><a href="{{ pathto(master_doc) }}">{{ shorttitle|e }}</a>{{ reldelim1 }}</li>
3102+ {%- endblock %}
3103+ {%- for parent in parents %}
3104+ <li><a href="{{ parent.link|e }}" {% if loop.last %}{{ accesskey("U") }}{% endif %}>{{ parent.title }}</a>{{ reldelim1 }}</li>
3105+ {%- endfor %}
3106+ {%- block relbaritems %} {% endblock %}
3107+ </ul>
3108+ </div>
3109+{%- endmacro %}
3110+
3111+{%- macro sidebar() %}
3112+ {%- if render_sidebar %}
3113+ <div class="sphinxsidebar">
3114+ <div class="sphinxsidebarwrapper">
3115+ {%- block sidebarlogo %}
3116+ {%- if logo %}
3117+ <p class="logo"><a href="{{ pathto(master_doc) }}">
3118+ <img class="logo" src="{{ pathto('_static/' + logo, 1) }}" alt="Logo"/>
3119+ </a></p>
3120+ {%- endif %}
3121+
3122+<div class="noborder" id="sidenavi">
3123+
3124+ <div class="sidebanner" id="sidebanner">
3125+ <div class="header"><a href="/contact/sales">Call Us</a></div>
3126+ <div class="numbers">
3127+ <div style="padding-bottom: 4px">
3128+ +1-888-316-9775 (USA - Sales)<br>
3129+ +1-208-473-2904 (USA - Sales)
3130+ </div>
3131+ <div>
3132+ +44-208-133-0309 (UK - Sales)
3133+ </div>
3134+ <div>
3135+ +1-888-488-8556 (Emergency)
3136+ </div>
3137+ </div>
3138+ </div>
3139+
3140+ <div id="sidefloater"></div>
3141+</div>
3142+
3143+ {%- endblock %}
3144+ {%- if sidebars != None %}
3145+ {#- new style sidebar: explicitly include/exclude templates #}
3146+ {%- for sidebartemplate in sidebars %}
3147+ {%- include sidebartemplate %}
3148+ {%- endfor %}
3149+ {%- else %}
3150+ {#- old style sidebars: using blocks -- should be deprecated #}
3151+ {%- block sidebartoc %}
3152+ {%- include "localtoc.html" %}
3153+ {%- endblock %}
3154+ {%- block sidebarrel %}
3155+ {%- include "relations.html" %}
3156+ {%- endblock %}
3157+ {%- block sidebarsourcelink %}
3158+ {%- include "sourcelink.html" %}
3159+ {%- endblock %}
3160+ {%- if customsidebar %}
3161+ {%- include customsidebar %}
3162+ {%- endif %}
3163+ {%- block sidebarsearch %}
3164+ {%- include "searchbox.html" %}
3165+ {%- endblock %}
3166+ {%- endif %}
3167+
3168+ </div>
3169+ </div>
3170+ {%- endif %}
3171+{%- endmacro %}
3172+
3173+{%- macro script() %}
3174+ <script type="text/javascript">
3175+ var DOCUMENTATION_OPTIONS = {
3176+ URL_ROOT: '{{ url_root }}',
3177+ VERSION: '{{ release|e }}',
3178+ COLLAPSE_INDEX: false,
3179+ FILE_SUFFIX: '{{ '' if no_search_suffix else file_suffix }}',
3180+ HAS_SOURCE: {{ has_source|lower }}
3181+ };
3182+ </script>
3183+ {%- for scriptfile in script_files %}
3184+ <script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script>
3185+ {%- endfor %}
3186+{%- endmacro %}
3187+
3188+{%- macro css() %}
3189+ <link rel="stylesheet" href="{{ pathto('_static/percona.com.css', 1) }}" type="text/css" />
3190+ <link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" />
3191+ <link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" />
3192+ {%- for cssfile in css_files %}
3193+ <link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" />
3194+ {%- endfor %}
3195+{%- endmacro %}
3196+
3197+<html xmlns="http://www.w3.org/1999/xhtml">
3198+ <head>
3199+ <meta http-equiv="Content-Type" content="text/html; charset={{ encoding }}" />
3200+ {{ metatags }}
3201+ {%- block htmltitle %}
3202+ <title>{{ title|striptags|e }}{{ titlesuffix }}</title>
3203+ {%- endblock %}
3204+
3205+ {{ css() }}
3206+ {%- if not embedded %}
3207+ {{ script() }}
3208+ {%- if use_opensearch %}
3209+ <link rel="search" type="application/opensearchdescription+xml"
3210+ title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}"
3211+ href="{{ pathto('_static/opensearch.xml', 1) }}"/>
3212+ {%- endif %}
3213+
3214+<script src="{{ pathto('_static/percona.com.js', 1)}}" type="text/javascript"></script>
3215+
3216+ {%- if favicon %}
3217+ <link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/>
3218+ {%- endif %}
3219+ {%- endif %}
3220+{%- block linktags %}
3221+ {%- if hasdoc('about') %}
3222+ <link rel="author" title="{{ _('About these documents') }}" href="{{ pathto('about') }}" />
3223+ {%- endif %}
3224+ {%- if hasdoc('genindex') %}
3225+ <link rel="index" title="{{ _('Index') }}" href="{{ pathto('genindex') }}" />
3226+ {%- endif %}
3227+ {%- if hasdoc('search') %}
3228+ <link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}" />
3229+ {%- endif %}
3230+ {%- if hasdoc('copyright') %}
3231+ <link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}" />
3232+ {%- endif %}
3233+ <link rel="top" title="{{ docstitle|e }}" href="{{ pathto('index') }}" />
3234+ {%- if parents %}
3235+ <link rel="up" title="{{ parents[-1].title|striptags|e }}" href="{{ parents[-1].link|e }}" />
3236+ {%- endif %}
3237+ {%- if next %}
3238+ <link rel="next" title="{{ next.title|striptags|e }}" href="{{ next.link|e }}" />
3239+ {%- endif %}
3240+ {%- if prev %}
3241+ <link rel="prev" title="{{ prev.title|striptags|e }}" href="{{ prev.link|e }}" />
3242+ {%- endif %}
3243+{%- endblock %}
3244+{%- block extrahead %} {% endblock %}
3245+ </head>
3246+ <body>
3247+
3248+{%- block header %}
3249+
3250+ <!-- <div id="stickywrapper"> -->
3251+ <!-- <div id="stickycontent"> -->
3252+ <div id="header"><div class="header">
3253+ <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>
3254+ <div class="right">
3255+ <div class="searchlink"><a onmouseover="SEARCH.Open()"><img id="searchlink-anchor" src="http://s2.percona.com/ui-search.png" alt="" /></a></div>
3256+ <span class="inv"><![CDATA[<noindex>]]></span>
3257+ <div class="navicontainer"><div class="navi">
3258+<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>
3259+ <span class="inv"><![CDATA[</noindex>]]></span>
3260+ </div>
3261+ </div></div>
3262+ <div id="stripe"></div>
3263+
3264+{% endblock %}
3265+
3266+ <!-- <div id="stripe"></div> -->
3267+
3268+{%- block content %}
3269+
3270+
3271+
3272+ {%- block sidebar1 %} {# possible location for sidebar #} {% endblock %}
3273+
3274+ <div class="document">
3275+
3276+
3277+
3278+ {%- block document %}
3279+ <div class="documentwrapper">
3280+ {%- if render_sidebar %}
3281+ <div class="bodywrapper">
3282+ {%- endif %}
3283+
3284+ {%- block relbar1 %}{{ relbar() }}{% endblock %}
3285+
3286+ <div class="body">
3287+ {% block body %} {% endblock %}
3288+ </div>
3289+
3290+ {%- block relbar2 %}{{ relbar() }}
3291+
3292+ {%- if render_sidebar %}
3293+ </div>
3294+ {%- endif %}
3295+
3296+
3297+
3298+ </div>
3299+
3300+ {%- endblock %}
3301+
3302+ {%- block sidebar2 %}{{ sidebar() }}{% endblock %}
3303+
3304+ <div class="clearer"></div>
3305+
3306+ {%- if last_updated %}
3307+ {% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %}
3308+ {%- endif %}
3309+
3310+ <div class="license">
3311+
3312+ {%- if show_copyright %}
3313+ {%- if hasdoc('copyright') %}
3314+ {% trans path=pathto('copyright'), copyright=copyright|e %}&copy; <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %}
3315+ {%- else %}
3316+ {% trans copyright=copyright|e %}&copy; Copyright {{ copyright }}.{% endtrans %}
3317+ {%- endif %}
3318+ {%- endif %}
3319+
3320+ <br />
3321+ Except where otherwise noted, this documentation is licensed under the following license:
3322+ <br />
3323+ <a class="urlextern" rel="license" href="http://creativecommons.org/licenses/by-sa/2.0/">
3324+ CC Attribution-ShareAlike 2.0 Generic</a><br />
3325+
3326+ {%- if show_sphinx %}
3327+ {% trans sphinx_version=sphinx_version|e %}Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> {{ sphinx_version }}.{% endtrans %}
3328+ {%- endif %}
3329+
3330+ </div>
3331+
3332+ </div>
3333+ {%- endblock %}
3334+
3335+ {% endblock %}
3336+
3337+{%- block footer %}
3338+
3339+ <div class="file-bugs">
3340+ This documentation is developed in Launchpad as part of the <a href="https://code.launchpad.net/percona-xtrabackup">XtraBackup source code</a>.</br>
3341+If 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>.
3342+ </div>
3343+
3344+ <div class="footer">
3345+
3346+ <div class="footer">
3347+ <div class="logo"><img width="110" height="25" alt="" src="{{ pathto('_static/ui-footer-logo.png', 1) }}">
3348+ </div>
3349+
3350+ <div class="text">
3351+ <span class="inv"><!--[CDATA[<noindex-->]]&gt;</span>
3352+ Call us: 1-888-316-9775 • <a href="/contact">Contact Us</a><br>
3353+ MySQL and InnoDB are trademarks of Oracle Corp.<br>
3354+ Proudly running <a href="/software/percona-server/">Percona Server<span id="recentServerVersion"></span></a><br>
3355+ Copyright &copy; 2006-2011 Percona Inc.<br>
3356+ <a href="/about-us/policies/">Copyright, Trademark, and Privacy Policy</a> • <a href="/sitemap/">Sitemap</a>
3357+ <span class="inv"><!--[CDATA[</noindex-->]]&gt;</span>
3358+ </div>
3359+ </div>
3360+
3361+ </div>
3362+{%- endblock %}
3363+<span class="inv"><!--[CDATA[<noindex-->]]&gt;</span>
3364+<div id="submenus">
3365+ <div class="navi-dropdown" id="navi-dropdown-about-us">
3366+ <div class="navi-dropdown-header-l"><!-- //--></div>
3367+ <div class="navi-dropdown-content">
3368+ <div class="item"><a href="http://www.percona.com/about-us/our-mission/">Our Mission</a></div>
3369+ <div class="item"><a href="http://www.percona.com/about-us/why-percona/">Why Percona?</a></div>
3370+ <div class="item"><a href="http://www.percona.com/about-us/procedures/">Coordinating with Percona</a></div>
3371+ <div class="item"><a href="http://www.percona.com/about-us/customers/">Customers</a></div>
3372+ <div class="item"><a href="http://www.percona.com/webinars/">Webinars</a></div>
3373+ <div class="item"><a href="http://www.percona.com/events/">Events</a></div>
3374+ <div class="item"><a href="http://www.percona.com/about-us/mysql-case-studies/">MySQL Case Studies</a></div>
3375+ <div class="item"><a href="http://www.percona.com/about-us/our-team/">Our Team</a></div>
3376+ <div class="item"><a href="http://www.percona.com/about-us/books/">Our Books</a></div>
3377+ <div class="item"><a href="http://www.percona.com/about-us/blogs/">Our Blogs</a></div>
3378+ <div class="item"><a href="http://www.percona.com/about-us/mysql-white-papers/">MySQL White Papers</a></div>
3379+ <div class="item"><a href="http://www.percona.com/about-us/conferences/">Conferences</a></div>
3380+ <div class="item"><a href="http://www.percona.com/about-us/presentations/">Presentations</a></div>
3381+ <div class="item"><a href="http://www.percona.com/about-us/newsletters/">Newsletters</a></div>
3382+ <div class="item"><a href="http://www.percona.com/about-us/pressreleases/">Press Releases</a></div>
3383+ <div class="item"><a href="http://www.percona.com/about-us/careers/">Careers</a></div>
3384+ </div>
3385+ <div class="navi-dropdown-footer"><!-- //--></div>
3386+ </div>
3387+ <div class="navi-dropdown" id="navi-dropdown-mysql-consulting">
3388+ <div class="navi-dropdown-header-l"><!-- //--></div>
3389+ <div class="navi-dropdown-content">
3390+ <div class="item"><a href="http://www.percona.com/mysql-consulting/overview/">MySQL Consulting Overview</a></div>
3391+ <div class="item"><a href="http://www.percona.com/mysql-consulting/architecture/">MySQL Architecture &amp; Design</a></div>
3392+ <div class="item"><a href="http://www.percona.com/mysql-consulting/mysql-backups/">MySQL Backups</a></div>
3393+ <div class="item"><a href="http://www.percona.com/mysql-consulting/cloud-computing/">MySQL Cloud Solutions</a></div>
3394+ <div class="item"><a href="http://www.percona.com/mysql-consulting/cluster/">MySQL Cluster Consulting</a></div>
3395+ <div class="item"><a href="http://www.percona.com/mysql-consulting/data-warehousing/">MySQL Data Warehousing</a></div>
3396+ <div class="item"><a href="http://www.percona.com/mysql-consulting/data-recovery/">MySQL Data Recovery</a></div>
3397+ <div class="item"><a href="http://www.percona.com/mysql-consulting/high-availability/">MySQL High Availability</a></div>
3398+ <div class="item"><a href="http://www.percona.com/mysql-consulting/mysql-monitoring-graphing/">MySQL Monitoring &amp; Graphing</a></div>
3399+ <div class="item"><a href="http://www.percona.com/mysql-consulting/mysql-onsite-consulting/">MySQL Onsite Consulting</a></div>
3400+ <div class="item"><a href="http://www.percona.com/mysql-consulting/performance-audit/">MySQL Performance Audit</a></div>
3401+ <div class="item"><a href="http://www.percona.com/mysql-consulting/remote-dba/">MySQL Remote DBA</a></div>
3402+ <div class="item"><a href="http://www.percona.com/mysql-consulting/mysql-replication/">MySQL Replication</a></div>
3403+ <div class="item"><a href="http://www.percona.com/mysql-consulting/upgrade/">MySQL Version Upgrades</a></div>
3404+ <div class="item"><a href="http://www.percona.com/mysql-consulting/24x7-emergency/">Emergency 24×7 Consulting</a></div>
3405+ <div class="item"><a href="http://www.percona.com/mysql-consulting/migration/">Migration to MySQL</a></div>
3406+ <div class="item"><a href="http://www.percona.com/drizzle-consulting/">Drizzle Consulting</a></div>
3407+ <div class="item"><a href="http://www.percona.com/mysql-consulting/sphinx/">Sphinx Consulting</a></div>
3408+ <div class="item"><a href="http://www.percona.com/mysql-consulting/drbd/">DRBD Consulting</a></div>
3409+ <div class="item"><a href="http://www.percona.com/mysql-consulting/memcached/">Memcached Consulting</a></div>
3410+ <div class="item"><a href="http://www.percona.com/mysql-consulting/other-services/">Other Consulting Services</a></div>
3411+ </div>
3412+ <div class="navi-dropdown-footer"><!-- //--></div>
3413+ </div>
3414+ <div class="navi-dropdown" id="navi-dropdown-support">
3415+ <div class="navi-dropdown-header-l"><!-- //--></div>
3416+ <div class="navi-dropdown-content">
3417+ <div class="item"><a href="http://www.percona.com/mysql-support/">Support for MySQL</a></div>
3418+ <div class="item"><a href="http://www.percona.com/mysql-support/tco-calculator/">Calculate your Savings</a></div>
3419+ <div class="item"><a href="http://www.percona.com/drizzle-support/">Drizzle Support</a></div>
3420+ <div class="item"><a href="http://www.percona.com/mysql-support/policies/">Support Policies</a></div>
3421+ <div class="item"><a href="http://www.percona.com/mysql-support/policies/supported-software/">Supported Software</a></div>
3422+ <div class="item"><a href="http://www.percona.com/mysql-support/policies/supported-platforms/">Supported Platforms &amp; Versions</a></div>
3423+ <div class="item"><a href="http://www.percona.com/mysql-support/consulting-vs-support/">Consulting vs. Support</a></div>
3424+ <div class="item"><a href="https://customers.percona.com">Customer Portal Login</a></div>
3425+ </div>
3426+ <div class="navi-dropdown-footer"><!-- //--></div>
3427+ </div>
3428+ <div class="navi-dropdown" id="navi-dropdown-training">
3429+ <div class="navi-dropdown-header-l"><!-- //--></div>
3430+ <div class="navi-dropdown-content">
3431+ <div class="item"><a href="http://www.percona.com/training/">MySQL Training Overview</a></div>
3432+ <div class="item"><a href="http://www.percona.com/training/classes/dba/">MySQL DBA Training</a></div>
3433+ <div class="item"><a href="http://www.percona.com/training/classes/developers/">MySQL Developer Training</a></div>
3434+ <div class="item"><a href="http://www.percona.com/training/classes/operations/">MySQL Operations Training</a></div>
3435+ <div class="item"><a href="http://www.percona.com/training/classes/innodb/">InnoDB &amp; XtraDB Training</a></div>
3436+ <div class="item"><a href="http://www.percona.com/training/classes/custom-onsite/">Custom Onsite Training</a></div>
3437+ </div>
3438+ <div class="navi-dropdown-footer"><!-- //--></div>
3439+ </div>
3440+ <div class="navi-dropdown" id="navi-dropdown-development">
3441+ <div class="navi-dropdown-header-l"><!-- //--></div>
3442+ <div class="navi-dropdown-content">
3443+ <div class="item"><a href="http://www.percona.com/development/mysql/">Development for MySQL</a></div>
3444+ <div class="item"><a href="http://www.percona.com/development/maintenance/">Maintenance for MySQL</a></div>
3445+ <div class="item"><a href="http://www.percona.com/development/benchmarking/">Custom Product Evaluation</a></div>
3446+ <div class="item"><a href="http://www.percona.com/development/maatkit/">Custom Maatkit Development</a></div>
3447+ <div class="item"><a href="http://www.percona.com/development/custom-tools/">Custom Tools Development</a></div>
3448+ </div>
3449+ <div class="navi-dropdown-footer"><!-- //--></div>
3450+ </div>
3451+ <div class="navi-dropdown" id="navi-dropdown-software">
3452+ <div class="navi-dropdown-header-l"><!-- //--></div>
3453+ <div class="navi-dropdown-content">
3454+ <div class="item"><a href="http://www.percona.com/software/">Percona Software for MySQL</a></div>
3455+ <div class="item"><a href="http://www.percona.com/software/percona-server/">Percona Server with XtraDB</a></div>
3456+ <div class="item"><a href="http://www.percona.com/software/percona-xtrabackup/">Percona XtraBackup</a></div>
3457+ <div class="item"><a href="http://www.percona.com/software/mysql-innodb-data-recovery-tools/">Data Recovery Toolkit</a></div>
3458+ <div class="item"><a href="http://www.percona.com/software/percona-xtradb/">Percona XtraDB</a></div>
3459+ <div class="item"><a href="http://www.percona.com/software/percona-toolkit/">Percona Toolkit</a></div>
3460+ <div class="item"><a href="http://www.percona.com/downloads/">Downloads</a></div>
3461+ <div class="item"><a href="http://www.percona.com/software/repositories/">Repositories</a></div>
3462+ <div class="item"><a href="http://www.percona.com/software/documentation/">Documentation</a></div>
3463+ <div class="item"><a href="http://forum.percona.com">Forum</a></div>
3464+ <div class="item"><a href="http://groups.google.com/group/percona-discussion">Google Discussion</a></div>
3465+ <div class="item"><a href="https://launchpad.net/percona-server">Launchpad</a></div>
3466+ </div>
3467+ <div class="navi-dropdown-footer"><!-- //--></div>
3468+ </div>
3469+ <div class="navi-dropdown" id="navi-dropdown-prices">
3470+ <div class="navi-dropdown-header-r"><!-- //--></div>
3471+ <div class="navi-dropdown-content">
3472+ <div class="item"><a href="http://www.percona.com/mysql-support/">Support Contracts</a></div>
3473+ <div class="item"><a href="http://www.percona.com/prices/per-hour-prices/">Per Hour Consulting</a></div>
3474+ <div class="item"><a href="http://www.percona.com/prices/prepaid-prices/">Prepaid Consulting</a></div>
3475+ <div class="item"><a href="http://www.percona.com/prices/on-site-prices/">On-Site Consulting</a></div>
3476+ <div class="item"><a href="http://www.percona.com/prices/training/">Training</a></div>
3477+ <div class="item"><a href="http://www.percona.com/prices/software/">Software</a></div>
3478+ <div class="item"><a href="http://www.percona.com/prices/other-prices/">Other Services</a></div>
3479+ </div>
3480+ <div class="navi-dropdown-footer"><!-- //--></div>
3481+ </div>
3482+ <div class="navi-dropdown" id="navi-dropdown-contact">
3483+ <div class="navi-dropdown-header-r"><!-- //--></div>
3484+ <div class="navi-dropdown-content">
3485+ <div class="item"><a href="http://www.percona.com/contact/24x7-emergency/">24×7 Emergency</a></div>
3486+ <div class="item"><a href="http://www.percona.com/contact/sales/">Sales &amp; General Inquiries</a></div>
3487+ <div class="item"><a href="http://www.percona.com/contact/billing/">Billing Inquiries</a></div>
3488+ <div class="item"><a href="https://customers.percona.com">Customer Portal Login</a></div>
3489+ <div class="item"><a href="http://www.percona.com/contact/phone-directory/">Phone Directory</a></div>
3490+ <div class="item"><a href="http://www.percona.com/about-us/newsletters/subscribe/">Subscribe to Newsletter</a></div>
3491+ </div>
3492+ <div class="navi-dropdown-footer"><!-- //--></div>
3493+ </div>
3494+ <div id="search-dropdown" class="search-dropdown">
3495+ <div class="search-dropdown-header"><!-- //--></div>
3496+ <div class="search-dropdown-content">
3497+ <div class="search-info">Search Percona.com:</div>
3498+ <form method="get" action="http://search.percona.com/search/" id="search-form">
3499+ <div class="form"><input type="text" id="search-input" name="q" maxlength="100"></div>
3500+ </form>
3501+ </div>
3502+ <div class="search-dropdown-footer"><!-- //--></div>
3503+ </div>
3504+</div>
3505+<div id="stats">
3506+<!-- GA //-->
3507+ <script src="http://www.percona.com/static/js/urchin.js" type="text/javascript"></script>
3508+ <script type="text/javascript">
3509+ _uacct = "UA-343802-3";
3510+ urchinTracker();
3511+ </script>
3512+<!-- /GA //-->
3513+<!-- NAVI //-->
3514+<script type="text/javascript">//<![CDATA[
3515+var 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"}];
3516+for(var i = 0, c = navi.length; i < c; i++) {
3517+ 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); } );
3518+}
3519+window.jQuery('#search-form').bind('submit', function() { window.location.href = jQuery('#search-form').attr('action') + jQuery('#search-input').val(); return false; });
3520+//]]></script>
3521+<!-- /NAVI //-->
3522+<script type="text/javascript">
3523+//<![CDATA[
3524+Percona.host = 'www.percona.com';
3525+Percona.getRecentServerVersion('#recentServerVersion');
3526+//]]>
3527+</script>
3528+</div>
3529+ </body>
3530+</html>
3531+
3532+
3533+
3534+{% if theme_collapsiblesidebar|tobool %}
3535+{% set script_files = script_files + ['_static/sidebar.js'] %}
3536+{% endif %}
3537
3538=== added file 'doc/source/percona-theme/searchbox.html'
3539--- doc/source/percona-theme/searchbox.html 1970-01-01 00:00:00 +0000
3540+++ doc/source/percona-theme/searchbox.html 2012-02-16 17:09:19 +0000
3541@@ -0,0 +1,22 @@
3542+{#
3543+ basic/searchbox.html
3544+ ~~~~~~~~~~~~~~~~~~~~
3545+
3546+ Sphinx sidebar template: quick search box.
3547+
3548+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
3549+ :license: BSD, see LICENSE for details.
3550+#}
3551+{%- if pagename != "search" %}
3552+<div id="searchbox" style="display: none; padding: 3px;">
3553+ <h3>{{ _('Quick search') }}</h3>
3554+ <form class="search" action="{{ pathto('search') }}" method="get">
3555+ <input type="text" name="q" size="18" />
3556+ <input type="submit" value="{{ _('Go') }}" />
3557+ <input type="hidden" name="check_keywords" value="yes" />
3558+ <input type="hidden" name="area" value="default" />
3559+ </form>
3560+
3561+</div>
3562+<script type="text/javascript">$('#searchbox').show(0);</script>
3563+{%- endif %}
3564
3565=== added directory 'doc/source/percona-theme/static'
3566=== added file 'doc/source/percona-theme/static/default.css_t'
3567--- doc/source/percona-theme/static/default.css_t 1970-01-01 00:00:00 +0000
3568+++ doc/source/percona-theme/static/default.css_t 2012-02-16 17:09:19 +0000
3569@@ -0,0 +1,469 @@
3570+/*
3571+ * default.css_t
3572+ * ~~~~~~~~~~~~~
3573+ *
3574+ * Sphinx stylesheet -- default theme.
3575+ *
3576+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
3577+ * :license: BSD, see LICENSE for details.
3578+ *
3579+ */
3580+
3581+@import url("basic.css");
3582+
3583+/* -- page layout ----------------------------------------------------------- */
3584+
3585+body {
3586+ font-family: Arial,Helvetica,sans-serif;
3587+ font-size: 14px;
3588+ background-color: #fff;
3589+ color: #333333;
3590+ line-height: 20px;
3591+ margin: 0;
3592+ padding: 0;
3593+
3594+}
3595+
3596+div.document {
3597+ background-color: #fff;
3598+ margin: 0 auto;
3599+ overflow: hidden;
3600+ padding: 30px 0;
3601+ width: 960px;
3602+}
3603+
3604+div.documentwrapper {
3605+ /* float: left; */
3606+ /* width: 100%; */
3607+
3608+}
3609+
3610+div.bodywrapper {
3611+ margin: 10 0 0 0px;
3612+ width: 660px;
3613+ float:right;
3614+}
3615+
3616+div.body {
3617+ background-color: #fff;
3618+ color: #333333;
3619+ padding: 0 0 20px;
3620+}
3621+
3622+{%- if theme_rightsidebar|tobool %}
3623+div.bodywrapper {
3624+ margin: 0 {{ theme_sidebarwidth }}px 0 0;
3625+}
3626+{%- endif %}
3627+
3628+div.footer {
3629+ /* color: {{ theme_footertextcolor }}; */
3630+ /* width: 100%; */
3631+ /* padding: 9px 0 9px 0; */
3632+ /* text-align: center; */
3633+ /* font-size: 75%; */
3634+ font: 80% "Lucida Grande",Verdana,Lucida,Helvetica,Arial,sans-serif;
3635+ background: none repeat scroll 0 0 #333333;
3636+ border-top: 2px solid #D95200;
3637+ overflow: hidden;
3638+}
3639+
3640+div.footer a {
3641+ color: {{ theme_footertextcolor }};
3642+ text-decoration: underline;
3643+}
3644+
3645+div.related {
3646+ background-color: #ccc;
3647+ line-height: 30px;
3648+ color: #333;
3649+ background: none repeat scroll 0 0 #F8F8F8;
3650+ border: 1px solid #E0E0E0;
3651+ clear: both;
3652+ padding: 10px;
3653+ width: 635px;
3654+ margin-bottom: 5px;
3655+}
3656+
3657+div.related a {
3658+ color: #999;
3659+}
3660+
3661+div.sphinxsidebar {
3662+ margin-left: 0px;
3663+ margin-right: 30px;
3664+ color: #eee;
3665+ font-family: Arial,Helvetica,sans-serif;
3666+ width: 260px;
3667+ {%- if theme_stickysidebar|tobool %}
3668+ top: 30px;
3669+ bottom: 0;
3670+ margin: 0;
3671+ position: fixed;
3672+ overflow: auto;
3673+ height: auto;
3674+ {%- endif %}
3675+ {%- if theme_rightsidebar|tobool %}
3676+ float: right;
3677+ {%- if theme_stickysidebar|tobool %}
3678+ right: 0;
3679+ {%- endif %}
3680+ {%- endif %}
3681+}
3682+
3683+{%- if theme_stickysidebar|tobool %}
3684+/* this is nice, but it it leads to hidden headings when jumping
3685+ to an anchor */
3686+/*
3687+div.related {
3688+ position: fixed;
3689+}
3690+
3691+div.documentwrapper {
3692+ margin-top: 30px;
3693+}
3694+*/
3695+{%- endif %}
3696+
3697+div.sphinxsidebar h3 {
3698+ /* font-family: {{ theme_headfont }}; */
3699+ color: #999;
3700+ font-size: 18px;
3701+ line-height: 15px;
3702+ font-weight: 400;
3703+ margin-left: 5px;
3704+ padding: 0;
3705+}
3706+
3707+div.sphinxsidebar h3 a {
3708+ color: #333;
3709+}
3710+
3711+div.sphinxsidebar a:hover {
3712+ /* color: #333; */
3713+}
3714+
3715+div.sphinxsidebar h4 {
3716+ /* font-family: {{ theme_headfont }}; */
3717+ color: #666;
3718+ font-size: 18px;
3719+ font-weight: normal;
3720+ margin: 5px 0 0 5px;
3721+ padding: 0;
3722+}
3723+
3724+div.sphinxsidebar p {
3725+ color: #333;
3726+ margin-bottom: 5px;
3727+ margin-left: 5px;
3728+}
3729+
3730+div.sphinxsidebar p.topless {
3731+ margin: 5px 10px 10px 10px;
3732+}
3733+
3734+div.sphinxsidebar ul {
3735+ margin: 10px;
3736+ padding-left: 5px;
3737+ color: #333;
3738+}
3739+
3740+div.sphinxsidebar a {
3741+ color: #D12907;
3742+}
3743+
3744+div.sphinxsidebar input {
3745+ border: 1px solid #999;
3746+ font-family: sans-serif;
3747+ font-size: 1em;
3748+}
3749+
3750+{% if theme_collapsiblesidebar|tobool %}
3751+/* for collapsible sidebar */
3752+div#sidebarbutton {
3753+ background-color: {{ theme_sidebarbtncolor }};
3754+}
3755+{% endif %}
3756+
3757+/* -- hyperlink styles ------------------------------------------------------ */
3758+
3759+a {
3760+ color: #D12907;
3761+ text-decoration: underline;
3762+ border: medium none;
3763+ cursor: pointer;
3764+}
3765+
3766+a:visited {
3767+ color: #D12907;
3768+ text-decoration: underline;
3769+}
3770+
3771+a:hover {
3772+ color: #D12907;
3773+ text-decoration: underline;
3774+}
3775+
3776+{% if theme_externalrefs|tobool %}
3777+a.external {
3778+ text-decoration: none;
3779+ border-bottom: 1px dashed {{ theme_linkcolor }};
3780+}
3781+
3782+a.external:hover {
3783+ text-decoration: none;
3784+ border-bottom: none;
3785+}
3786+
3787+a.external:visited {
3788+ text-decoration: none;
3789+ border-bottom: 1px dashed {{ theme_visitedlinkcolor }};
3790+}
3791+{% endif %}
3792+
3793+/* -- body styles ----------------------------------------------------------- */
3794+
3795+div.body h1,
3796+div.body h2,
3797+div.body h3,
3798+div.body h4,
3799+div.body h5,
3800+div.body h6 {
3801+ font-family: Arial,Helvetica,sans-serif;
3802+ background-color: #fff;
3803+ font-weight: 400;
3804+
3805+ /* border-bottom: 1px solid #ccc; */
3806+ /* margin: 20px -20px 10px -20px; */
3807+ /* padding: 0; */
3808+ /* padding: 3px 0 3px 10px; */
3809+ text-decoration: none !important;
3810+
3811+ border-bottom: 1px solid #E0E0E0;
3812+ font-size: 20px;
3813+ line-height: 20px;
3814+ margin: 30px 0 15px;
3815+ padding: 0 0 3px;
3816+ color: #000;
3817+}
3818+
3819+div.body h1 {
3820+ font-size: 32px;
3821+ color: #D12907;
3822+ line-height: 40px;
3823+ margin: 10px 0 20px 0;
3824+ text-decoration: none !important;
3825+ border-bottom: none;
3826+ margin-top: 35px;
3827+}
3828+
3829+div.body h2 { font-size: 150%; }
3830+div.body h3 { font-size: 140%; }
3831+div.body h4 { font-size: 120%; }
3832+div.body h5 { font-size: 110%; }
3833+div.body h6 { font-size: 100%; }
3834+
3835+a.headerlink {
3836+ color: {{ theme_headlinkcolor }};
3837+ font-size: 0.8em;
3838+ padding: 0 4px 0 4px;
3839+ text-decoration: none;
3840+}
3841+
3842+a.headerlink:hover {
3843+ background-color: {{ theme_headlinkcolor }};
3844+ color: white;
3845+}
3846+
3847+div.body dd, div.body li {
3848+ text-align: justify;
3849+}
3850+
3851+div.body dt {
3852+ list-style-type: square;
3853+ /* margin: 8px 0 8px 30px; */
3854+ padding: 0 4px 0 5px;
3855+
3856+}
3857+
3858+div.body p {
3859+ text-align: justify;
3860+/* line-height: 130%;*/
3861+ margin: 10px 0;
3862+}
3863+
3864+/* div.body ul, */
3865+div.body li {
3866+ list-style-type: square;
3867+ margin: 8px 0 8px 30px;
3868+ padding: 0 4px 0 5px;
3869+}
3870+
3871+.reference em {
3872+ font-style: normal;
3873+}
3874+
3875+.std-term {
3876+ font-style: normal;
3877+ font-weight: 400;
3878+ color: #FF7400
3879+}
3880+
3881+div.admonition p.admonition-title + p {
3882+ display: inline;
3883+}
3884+
3885+div.admonition p {
3886+ margin-bottom: 5px;
3887+}
3888+
3889+div.admonition pre {
3890+ margin-bottom: 5px;
3891+}
3892+
3893+div.admonition ul, div.admonition ol {
3894+ margin-bottom: 5px;
3895+}
3896+
3897+div.note {
3898+ background-color: #eee;
3899+ border: 1px solid #ccc;
3900+}
3901+
3902+div.seealso {
3903+ background-color: #ffc;
3904+ border: 1px solid #ff6;
3905+}
3906+
3907+div.topic {
3908+ background-color: #eee;
3909+}
3910+
3911+div.warning {
3912+ background-color: #ffe4e4;
3913+ border: 1px solid #f66;
3914+}
3915+
3916+p.admonition-title {
3917+ display: inline;
3918+}
3919+
3920+p.admonition-title:after {
3921+ content: ":";
3922+}
3923+
3924+pre {
3925+ padding: 10px;
3926+ background-color: #F0E6D9/* {{ theme_codebgcolor }} */;
3927+ color: {{ theme_codetextcolor }};
3928+ line-height: 120%;
3929+ border: 1px dashed #ED9821;
3930+ font-size: 80%;
3931+ overflow: auto;
3932+ /* border-left: none; */
3933+ /* border-right: none; */
3934+}
3935+
3936+tt {
3937+/* background-color: #ecf0f3;
3938+ padding: 0 1px 0 1px;
3939+ font-size: 0.95em;*/
3940+ font-weight: 400;
3941+}
3942+
3943+div.body td {
3944+ text-align: none;
3945+}
3946+
3947+table.docutils th {
3948+ background-color: #DEE7EC;
3949+ border: 1px solid #8CACBB;
3950+ padding: 3px;
3951+ text-align: center;
3952+ font-style: normal;
3953+ font-weight: 400;
3954+}
3955+
3956+table.docutils td {
3957+ border: 1px solid #8CACBB;
3958+ padding: 3px;
3959+ line-height: 16px;
3960+ vertical-align: middle;
3961+}
3962+
3963+.warning tt {
3964+ background: #efc2c2;
3965+}
3966+
3967+.note tt {
3968+ background: #d6d6d6;
3969+}
3970+
3971+.viewcode-back {
3972+ font-family: {{ theme_bodyfont }};
3973+}
3974+
3975+div.viewcode-block:target {
3976+ background-color: #f4debf;
3977+ border-top: 1px solid #ac9;
3978+ border-bottom: 1px solid #ac9;
3979+}
3980+
3981+.file-bugs {
3982+ background: none repeat scroll 0 0 #E8E8E8;
3983+ border: 1px solid #E0E0E0;
3984+ clear: both;
3985+ color: #333333;
3986+ padding: 10px;
3987+ text-align: center;
3988+ font-size: 90%;
3989+}
3990+
3991+div.footer .footer {
3992+ margin: 0 auto;
3993+ overflow: hidden;
3994+ padding: 10px 0;
3995+ width: 960px;
3996+ border-top: none;
3997+}
3998+
3999+div.footer .footer .logo {
4000+ float: left;
4001+ overflow: hidden;
4002+ padding: 17px 0 0;
4003+}
4004+
4005+div.footer .footer .text {
4006+ color: #E0E0E0;
4007+ float: right;
4008+ font-family: Arial,Helvetica,sans-serif;
4009+ font-size: 11px;
4010+ line-height: 15px;
4011+ overflow: hidden;
4012+ text-align: right;
4013+}
4014+
4015+div.license {
4016+ font-size: 80%;
4017+ /* padding: 0.5em; */
4018+ text-align: center;
4019+ margin: 13px 0 -15px;
4020+}
4021+
4022+#sidenavi.noborder {
4023+ border-right: medium none;
4024+ border-top: medium none;
4025+ margin: 0;
4026+}
4027+
4028+#sidenavi {
4029+ color: #333333;
4030+ /* float: left; */
4031+ font-family: Arial,Helvetica,sans-serif;
4032+ font-size: 18px;
4033+ line-height: 25px;
4034+ overflow: hidden;
4035+ padding: 10px 0 8px 0px;
4036+ width: 255px;
4037+}
4038+
4039
4040=== added file 'doc/source/percona-theme/static/email-small.png'
4041Binary 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
4042=== added file 'doc/source/percona-theme/static/jquery.min.js'
4043--- doc/source/percona-theme/static/jquery.min.js 1970-01-01 00:00:00 +0000
4044+++ doc/source/percona-theme/static/jquery.min.js 2012-02-16 17:09:19 +0000
4045@@ -0,0 +1,154 @@
4046+/*!
4047+ * jQuery JavaScript Library v1.4.2
4048+ * http://jquery.com/
4049+ *
4050+ * Copyright 2010, John Resig
4051+ * Dual licensed under the MIT or GPL Version 2 licenses.
4052+ * http://jquery.org/license
4053+ *
4054+ * Includes Sizzle.js
4055+ * http://sizzlejs.com/
4056+ * Copyright 2010, The Dojo Foundation
4057+ * Released under the MIT, BSD, and GPL Licenses.
4058+ *
4059+ * Date: Sat Feb 13 22:33:48 2010 -0500
4060+ */
4061+(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?
4062+e(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=
4063+j.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,
4064+"&")}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=
4065+true;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/,
4066+Wa=/^(\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))&&
4067+(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,
4068+a)}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===
4069+"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,
4070+function(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)||
4071+c.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",
4072+L,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,
4073+"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 "+
4074+a))();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],
4075+d)===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]===
4076+a)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&&
4077+!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=
4078+true;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'/>";
4079+var 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,
4080+parentNode: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=
4081+false;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=
4082+s.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,
4083+applet: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];
4084+else 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,
4085+a,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===
4086+w)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,
4087+cb=/^(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+" ",
4088+i=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]+" ",
4089+" ");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=
4090+this.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=
4091+e[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=
4092+c.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");
4093+a[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,
4094+function(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(".");
4095+k=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),
4096+C=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!=
4097+null)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=
4098+e=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()&&
4099+f)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;
4100+if(!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(" "),
4101+fix: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||
4102+d&&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,
4103+"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=
4104+a;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,
4105+isImmediatePropagationStopped: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=
4106+{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")}};
4107+if(!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",
4108+e);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,
4109+"_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,
4110+d,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"&&
4111+!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}},
4112+toggle: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,
4113+u=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(" "),
4114+function(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];
4115+if(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,
4116+e=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();
4117+t=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||
4118+g);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[];
4119+for(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-
4120+1)!=="\\"){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-]|\\.)+)/,
4121+CLASS:/\.((?:[\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")}},
4122+relative:{"+":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]=
4123+l?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=[];
4124+h=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()},
4125+CHILD: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,
4126+g);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)},
4127+text: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)}},
4128+setFilters:{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=
4129+h[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=
4130+m.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===
4131+"="?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,
4132+h){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||
4133+!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=
4134+h.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"&&
4135+q.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>";
4136+if(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}}();
4137+(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)}:
4138+function(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)/,
4139+gb=/,/;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;
4140+c.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=
4141+{},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===
4142+"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",
4143+d)},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")?
4144+a.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===
4145+1&&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)?
4146+a: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=
4147+c(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},
4148+wrapInner: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)})},
4149+prepend: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,
4150+this.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);
4151+return 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,
4152+""):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]&&
4153+this[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]||
4154+u.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===
4155+1?(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]);
4156+return 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)||["",
4157+""])[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=
4158+c.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]?
4159+c.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=
4160+function(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=
4161+Na.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,
4162+"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=
4163+a.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=
4164+a.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!==
4165+"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},
4166+serialize: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(" "),
4167+function(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,
4168+global: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&&
4169+e.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)?
4170+"&":"?")+(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===
4171+false&&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=
4172+false;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",
4173+c.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||
4174+d();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);
4175+g("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===
4176+1223||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===
4177+"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;
4178+if(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");
4179+this[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],
4180+"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)},
4181+animate: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=
4182+j.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([]);
4183+this.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===
4184+"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]||
4185+c.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;
4186+this.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=
4187+this.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,
4188+e,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||
4189+c.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?
4190+function(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=
4191+this[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;
4192+k-=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&&
4193+f.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>";
4194+a.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);
4195+c.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,
4196+d,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-
4197+f.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":
4198+"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
4199+e&&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);
4200
4201=== added file 'doc/source/percona-theme/static/percona.com.css'
4202--- doc/source/percona-theme/static/percona.com.css 1970-01-01 00:00:00 +0000
4203+++ doc/source/percona-theme/static/percona.com.css 2012-02-16 17:09:19 +0000
4204@@ -0,0 +1,1 @@
4205+@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;}
4206\ No newline at end of file
4207
4208=== added file 'doc/source/percona-theme/static/percona.com.js'
4209--- doc/source/percona-theme/static/percona.com.js 1970-01-01 00:00:00 +0000
4210+++ doc/source/percona-theme/static/percona.com.js 2012-02-16 17:09:19 +0000
4211@@ -0,0 +1,242 @@
4212+window.jQuery(function($) {
4213+
4214+
4215+
4216+function setCookie(c_name, value, expiredays)
4217+{
4218+ var exdate = new Date();
4219+ exdate.setDate(exdate.getDate() + expiredays);
4220+ document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";path=/;expires=" + exdate.toUTCString());
4221+}
4222+
4223+function getCookie(c_name)
4224+{
4225+ if (document.cookie.length > 0)
4226+ {
4227+ c_start = document.cookie.indexOf(c_name + "=");
4228+ if (c_start != -1)
4229+ {
4230+ c_start = c_start + c_name.length+1;
4231+ c_end = document.cookie.indexOf(";",c_start);
4232+ if (c_end == -1)
4233+ {
4234+ c_end = document.cookie.length;
4235+ }
4236+ return unescape(document.cookie.substring(c_start, c_end));
4237+ }
4238+ }
4239+ return "";
4240+}
4241+
4242+
4243+NAVI = new Object();
4244+
4245+NAVI.CloseTimer = null;
4246+
4247+NAVI.Open = function ( menu_tag, dir )
4248+{
4249+ NAVI_CancelTimer();
4250+ NAVI_Close();
4251+ SEARCH_CancelTimer();
4252+ SEARCH_Close();
4253+ if ('h' == dir)
4254+ {
4255+ return;
4256+ }
4257+ var pos = $("#navilink-span-"+menu_tag).offset();
4258+ if (dir=='r')
4259+ {
4260+ $("#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" } );
4261+ }
4262+ else
4263+ {
4264+ $("#navi-dropdown-"+menu_tag).css( { "position": "absolute", "left": (pos.left) + "px", "top": (pos.top + 32) + "px" } );
4265+ }
4266+ $("#navi-dropdown-"+menu_tag).show();
4267+ $("#navilink-span-"+menu_tag).bind('mouseover',NAVI_CancelTimer);
4268+ $("#navilink-span-"+menu_tag).bind('mouseout',NAVI_Timer);
4269+ $("#navi-dropdown-"+menu_tag).bind('mouseover',NAVI_CancelTimer);
4270+ $("#navi-dropdown-"+menu_tag).bind('mouseout',NAVI_Timer);
4271+};
4272+
4273+function NAVI_Close()
4274+{
4275+ $(".navi-dropdown").hide();
4276+ $("#menu div").unbind('mouseover');
4277+ $(".dropdown").unbind('mouseover');
4278+ $(".dropdown").unbind('mouseout');
4279+
4280+ $("#search-dropdown").hide();
4281+ $("#searchlink-anchor").unbind('mouseover');
4282+ $("#searchlink-anchor").unbind('mouseout');
4283+ $("#search-dropdown").unbind('mouseover');
4284+ $("#search-dropdown").unbind('mouseout');
4285+}
4286+
4287+function NAVI_CancelTimer()
4288+{
4289+ if (NAVI.CloseTimer!=null)
4290+ {
4291+ window.clearTimeout(NAVI.CloseTimer);
4292+ NAVI.CloseTimer = null;
4293+ }
4294+}
4295+
4296+function NAVI_Timer()
4297+{
4298+ if (NAVI.CloseTimer==null)
4299+ {
4300+ NAVI.CloseTimer = window.setTimeout(NAVI_Close, 300);
4301+ }
4302+}
4303+
4304+
4305+SUBNAVI = new Object();
4306+
4307+SUBNAVI.Open = function ( menu_tag )
4308+{
4309+ if ($("#sidesubnavi-" + menu_tag + ':hidden').length)
4310+ {
4311+ $(".sidesubnavi").hide();
4312+ $("#sidesubnavi-"+menu_tag).show();
4313+ return false;
4314+ } else {
4315+ return true;
4316+ }
4317+};
4318+
4319+
4320+SEARCH = new Object();
4321+
4322+SEARCH.CloseTimer = null;
4323+
4324+SEARCH.Open = function()
4325+{
4326+ NAVI_CancelTimer();
4327+ NAVI_Close();
4328+ SEARCH_CancelTimer();
4329+ SEARCH_Close();
4330+ var pos = $("#searchlink-anchor").offset();
4331+ $("#search-dropdown").css( { "position": "absolute", "left": (pos.left - ($("#search-dropdown").width()) + 40) + "px", "top": (pos.top + 36) + "px" } );
4332+ $("#search-dropdown").show();
4333+ $("#searchlink-anchor").bind('mouseover',NAVI_CancelTimer);
4334+ $("#searchlink-anchor").bind('mouseout',NAVI_Timer);
4335+ $("#search-dropdown").bind('mouseover',NAVI_CancelTimer);
4336+ $("#search-dropdown").bind('mouseout',NAVI_Timer);
4337+ $("#search-input")[0].focus();
4338+};
4339+
4340+function SEARCH_Close()
4341+{
4342+ $(".navi-dropdown").hide();
4343+ $("#menu div").unbind('mouseover');
4344+ $(".dropdown").unbind('mouseover');
4345+ $(".dropdown").unbind('mouseout');
4346+
4347+ $("#search-dropdown").hide();
4348+ $("#searchlink-anchor").unbind('mouseover');
4349+ $("#searchlink-anchor").unbind('mouseout');
4350+ $("#search-dropdown").unbind('mouseover');
4351+ $("#search-dropdown").unbind('mouseout');
4352+}
4353+
4354+
4355+function SEARCH_CancelTimer()
4356+{
4357+ if (SEARCH.CloseTimer!=null)
4358+ {
4359+ window.clearTimeout(SEARCH.CloseTimer);
4360+ SEARCH.CloseTimer = null;
4361+ }
4362+}
4363+
4364+function SEARCH_Timer()
4365+{
4366+ if (SEARCH.CloseTimer==null)
4367+ {
4368+ SEARCH.CloseTimer = window.setTimeout(SEARCH_Close, 300);
4369+ }
4370+}
4371+
4372+menuImg1 = new Image(); menuImg1.src = 'http://s1.percona.com/ui-dropdown-header-l.png';
4373+menuImg2 = new Image(); menuImg2.src = 'http://s2.percona.com/ui-dropdown-header-r.png';
4374+menuImg3 = new Image(); menuImg3.src = 'http://s3.percona.com/ui-dropdown-header-search.png';
4375+menuImg4 = new Image(); menuImg4.src = 'http://s0.percona.com/ui-dropdown-bg.png';
4376+menuImg5 = new Image(); menuImg5.src = 'http://s1.percona.com/ui-dropdown-footer.png';
4377+
4378+
4379+});
4380+
4381+
4382+var Percona = {
4383+ ssl: false,
4384+ host: 'www.percona.com'
4385+};
4386+/**
4387+ * @param string selector jQuery selector string
4388+ */
4389+Percona.getRecentServerVersion = function(selector)
4390+{
4391+ if ('string' != typeof(selector))
4392+ {
4393+ alert('Percona.getRecentServerVersion: missed or wrong selector!');
4394+ }
4395+ /* Localize jQuery variable */
4396+ var jQuery;
4397+ /******** Load jQuery if not present *********/
4398+ if (window.jQuery === undefined || window.jQuery.fn.jquery !== '1.4.2')
4399+ {
4400+ var script_tag = document.createElement('script');
4401+ script_tag.setAttribute("type","text/javascript");
4402+ script_tag.setAttribute('src', 'http' + (Percona.ssl ? 's' : '') + ':/' + '/ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js');
4403+ script_tag.onload = scriptLoadHandler;
4404+ script_tag.onreadystatechange = function () /* Same thing but for IE */
4405+ {
4406+ if (this.readyState == 'complete' || this.readyState == 'loaded')
4407+ {
4408+ scriptLoadHandler();
4409+ }
4410+ };
4411+ /* Try to find the head, otherwise default to the documentElement */
4412+ (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag);
4413+ } else {
4414+ /* The jQuery version on the window is the one we want to use */
4415+ jQuery = window.jQuery;
4416+ main();
4417+ }
4418+ var scriptLoadHandler_counter = 0;
4419+ /******** Called once jQuery has loaded ******/
4420+ function scriptLoadHandler()
4421+ {
4422+ if (++scriptLoadHandler_counter > 1)
4423+ {
4424+ return;
4425+ }
4426+ /* Restore $ and window.jQuery to their previous values and store the
4427+ new jQuery in our local jQuery variable */
4428+ jQuery = window.jQuery.noConflict(true);
4429+ /* Call our main function */
4430+ main(jQuery);
4431+ }
4432+ /******** Our main function ********/
4433+ function main($)
4434+ {
4435+ var fillRecentServerVersion = function($)
4436+ {
4437+ if ($(selector).get(0))
4438+ {
4439+ $.get('http' + (Percona.ssl ? 's' : '') + ':/' + '/' + Percona.host + '/ajax/server-version/?callback=?', {}, function(json)
4440+ {
4441+ if ('object' == typeof(json) && 'string' == typeof(json.recentServerVersion))
4442+ {
4443+ $(selector).text(' ' + json.recentServerVersion);
4444+ }
4445+ }, 'jsonp');
4446+ }
4447+ };
4448+ $(document).ready(function()
4449+ {
4450+ fillRecentServerVersion(jQuery);
4451+ });
4452+ }
4453+};
4454
4455=== added file 'doc/source/percona-theme/static/phone-small.png'
4456Binary 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
4457=== added file 'doc/source/percona-theme/static/phone.png'
4458Binary 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
4459=== added file 'doc/source/percona-theme/static/shield.png'
4460Binary 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
4461=== added file 'doc/source/percona-theme/static/sidebar.js'
4462--- doc/source/percona-theme/static/sidebar.js 1970-01-01 00:00:00 +0000
4463+++ doc/source/percona-theme/static/sidebar.js 2012-02-16 17:09:19 +0000
4464@@ -0,0 +1,151 @@
4465+/*
4466+ * sidebar.js
4467+ * ~~~~~~~~~~
4468+ *
4469+ * This script makes the Sphinx sidebar collapsible.
4470+ *
4471+ * .sphinxsidebar contains .sphinxsidebarwrapper. This script adds
4472+ * in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton
4473+ * used to collapse and expand the sidebar.
4474+ *
4475+ * When the sidebar is collapsed the .sphinxsidebarwrapper is hidden
4476+ * and the width of the sidebar and the margin-left of the document
4477+ * are decreased. When the sidebar is expanded the opposite happens.
4478+ * This script saves a per-browser/per-session cookie used to
4479+ * remember the position of the sidebar among the pages.
4480+ * Once the browser is closed the cookie is deleted and the position
4481+ * reset to the default (expanded).
4482+ *
4483+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
4484+ * :license: BSD, see LICENSE for details.
4485+ *
4486+ */
4487+
4488+$(function() {
4489+ // global elements used by the functions.
4490+ // the 'sidebarbutton' element is defined as global after its
4491+ // creation, in the add_sidebar_button function
4492+ var bodywrapper = $('.bodywrapper');
4493+ var sidebar = $('.sphinxsidebar');
4494+ var sidebarwrapper = $('.sphinxsidebarwrapper');
4495+
4496+ // for some reason, the document has no sidebar; do not run into errors
4497+ if (!sidebar.length) return;
4498+
4499+ // original margin-left of the bodywrapper and width of the sidebar
4500+ // with the sidebar expanded
4501+ var bw_margin_expanded = bodywrapper.css('margin-left');
4502+ var ssb_width_expanded = sidebar.width();
4503+
4504+ // margin-left of the bodywrapper and width of the sidebar
4505+ // with the sidebar collapsed
4506+ var bw_margin_collapsed = '.8em';
4507+ var ssb_width_collapsed = '.8em';
4508+
4509+ // colors used by the current theme
4510+ var dark_color = $('.related').css('background-color');
4511+ var light_color = $('.document').css('background-color');
4512+
4513+ function sidebar_is_collapsed() {
4514+ return sidebarwrapper.is(':not(:visible)');
4515+ }
4516+
4517+ function toggle_sidebar() {
4518+ if (sidebar_is_collapsed())
4519+ expand_sidebar();
4520+ else
4521+ collapse_sidebar();
4522+ }
4523+
4524+ function collapse_sidebar() {
4525+ sidebarwrapper.hide();
4526+ sidebar.css('width', ssb_width_collapsed);
4527+ bodywrapper.css('margin-left', bw_margin_collapsed);
4528+ sidebarbutton.css({
4529+ 'margin-left': '0',
4530+ 'height': bodywrapper.height()
4531+ });
4532+ sidebarbutton.find('span').text('»');
4533+ sidebarbutton.attr('title', _('Expand sidebar'));
4534+ document.cookie = 'sidebar=collapsed';
4535+ }
4536+
4537+ function expand_sidebar() {
4538+ bodywrapper.css('margin-left', bw_margin_expanded);
4539+ sidebar.css('width', ssb_width_expanded);
4540+ sidebarwrapper.show();
4541+ sidebarbutton.css({
4542+ 'margin-left': ssb_width_expanded-12,
4543+ 'height': bodywrapper.height()
4544+ });
4545+ sidebarbutton.find('span').text('«');
4546+ sidebarbutton.attr('title', _('Collapse sidebar'));
4547+ document.cookie = 'sidebar=expanded';
4548+ }
4549+
4550+ function add_sidebar_button() {
4551+ sidebarwrapper.css({
4552+ 'float': 'left',
4553+ 'margin-right': '0',
4554+ 'width': ssb_width_expanded - 28
4555+ });
4556+ // create the button
4557+ sidebar.append(
4558+ '<div id="sidebarbutton"><span>&laquo;</span></div>'
4559+ );
4560+ var sidebarbutton = $('#sidebarbutton');
4561+ light_color = sidebarbutton.css('background-color');
4562+ // find the height of the viewport to center the '<<' in the page
4563+ var viewport_height;
4564+ if (window.innerHeight)
4565+ viewport_height = window.innerHeight;
4566+ else
4567+ viewport_height = $(window).height();
4568+ sidebarbutton.find('span').css({
4569+ 'display': 'block',
4570+ 'margin-top': (viewport_height - sidebar.position().top - 20) / 2
4571+ });
4572+
4573+ sidebarbutton.click(toggle_sidebar);
4574+ sidebarbutton.attr('title', _('Collapse sidebar'));
4575+ sidebarbutton.css({
4576+ 'color': '#FFFFFF',
4577+ 'border-left': '1px solid ' + dark_color,
4578+ 'font-size': '1.2em',
4579+ 'cursor': 'pointer',
4580+ 'height': bodywrapper.height(),
4581+ 'padding-top': '1px',
4582+ 'margin-left': ssb_width_expanded - 12
4583+ });
4584+
4585+ sidebarbutton.hover(
4586+ function () {
4587+ $(this).css('background-color', dark_color);
4588+ },
4589+ function () {
4590+ $(this).css('background-color', light_color);
4591+ }
4592+ );
4593+ }
4594+
4595+ function set_position_from_cookie() {
4596+ if (!document.cookie)
4597+ return;
4598+ var items = document.cookie.split(';');
4599+ for(var k=0; k<items.length; k++) {
4600+ var key_val = items[k].split('=');
4601+ var key = key_val[0];
4602+ if (key == 'sidebar') {
4603+ var value = key_val[1];
4604+ if ((value == 'collapsed') && (!sidebar_is_collapsed()))
4605+ collapse_sidebar();
4606+ else if ((value == 'expanded') && (sidebar_is_collapsed()))
4607+ expand_sidebar();
4608+ }
4609+ }
4610+ }
4611+
4612+ add_sidebar_button();
4613+ var sidebarbutton = $('#sidebarbutton');
4614+ set_position_from_cookie();
4615+});
4616
4617=== added file 'doc/source/percona-theme/static/software-download.png'
4618Binary 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
4619=== added file 'doc/source/percona-theme/static/software-latest.png'
4620Binary 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
4621=== added file 'doc/source/percona-theme/static/support-small.png'
4622Binary 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
4623=== added file 'doc/source/percona-theme/static/ui-dropdown-bg.png'
4624Binary 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
4625=== added file 'doc/source/percona-theme/static/ui-dropdown-footer.png'
4626Binary 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
4627=== added file 'doc/source/percona-theme/static/ui-dropdown-header-l.png'
4628Binary 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
4629=== added file 'doc/source/percona-theme/static/ui-dropdown-header-r.png'
4630Binary 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
4631=== added file 'doc/source/percona-theme/static/ui-dropdown-header-search.png'
4632Binary 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
4633=== added file 'doc/source/percona-theme/static/ui-footer-logo.png'
4634Binary 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
4635=== added file 'doc/source/percona-theme/static/ui-leftnavi-sel.png'
4636Binary 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
4637=== added file 'doc/source/percona-theme/static/ui-logo.png'
4638Binary 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
4639=== added file 'doc/source/percona-theme/static/ui-navi-hover-l.png'
4640Binary 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
4641=== added file 'doc/source/percona-theme/static/ui-navi-hover-r.png'
4642Binary 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
4643=== added file 'doc/source/percona-theme/static/ui-navi-l.png'
4644Binary 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
4645=== added file 'doc/source/percona-theme/static/ui-navi-r.png'
4646Binary 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
4647=== added file 'doc/source/percona-theme/static/ui-navi-sel-l.png'
4648Binary 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
4649=== added file 'doc/source/percona-theme/static/ui-navi-sel-r.png'
4650Binary 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
4651=== added file 'doc/source/percona-theme/static/ui-orange-content.png'
4652Binary 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
4653=== added file 'doc/source/percona-theme/static/ui-orange-front.png'
4654Binary 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
4655=== added file 'doc/source/percona-theme/static/ui-search.png'
4656Binary 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
4657=== added file 'doc/source/percona-theme/static/ui-tab-bg.png'
4658Binary 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
4659=== added file 'doc/source/percona-theme/static/warning.png'
4660Binary 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
4661=== added file 'doc/source/percona-theme/theme.conf'
4662--- doc/source/percona-theme/theme.conf 1970-01-01 00:00:00 +0000
4663+++ doc/source/percona-theme/theme.conf 2012-02-16 17:09:19 +0000
4664@@ -0,0 +1,32 @@
4665+[theme]
4666+inherit = default
4667+stylesheet = default.css
4668+pygments_style = sphinx
4669+
4670+[options]
4671+rightsidebar = false
4672+stickysidebar = false
4673+collapsiblesidebar = false
4674+externalrefs = false
4675+
4676+footerbgcolor = #11303d
4677+footertextcolor = #ffffff
4678+sidebarbgcolor = #1c4e63
4679+sidebarbtncolor = #3c6e83
4680+sidebartextcolor = #ffffff
4681+sidebarlinkcolor = #98dbcc
4682+relbarbgcolor = #133f52
4683+relbartextcolor = #ffffff
4684+relbarlinkcolor = #ffffff
4685+bgcolor = #ffffff
4686+textcolor = #000000
4687+headbgcolor = #f2f2f2
4688+headtextcolor = #20435c
4689+headlinkcolor = #c60f0f
4690+linkcolor = #355f7c
4691+visitedlinkcolor = #355f7c
4692+codebgcolor = #eeffcc
4693+codetextcolor = #333333
4694+
4695+bodyfont = sans-serif
4696+headfont = 'Arial', 'Helvetica' sans-serif
4697
4698=== added file 'doc/source/percona-xtrabackup-logo.jpg'
4699Binary 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
4700=== added file 'doc/source/percona_favicon.ico'
4701Binary 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
4702=== added directory 'doc/source/release-notes'
4703=== added file 'doc/source/release-notes.rst'
4704--- doc/source/release-notes.rst 1970-01-01 00:00:00 +0000
4705+++ doc/source/release-notes.rst 2012-02-16 17:09:19 +0000
4706@@ -0,0 +1,35 @@
4707+======================================
4708+ |Percona| |XtraBackup| Release Notes
4709+======================================
4710+
4711+Percona |XtraBackup| 2.0 (Beta)
4712+===============================
4713+
4714+.. toctree::
4715+ :maxdepth: 1
4716+ :glob:
4717+
4718+ release-notes/2.0/*
4719+
4720+Percona |XtraBackup| 1.6 (Stable)
4721+=================================
4722+
4723+.. toctree::
4724+ :maxdepth: 1
4725+ :glob:
4726+
4727+ release-notes/1.6/*
4728+
4729+Older releases
4730+==============
4731+
4732+.. toctree::
4733+ :maxdepth: 1
4734+ :glob:
4735+
4736+ release-notes/1.5
4737+ release-notes/1.4
4738+ release-notes/1.3
4739+
4740+
4741+
4742
4743=== added file 'doc/source/release-notes/1.3.rst'
4744--- doc/source/release-notes/1.3.rst 1970-01-01 00:00:00 +0000
4745+++ doc/source/release-notes/1.3.rst 2012-02-16 17:09:19 +0000
4746@@ -0,0 +1,17 @@
4747+========================
4748+Version 1.3 (unreleased)
4749+========================
4750+
4751+Major changes:
4752+--------------
4753+
4754+* Port to |Percona Server| 5.1.47-11
4755+
4756+* Separate into two binaries - xtrabackup for |Percona Server| and xtrabackup_50 for |MySQL| 5.x.
4757+
4758+Fixed Bugs:
4759+-----------
4760+
4761+* Fixed `Bug #561106 <https://bugs.launchpad.net/percona-xtrabackup/+bug/561106>`_: incremental crash
4762+
4763+* Fixed duplicate ``close()`` problem at ``xtrabackup_copy_datafile()``.
4764
4765=== added file 'doc/source/release-notes/1.4.rst'
4766--- doc/source/release-notes/1.4.rst 1970-01-01 00:00:00 +0000
4767+++ doc/source/release-notes/1.4.rst 2012-02-16 17:09:19 +0000
4768@@ -0,0 +1,39 @@
4769+========================
4770+Percona |XtraBackup| 1.4
4771+========================
4772+
4773+Released on November 22, 2010
4774+
4775+Percona |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.
4776+
4777+Functionality Added or Changed
4778+------------------------------
4779+
4780+* `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)
4781+
4782+ * The |XtraBackup| Test Suite was implemented and is now a standard part of each distribution. (Aleksandr Kuzminsky)
4783+
4784+* Other New Features
4785+
4786+ * The :option:`--prepare` now reports ``xtrabackup_binlog_pos_innodb`` if the information exists. (Yasufumi Kinoshita)
4787+
4788+ * 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)
4789+
4790+ * The :option:`--table` was extended to accept several regular expression arguments, separated by commas. (Yasufumi Kinoshita)
4791+
4792+* Other Changes
4793+
4794+ * Ported to the |Percona Server| 5.1.47 code base. (Yasufumi Kinoshita)
4795+
4796+ * |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)
4797+
4798+Bugs Fixed
4799+----------
4800+
4801+* `Bug #595770 <https://bugs.launchpad.net/bugs/595770>`_ - XtraBack binaries are now shipped containing debug symbols by default. (Aleksandr Kuzminsky)
4802+
4803+* `Bug #589639 <https://bugs.launchpad.net/bugs/589639>`_ - Fixed a problem of hanging when tablespaces were deleted during the recovery process. (Yasufumi Kinoshita)
4804+
4805+* `Bug #611960 <https://bugs.launchpad.net/bugs/611960>`_ - Fixed a segmentation fault in |xtrabackup|. (Yasufumi Kinoshita)
4806+
4807+* Miscellaneous important fixes related to incremental backups.
4808
4809=== added file 'doc/source/release-notes/1.5.rst'
4810--- doc/source/release-notes/1.5.rst 1970-01-01 00:00:00 +0000
4811+++ doc/source/release-notes/1.5.rst 2012-02-16 17:09:19 +0000
4812@@ -0,0 +1,35 @@
4813+=============================
4814+Percona |XtraBackup| 1.5-Beta
4815+=============================
4816+
4817+Released December 13, 2010 (`downloads <http://www.percona.com/downloads/XtraBackup/XtraBackup-1.5/>`_)
4818+
4819+This release adds additional functionality to Percona |XtraBackup| 1.4, the current general availability version of |XtraBackup|. This is a beta release.
4820+
4821+Functionality Added or Changes
4822+------------------------------
4823+
4824+* Support for |MySQL| 5.5 databases has been implemented. (Yasufumi Kinoshita)
4825+
4826+* |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)
4827+
4828+* The program is now distributed as three separate binaries:
4829+
4830+ * |xtrabackup| - for use with |Percona Server| with the built-in |InnoDB| plugin
4831+
4832+ * :command:`xtrabackup_51` - for use with MySQL 5.0 & 5.1 with built-in |InnoDB|
4833+
4834+ * :command:`xtrabackup_55` - for use with |MySQL| 5.5 (this binary is not provided for the FreeBSD platform)
4835+
4836+* Backing up only specific tables can now be done by specifying them in a file, using the :option:`--tables-file`. (Yasufumi Kinoshita & Daniel Nichter)
4837+
4838+* 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)
4839+
4840+* The |XtraBackup| binaries are now compiled with the ``-O3`` :command:`gcc` option, which may improve backup speed in stream mode in some cases.
4841+
4842+* 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)
4843+
4844+Bugs Fixed
4845+----------
4846+
4847+* `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)
4848
4849=== added directory 'doc/source/release-notes/1.6'
4850=== added file 'doc/source/release-notes/1.6/1.6.0.rst'
4851--- doc/source/release-notes/1.6/1.6.0.rst 1970-01-01 00:00:00 +0000
4852+++ doc/source/release-notes/1.6/1.6.0.rst 2012-02-16 17:09:19 +0000
4853@@ -0,0 +1,64 @@
4854+==========================
4855+|Percona| |XtraBackup| 1.6
4856+==========================
4857+
4858+Released 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>`_.)
4859+
4860+Options Added
4861+-------------
4862+
4863+* 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)
4864+
4865+* 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)
4866+
4867+* Added option :option:`--incremental-dir` to |innobackupex|. This option is passed directly to the |xtrabackup| binary. (Vadim Tkachenko)
4868+
4869+* Added option :option:`--safe-slave-backup` to |innobackupex|. (Daniel Nichter)
4870+
4871+* Added option :option:`--safe-slave-backup-timeout` to |innobackupex|. (Daniel Nichter)
4872+
4873+Other Changes
4874+-------------
4875+
4876+* Eliminated some compiler warnings. (Stewart Smith)
4877+
4878+* 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)
4879+
4880+* Updates were made to the built-in |innobackupex| usage docs. (Baron Schwartz, Fred Linhoss)
4881+
4882+* Added a manual page for |XtraBackup|. (Aleksandr Kuzminsky)
4883+
4884+* 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)
4885+
4886+* Fixed |xtrabackup| exit code to improve portability: ``EXIT_SUCCESS`` on success and ``EXIT_FAILURE`` on a failure. (Aleksandr Kuzminsky)
4887+
4888+* For portability, the |XtraBackup| build script now tries to link with ``libaio`` only on Linux. (Aleksandr Kuzminsky)
4889+
4890+Bugs Fixed
4891+----------
4892+
4893+* `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)
4894+
4895+* `Bug #420181 <https://bugs.launchpad.net/bugs/420181>`_ - The |innobackupex| script now backs up :term:`.CSV` tables. (Valentine Gostev)
4896+
4897+* `Bug #597384 <https://bugs.launchpad.net/bugs/597384>`_ - The ``innobackup`` :option:`--include` option now handles non-|InnoDB| tables. (Vadim Tkachenko)
4898+
4899+* `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)
4900+
4901+* `Bug #646647 <https://bugs.launchpad.net/bugs/646647>`_ - Removed the bogus warning about invalid data in the Perl version string in |innobackupex|. (Baron Schwartz)
4902+
4903+* `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)
4904+
4905+* `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.
4906+
4907+* `Bug #688417 <https://bugs.launchpad.net/bugs/688417>`_ - It's now possible to do incremental backups for compressed |InnoDB| tables.
4908+
4909+* `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)
4910+
4911+* `Bug #703070 <https://bugs.launchpad.net/bugs/703070>`_ - ``xtrabackup_55`` crashed with an assertion failure on non-Linux platforms. (Alexey Kopytov)
4912+
4913+* `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)
4914+
4915+* `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)
4916+
4917+* `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)
4918
4919=== added file 'doc/source/release-notes/1.6/1.6.2.rst'
4920--- doc/source/release-notes/1.6/1.6.2.rst 1970-01-01 00:00:00 +0000
4921+++ doc/source/release-notes/1.6/1.6.2.rst 2012-02-16 17:09:19 +0000
4922@@ -0,0 +1,40 @@
4923+============================
4924+|Percona| |XtraBackup| 1.6.2
4925+============================
4926+
4927+Percona 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>`_).
4928+
4929+This release is purely composed of bug fixes and is the current stable release of |Percona| |Xtrabackup|.
4930+
4931+All 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>`_.
4932+
4933+New Options
4934+-----------
4935+
4936+:option:`--version`
4937+~~~~~~~~~~~~~~~~~~~
4938+
4939+ 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).
4940+
4941+Changes
4942+-------
4943+
4944+ * 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).
4945+
4946+Bugs Fixed
4947+----------
4948+
4949+ * 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).
4950+
4951+ * 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).
4952+
4953+ * Minor file descriptors leaks in error cases were fixed. Bug Fixed: `#803718 <https://bugs.launchpad.net/bugs/803718>`_ (Stewart Smith).
4954+
4955+Other Changes
4956+-------------
4957+
4958+ * Improvements and fixes on the XtraBackup Test Suite: `#744303 <https://bugs.launchpad.net/bugs/744303>`_, `#787966 < <https://bugs.launchpad.net/bugs/787966>`_ (Alexey Kopytov)
4959+
4960+ * Improvements and fixes on platform-specific distribution: `#785556 <https://bugs.launchpad.net/bugs/785556>`_ (Ignacio Nin)
4961+
4962+ * Improvements and fixes on the XtraBackup Documentation: `#745185 <https://bugs.launchpad.net/bugs/745185>`_, `#721339 <https://bugs.launchpad.net/bugs/721339>`_ (Rodrigo Gadea)
4963
4964=== added file 'doc/source/release-notes/1.6/1.6.3.rst'
4965--- doc/source/release-notes/1.6/1.6.3.rst 1970-01-01 00:00:00 +0000
4966+++ doc/source/release-notes/1.6/1.6.3.rst 2012-02-16 17:09:19 +0000
4967@@ -0,0 +1,40 @@
4968+============================
4969+|Percona| |XtraBackup| 1.6.3
4970+============================
4971+
4972+Percona 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>`).
4973+
4974+This release is purely composed of bug fixes and is the current stable release of |Percona| |Xtrabackup|.
4975+
4976+If 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.
4977+
4978+All 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>`_.
4979+
4980+
4981+Bugs Fixed
4982+----------
4983+
4984+ * Streaming backups did not work for compressed |InnoDB| tables due to missing support for compressed pages in |tar4ibd|. Bug Fixed: :bug:`665210` (*Alexey Kopytov*).
4985+
4986+ * |XtraBackup| failed when ``innodb_flush_method`` in the server configuration file was set to ``ALL_O_DIRECT``. Bug Fixed: :bug:`759225` (*Alexey Kopytov*).
4987+
4988+ * 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*).
4989+
4990+ * 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*).
4991+
4992+ * :program:`tar4ibd` could fail with an error when processing doublewrite pages. Bug Fixed: :bug:`810269` (*Alexey Kopytov*).
4993+
4994+ * Unsupported command line options could cause a :program:`tar4ibd` crash. Such options have been removed. Bug Fixed: :bug:`677279` (*Alexey Kopytov*).
4995+
4996+ * 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.
4997+ 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*).
4998+
4999+
5000+Other Changes
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches