Merge lp:~hrvojem/percona-xtrabackup/xb-1.6-docsplit into lp:percona-xtrabackup/1.6
- xb-1.6-docsplit
- Merge into release-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 |
Related bugs: | |
Related blueprints: |
Split 1.6 and 2.0 documentation
(Undefined)
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Alexey Kopytov (community) | Approve | ||
Review via email: mp+93460@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
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' |
314 | Binary 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' |
316 | Binary 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 & 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 ' »' 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 = " — "|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 %}© <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %} |
3315 | + {%- else %} |
3316 | + {% trans copyright=copyright|e %}© 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-->]]></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 © 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-->]]></span> |
3358 | + </div> |
3359 | + </div> |
3360 | + |
3361 | + </div> |
3362 | +{%- endblock %} |
3363 | +<span class="inv"><!--[CDATA[<noindex-->]]></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 & 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 & 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 & 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 & 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 & 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' |
4041 | Binary 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' |
4456 | Binary 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' |
4458 | Binary 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' |
4460 | Binary 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>«</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' |
4618 | Binary 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' |
4620 | Binary 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' |
4622 | Binary 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' |
4624 | Binary 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' |
4626 | Binary 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' |
4628 | Binary 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' |
4630 | Binary 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' |
4632 | Binary 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' |
4634 | Binary 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' |
4636 | Binary 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' |
4638 | Binary 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' |
4640 | Binary 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' |
4642 | Binary 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' |
4644 | Binary 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' |
4646 | Binary 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' |
4648 | Binary 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' |
4650 | Binary 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' |
4652 | Binary 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' |
4654 | Binary 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' |
4656 | Binary 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' |
4658 | Binary 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' |
4660 | Binary 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' |
4699 | Binary 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' |
4701 | Binary 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.
Approved. Will merge to 1.6 and null-merge to trunk.