diff --git a/_resource/overrides/main.html b/_resource/overrides/main.html index a707760c1..1591bc074 100644 --- a/_resource/overrides/main.html +++ b/_resource/overrides/main.html @@ -1,66 +1,119 @@ -{# MkDocs template for builds with Material Theme to customize docs layout by adding marketing-requested elements #} +{# + MkDocs template for builds with Material theme to customize docs layout + by adding marketing-requested elements +#} +{# Import the theme's layout. #} {% extends "base.html" %} +{% block announce %} +
+ Where the open source database community meets: + Secure your spot for Percona Live. + + + + Register + + +
+{% endblock %} + {% block scripts %} - {{ super() }} + {% endblock %} - + {% block extrahead %} {{ super() }} - {% set title = config.site_name %} - {% if page and page.meta and page.meta.title %} - {% set title = title ~ " - " ~ page.meta.title %} - {% elif page and page.title and not page.is_homepage %} - {% set title = title ~ " - " ~ page.title %} - {% endif %} - - - - +{% set title = config.site_name %} +{% if page and page.meta and page.meta.title %} +{% set title = title ~ " - " ~ page.meta.title %} +{% elif page and page.title and not page.is_homepage %} +{% set title = title ~ " - " ~ page.title %} +{% endif %} + + + + {% endblock %} - {% block site_nav %} - {% if nav %} - {% if page.meta and page.meta.hide %} - {% set hidden = "hidden" if "navigation" in page.meta.hide %} - {% endif %} - - {% endif %} - {% if "toc.integrate" not in features %} - {% if page.meta and page.meta.hide %} - {% set hidden = "hidden" if "toc" in page.meta.hide %} - {% endif %} - - {% endif %} +{% block site_nav %} +{% if nav %} + {% if page.meta and page.meta.hide %} + {% set hidden = "hidden" if "navigation" in page.meta.hide %} + {% endif %} + +{% endif %} +{% if "toc.integrate" not in features %} + {% if page.meta and page.meta.hide %} + {% set hidden = "hidden" if "toc" in page.meta.hide %} + {% endif %} + +{% endif %} +{% endblock %} + +{% block content %} + +{{ super() }} + + +window.addEventListener('afterprint', (event) => { + for (const detailEl of document.querySelectorAll('details')) { + if (detailEl.getAttribute('data-was-closed') != null) { + detailEl.removeAttribute('data-was-closed') + detailEl.removeAttribute('open') + } + } +}) + - {% endblock %} + - +{% endblock %} \ No newline at end of file diff --git a/_resource/overrides/partials/banner.html b/_resource/overrides/partials/banner.html index b3c16fce6..0dabd31e4 100644 --- a/_resource/overrides/partials/banner.html +++ b/_resource/overrides/partials/banner.html @@ -4,6 +4,6 @@
- Get help from Percona + Get help from Percona
diff --git a/_resource/templates/styles.scss b/_resource/templates/styles.scss deleted file mode 100644 index e2777e3c8..000000000 --- a/_resource/templates/styles.scss +++ /dev/null @@ -1,110 +0,0 @@ -/* Style for PDF created by MkDocs with mkdocs-with-pdf plugin (https://pypi.org/project/mkdocs-with-pdf/) */ -@media print { - html { - font-size: 100%; - font-family: "Poppins", sans-serif; - } - - body { - font-family: "Poppins", sans-serif; - color: #00162b; - } - - article { - font-family: "Poppins", sans-serif; - text-align: justify; - } - - pre, - code, - var, - samp, - kbd, - tt { - font-family: monospace; - font-size: 110%; - } - - pre code, - pre var, - pre samp, - pre kbd, - pre tt { - font-size: 110%; - } -} - -@page { - size: a4 portrait; - margin: 25mm 20mm 25mm 20mm; - counter-increment: page; - white-space: pre; - color: #00162b; - - @top-right { - content: string(chapter); - } - - @bottom-left { - content: string(subtitle); - } - - @bottom-center { - content: counter(page)' of 'counter(pages); - } - - @bottom-right { - } -} - -@page :first { - @top-right { - content: ''; - } - - @bottom-right { - content: ''; - } - - @bottom-left { - content: ''; - } -} - -article { - page-break-before: always; - min-height: 100%; -} - -article { - - h1, - h2, - h3 { - border-bottom: 0px solid #fff; - } - - h1>.pdf-order, - h2>.pdf-order, - h3>.pdf-order { - padding-left: 6px; - padding-right: 0.8rem; - } -} - -article h1, -h2, -h3 { - border-bottom: 0px solid #fff; - color: #3e4875; -} - -.admonition { - font-size: 100%; -} - -.md-typeset .admonition.note, -.md-typeset details.note { - color: #00162b; - border-color: #fff; -} \ No newline at end of file diff --git a/_resourcepdf/overrides/main.html b/_resourcepdf/overrides/main.html index bfaf3a553..1591bc074 100644 --- a/_resourcepdf/overrides/main.html +++ b/_resourcepdf/overrides/main.html @@ -1,10 +1,10 @@ {# MkDocs template for builds with Material theme to customize docs layout by adding marketing-requested elements - #} - - {# Import the theme's layout. #} - {% extends "base.html" %} +#} + +{# Import the theme's layout. #} +{% extends "base.html" %} {% block announce %}
@@ -14,112 +14,106 @@ - - Register - - -
+ target="_blank" + data-type="url" + style=" + padding: 5px 20px; + display: inline-block; + margin-left: 10px; + background-color: #e65a15; + border-radius: 999px; + text-decoration: none; + " + > + + Register + + + {% endblock %} - {% block scripts %} +{% block scripts %} {{ super() }} {% endblock %} - + {% block extrahead %} {{ super() }} - {% set title = config.site_name %} - {% if page and page.meta and page.meta.title %} - {% set title = title ~ " - " ~ page.meta.title %} - {% elif page and page.title and not page.is_homepage %} - {% set title = title ~ " - " ~ page.title %} - {% endif %} - - - - +{% set title = config.site_name %} +{% if page and page.meta and page.meta.title %} +{% set title = title ~ " - " ~ page.meta.title %} +{% elif page and page.title and not page.is_homepage %} +{% set title = title ~ " - " ~ page.title %} +{% endif %} + + + + +{% endblock %} + +{% block site_nav %} +{% if nav %} + {% if page.meta and page.meta.hide %} + {% set hidden = "hidden" if "navigation" in page.meta.hide %} + {% endif %} + +{% endif %} +{% if "toc.integrate" not in features %} + {% if page.meta and page.meta.hide %} + {% set hidden = "hidden" if "toc" in page.meta.hide %} + {% endif %} + +{% endif %} {% endblock %} - - {% block site_nav %} - {% if nav %} - {% if page.meta and page.meta.hide %} - {% set hidden = "hidden" if "navigation" in page.meta.hide %} - {% endif %} - - {% endif %} - {% if "toc.integrate" not in features %} - {% if page.meta and page.meta.hide %} - {% set hidden = "hidden" if "toc" in page.meta.hide %} - {% endif %} - - {% endif %} - {% endblock %} - - {% block content%} - - {{ super() }} - - - + +{% block content %} + +{{ super() }} + + - {% endblock %} +{% endblock %} \ No newline at end of file diff --git a/docs/_static/percona-logomark-one-color-dark.png b/docs/_static/percona-logomark-one-color-dark.png new file mode 100644 index 000000000..28fbf02e9 Binary files /dev/null and b/docs/_static/percona-logomark-one-color-dark.png differ diff --git a/docs/about-xtrabackup.md b/docs/about-xtrabackup.md index c4b5c26ac..d0a4484fa 100644 --- a/docs/about-xtrabackup.md +++ b/docs/about-xtrabackup.md @@ -24,7 +24,7 @@ With Percona XtraBackup you can: ## Support -Percona’s enterprise-grade commercial [MySQL Support :octicons-link-external-16:](http://www.percona.com/mysql-support/) contracts include support for Percona XtraBackup. We recommend support for critical production deployments. +Percona’s enterprise-grade commercial [MySQL Support :octicons-link-external-16:](https://www.percona.com/services/expert-support/) contracts include support for Percona XtraBackup. We recommend support for critical production deployments. ## Supported storage engines diff --git a/docs/backup-size-reporting.md b/docs/backup-size-reporting.md new file mode 100644 index 000000000..6d0b1c5ed --- /dev/null +++ b/docs/backup-size-reporting.md @@ -0,0 +1,163 @@ +# Backup size reporting + +## Overview + +Percona XtraBackup reports the size of every successful backup in `xtrabackup_info` and reports the same values in the XtraBackup error log. + +Backup size reporting helps estimate storage requirements, check that backups work correctly, and plan restores for compressed and streamed backups. + +## Why external tools cannot accurately measure backup size + +External tools cannot reliably determine the final size of XtraBackup output in many backup configurations. + +Backup size often differs from the MySQL datadir size because Percona XtraBackup also copies redo log data generated during the backup process. + +Several backup features further change the final output size: + +* [`--stream=xbstream`](binaries-overview.md#xbstream) adds xbstream metadata + +* [`--compress`](create-compressed-backup.md) reduces the final backup size according to data compressibility + +* Sparse InnoDB tablespaces affect filesystem size reporting + +* Streaming and cloud uploads may not produce local backup files for measurement + +* Compression, encryption, and streaming pipelines prevent external tools from accurately calculating final backup size + +Compressed backups also require sufficient free space during decompression and restore. Reporting the uncompressed backup size helps estimate restore storage requirements before recovery operations begin. + +## How backup size reporting works + +Percona XtraBackup records backup size at the end of every successful backup. Backup size reporting is enabled by default and requires no additional configuration. + +Percona XtraBackup calculates backup size after all backup operations complete, including: + +* Compression + +* Encryption + +* xbstream formatting + +* Sparse file handling + +For sparse InnoDB tablespaces, Percona XtraBackup counts only written data fragments and excludes filesystem hole ranges. + +The reported backup size matches the exact number of bytes written to the backup destination. + +Compressed backups additionally report: + +* `uncompressed_backup_size` + +* Compression ratio + +Percona XtraBackup calculates `uncompressed_backup_size` separately from the final compressed backup size so that the reported value reflects the logical backup size before compression. + +Percona XtraBackup stores the reported values in: +Expand commentComment on line R60Resolved +* `xtrabackup_info` + +* XtraBackup error log + +### Reported values + +| Field | Description | +|---|---| +| `backup_size` | Final backup output size in bytes | +| `uncompressed_backup_size` | Total uncompressed logical backup size in bytes | +| Compression ratio | Ratio between `uncompressed_backup_size` and `backup_size` reported in the XtraBackup error log | + +### `xtrabackup_info` + +Percona XtraBackup writes backup size metadata to `xtrabackup_info` in the backup output. + +Depending on backup configuration, `xtrabackup_info` in the backup output may be: + +* Plaintext + +* Compressed + +* Encrypted + +* Embedded inside an xbstream archive + +Streamed backups store `xtrabackup_info` inside the xbstream output. + +If `xtrabackup_info` is not plaintext, you can create a separate plaintext copy of `xtrabackup_info` using the `--extra-lsndir=` option. + +!!! note + + Files created in the `--extra-lsndir=` directory are not part of the backup. + +### XtraBackup error log + +Percona XtraBackup prints information about backup size near the end of the backup operation before the `completed OK!` message. + +The log output includes: + +* Human-readable size + +* Exact byte count + +* Compression ratio + +## Output + +### Uncompressed backup example + +The following example shows `xtrabackup_info` from a backup created with `--target-dir`. + +```text +uuid = 122a291d-48b0-11f1-9d76-047bcbcb6b7e +name = +tool_name = xtrabackup +tool_command = --backup --no-defaults --user=root --socket=/tmp/pxb-folder/mysql.sock --target-dir=/tmp/pxb-folder/backup --extra-lsndir=/tmp/pxb-folder/lsndir --datadir=/tmp/pxb-folder/datadir +tool_version = 8.4.0-6 +ibbackup_version = 8.4.0-6 +server_version = 8.4.8-8 +server_flavor = Percona Server (GPL), Release 8, Revision 1c288264 +start_time = 2026-05-05 19:27:26 +end_time = 2026-05-05 19:27:28 +lock_time = 0 +binlog_pos = filename 'binlog.000002', position '158' +innodb_from_lsn = 0 +innodb_to_lsn = 24785178 +partial = N +incremental = N +format = file +compressed = N +encrypted = N +lock_ddl_type = ON +backup_size = 88689086 +``` + +The XtraBackup error log contains the corresponding backup size entry: + +```text +2026-05-05T19:27:28.140024+01:00 0 [Note] [MY-011825] [Xtrabackup] Backup size: 84.58 MiB (88689086 bytes) +2026-05-05T19:27:29.382428+01:00 0 [Note] [MY-011825] [Xtrabackup] completed OK! +``` + +### Compressed backup example + +Compressed backups additionally report the uncompressed backup size and compression ratio. + +The following example shows the final lines of `xtrabackup_info` with backup size values reported in bytes: + +```text +backup_size = 1832398 +uncompressed_backup_size = 88689148 +``` + +The XtraBackup error log contains the corresponding output: + +```text +2026-05-05T19:27:42.851038+01:00 0 [Note] [MY-011825] [Xtrabackup] Backup size: 1.75 MiB (1832398 bytes) +2026-05-05T19:27:42.851055+01:00 0 [Note] [MY-011825] [Xtrabackup] Uncompressed backup size: 84.58 MiB (88689148 bytes) +2026-05-05T19:27:42.851065+01:00 0 [Note] [MY-011825] [Xtrabackup] Compression ratio: 48.40x +``` + +Percona XtraBackup calculates the compression ratio as: + +```text +uncompressed_backup_size / backup_size +``` diff --git a/docs/backup-strategy.md b/docs/backup-strategy.md index f6dbf60c7..627360385 100644 --- a/docs/backup-strategy.md +++ b/docs/backup-strategy.md @@ -91,7 +91,7 @@ You must test the effectiveness of your backups and demonstrate that you can rec |--------|---------| | Perform Regular Test Restores | The most reliable way to test backups is to periodically restore the data to a separate system. This verifies the backup's integrity and the restoration process's functionality. | | Monitor Backup Reports | Regularly review backup reports and logs for any errors or failures during the backup process. This can help identify issues early before they become critical problems. | -| Check for Data Consistency | Compare the original data with the backed-up data to ensure consistency. This can be done by checking file sizes, using checksums, or employing other data validation techniques. You can use [pt-table-checksum](https://docs.percona.com/percona-toolkit/latest/pt-table-checksum.html) from Percona Toolkit. | +| Check for Data Consistency | Compare the original data with the backed-up data to ensure consistency. This can be done by checking file sizes, using checksums, or employing other data validation techniques. You can use [pt-table-checksum](https://docs.percona.com/percona-toolkit/pt-table-checksum.html) from Percona Toolkit. | | Simulate Disaster Scenarios | Conducting a simulated disaster recovery exercise can help determine how well your backup system will perform under stress and identify any gaps in your recovery plan. | | Audit Backup Procedures | Regular audits of the backup procedures can ensure that the backups are being performed in accordance with the established policies and that the backup system is functioning as expected. | | Validate Backup Configuration | Ensure that the backup configuration is correct and that all necessary data is being backed up. This includes checking backup schedules, retention policies, and the scope of the data backed up. | diff --git a/docs/css/kapa.css b/docs/css/kapa.css new file mode 100644 index 000000000..d2964b520 --- /dev/null +++ b/docs/css/kapa.css @@ -0,0 +1,64 @@ +button#ask-percona-ai { + display: inline-flex; + align-items: center; + justify-content: center; + + gap: 0.45rem; + + /* Match MkDocs Material search field */ + height: 1.8rem; + padding: 0 0.9rem; + margin-left: 0.5rem; + + border: none; + border-radius: 0.1rem; + + background: #AB4213; + color: #E7C8BB; + + box-shadow: var(--md-shadow-z1); + + cursor: pointer; + + font-family: inherit; + font-size: 0.8rem; + font-weight: 400; + line-height: 1; + + white-space: nowrap; + + transition: + background-color 0.25s ease, + box-shadow 0.25s ease; +} + +button#ask-percona-ai:hover { + background: #EB6F3B; +} + +button#ask-percona-ai:focus-visible { + outline: none; + box-shadow: + 0 0 0 0.1rem rgba(235, 111, 59, 0.35), + var(--md-shadow-z2); +} + +button#ask-percona-ai .percona-star, +button#ask-percona-ai .percona-text { + color: inherit; +} + +button#ask-percona-ai .percona-star { + font-size: 0.85rem; + line-height: 1; +} + +@media screen and (max-width: 768px) { + button#ask-percona-ai { + padding: 0 0.75rem; + } + + button#ask-percona-ai .percona-text { + display: none; + } +} \ No newline at end of file diff --git a/docs/css/percona.css b/docs/css/percona.css deleted file mode 100644 index cf78948ff..000000000 --- a/docs/css/percona.css +++ /dev/null @@ -1,148 +0,0 @@ -[data-md-color-scheme="percona-light"] { - --md-primary-fg-color: #0d184c; - --md-primary-fg-color--light: #3e4875; - --md-default-fg-color--lightest: #9096b0; - --md-primary-fg-color--dark: #080e2e; - --md-typeset-a-color: #2cbea2; -} -[data-md-color-scheme="slate"] { - --md-primary-fg-color: #0d184c; - /* - --md-primary-fg-color--light: #3e4875; - --md-primary-fg-color--dark: #080e2e; - */ - --md-typeset-a-color: #2cbea2; - --md-hue: 210; /* [0, 360] */ - } -ul li p { - margin: 0; -} - -.md-clipboard { - color: #2cbea2; -} - -.md-typeset { - font-size: .7rem; - line-height: 1.5; -} - -.md-typeset h1 { -color: var(--md-default-fg-color--light); -font-size: 2em; -font-weight: 400; -line-height: 1.3; -margin: 0 0 0.9em; -} - -.md-typeset h2 { -font-size: 1.5625em; -line-height: 1.4; -margin: 1em 0 .54em; -} - -article table { - page-break-before: auto !important; - page-break-inside: auto !important; -} - -article ol { - page-break-before: auto !important; - page-break-inside: auto !important; -} - -.md-typeset .md-button { - border: .1rem solid; - border-radius: 50px; - color: var(--md-typeset-a-color); - cursor: pointer; - display: inline-block; - font-weight: 700; - padding: .625em 2em; - transition:color 125ms, background-color 125ms, border-color 125ms -} - -.md-typeset .md-button--primary { - background-color: var(--md-typeset-a-color); - border-color: var(--md-typeset-a-color); - color:var(--md-primary-bg-color) -} - -.md-typeset .md-button:focus, .md-typeset .md-button:hover { - background-color: var(--md-accent-fg-color); - border-color: var(--md-accent-fg-color); - color:var(--md-accent-bg-color) -} - -section { - page-break-before: auto !important; - page-break-inside: auto !important; -} - -/* Custom Banner */ -[data-banner] { - padding: 1.5em; - margin: 2em 0; - border: 0.05rem solid var(--md-default-fg-color--lighter); - /* border: 0.05rem solid var(--md-typeset-table-color); */ - border-radius: 0.2rem; -} -[data-banner] .title { - font-weight: normal; - margin: 0; -} -[data-banner] > :last-child { - margin-bottom: 0; -} -[data-banner] a:link { - font-weight: bold; -} -[data-banner] .actions > p { - margin: 0; -} -[data-banner] .actions a { - display: inline-block; - margin: 0.5em 1.5em 0 0; -} -[data-banner] > :only-child, -[data-banner] .actions a:first-of-type { - margin-top: 0; -} -[data-banner] a [class*="moji"] { - height: 1.3333em; - vertical-align: -0.3333em; -} -[data-banner] a [class*="moji"] svg { - width: 1.3333em; -} -[data-grid] { - display: flex; - flex-wrap: wrap; - margin-right: -1rem; -} -[data-grid] [data-banner] { - flex: 1 1 320px; - display: flex; - flex-direction: column; - margin: 0 1rem 1rem 0; -} -[data-grid] .title { - font-size: 0.8rem; - font-weight: bold; -} -[data-grid] [data-banner] > p:last-child { - margin-top: 0; -} -[data-grid] [data-banner] > p:nth-last-child(2) { - flex-grow: 2; -} -[data-grid] + [data-banner] { - margin-top: 0; -} -[data-grid] .md-button { - margin: 0.5em 0.25em 0 0; -} - -/*.git-revision-date-localized-plugin:before { - content: url('https://api.iconify.design/mdi/clock-edit-outline.svg'); -}*/ \ No newline at end of file diff --git a/docs/glossary.md b/docs/glossary.md index b75e81942..9a70d907d 100644 --- a/docs/glossary.md +++ b/docs/glossary.md @@ -186,7 +186,7 @@ To support simultaneous compression and streaming, Percona XtraBackup uses the x ## XtraDB -Percona XtraDB is an enhanced version of the InnoDB storage engine, designed to better scale on modern hardware. Percona XtraDB includes features which are useful in a high performance environment. It is fully backward-compatible, and is a drop-in replacement for the standard InnoDB storage engine. For more information, see [The Percona XtraDB Storage Engine :octicons-link-external-16:](https://www.percona.com/doc/percona-server/innovation-release/percona-xtradb.html). +Percona XtraDB is an enhanced version of the InnoDB storage engine, designed to better scale on modern hardware. Percona XtraDB includes features which are useful in a high performance environment. It is fully backward-compatible, and is a drop-in replacement for the standard InnoDB storage engine. For more information, see [The Percona XtraDB Storage Engine :octicons-link-external-16:](https://docs.percona.com/percona-server/{{vers}}/percona-xtradb.html). ## Zstandard (ZSTD) diff --git a/docs/how-xtrabackup-works.md b/docs/how-xtrabackup-works.md index aa2250fd5..51d1ccfea 100644 --- a/docs/how-xtrabackup-works.md +++ b/docs/how-xtrabackup-works.md @@ -16,7 +16,7 @@ The `--register-redo-log-consumer` parameter is disabled by default. When enable Percona XtraBackup remembers the LSN when it starts, and then copies the data files. The operation takes time, and the files may change, then LSN reflects the state of the database at different points in time. Percona XtraBackup also runs a background process that watches the transaction log files, and copies any changes. Percona XtraBackup does this continually. The transaction logs are written in a round-robin fashion, and can be reused. -Percona XtraBackup uses [Backup locks :octicons-link-external-16:](https://docs.percona.com/percona-server/innovation-release/backup-locks.html) where available as a lightweight alternative to `FLUSH TABLES WITH READ LOCK`. MySQL {{vers}} allows acquiring an instance level backup lock via the `LOCK INSTANCE FOR BACKUP` statement. +Percona XtraBackup uses [Backup locks :octicons-link-external-16:](https://docs.percona.com/percona-server/8.4/backup-locks.html) where available as a lightweight alternative to `FLUSH TABLES WITH READ LOCK`. MySQL {{vers}} allows acquiring an instance level backup lock via the `LOCK INSTANCE FOR BACKUP` statement. Locking is only done for MyISAM and other non-InnoDB tables after Percona XtraBackup finishes backing up all InnoDB/XtraDB data and diff --git a/docs/index.md b/docs/index.md index d282958f1..465f1634a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -8,7 +8,7 @@ Percona XtraBackup is an open source hot backup utility for MySQL-based servers that keep your database fully available during planned maintenance windows. Whether it is a 24x7 highly loaded server or a low-transaction-volume -Percona XtraBackup is designed to make backups seamless without disrupting the performance of the server in a production environment. Percona XtraBackup (PXB) is a 100% open source backup solution with [commercial support :octicons-link-external-16:](https://www.percona.com/mysql-support/) available for organizations who want to benefit from comprehensive, responsive, and cost-flexible database support for MySQL. +Percona XtraBackup is designed to make backups seamless without disrupting the performance of the server in a production environment. Percona XtraBackup (PXB) is a 100% open source backup solution with [commercial support :octicons-link-external-16:](https://www.percona.com/services/expert-support/) available for organizations who want to benefit from comprehensive, responsive, and cost-flexible database support for MySQL. ## Percona XtraBackup features diff --git a/docs/innodb-btree-check.md b/docs/innodb-btree-check.md new file mode 100644 index 000000000..53f548e63 --- /dev/null +++ b/docs/innodb-btree-check.md @@ -0,0 +1,245 @@ +# InnoDB B-tree integrity validation during prepare + +## Overview + +The [`--check-tables`](xtrabackup-option-reference.md#check-tables) option validates the structural integrity of InnoDB B-tree indexes during the [`--prepare`](xtrabackup-option-reference.md#prepare) phase. Validation during `--prepare` helps detect corrupted indexes before restore or production deployment. + +## Why checksum validation is not enough + +Percona XtraBackup verifies InnoDB page checksums during `--backup`. These checks ensure that the backup contains checksum-valid pages at backup time. + +Checksum validation detects physical corruption within individual pages, including: + +* Torn-page corruption + +* Write corruption + +* Transfer corruption + +* Storage or filesystem corruption + +When the server modifies a page while XtraBackup copies it, XtraBackup retries the copy until the checksum becomes consistent. The retry process prevents partially modified pages from entering the backup. + +A successful backup therefore guarantees checksum-valid pages, but checksum validation alone cannot guarantee a fully valid restore. + +### Corruption can happen after backup creation + +A backup can become corrupted after creation because of storage or filesystem issues. + +During `--prepare`, XtraBackup only re-validates pages involved in redo application. Pages outside redo processing may never undergo another checksum check. + +For this reason, running `CHECK TABLE` after restore remains a recommended practice. `CHECK TABLE` forces page reads and validates both checksums and structural consistency. + +### Checksums do not verify page relationships + +Checksum validation only confirms that the bytes within a page match the checksum stored in the page header. + +XtraBackup does not validate B-tree structure or relationships between pages during backup. As a result, structurally corrupted pages can still enter the backup if those pages remain checksum-valid on the source server. + +Structural corruption rarely occurs and usually results from server bugs, backup tool bugs, storage failures, or filesystem-level corruption. + +Structural corruption can break B-tree page relationships, page metadata consistency, and external LOB references. For a complete list of detected corruption conditions, see [Detected corruption conditions](#detected-corruption-conditions). + +## How `--check-tables` works + +The `--check-tables` option executes `btr_validate_index()` on every index that is present and active in the InnoDB data dictionary for each `.ibd` tablespace, using the number of threads specified by [`--parallel`](xtrabackup-option-reference.md#parallel). `--check-tables` detects structural inconsistencies that page checksum verification cannot detect. The option applies only to InnoDB tables. + +In addition to structural validation, when `--check-tables` is used, XtraBackup verifies page checksums during InnoDB B-tree index traversal and performs additional checksum verification of the system tablespace (`ibdata*`) and undo tablespaces (`undo*.ibu`). + +Percona XtraBackup runs validation during the `--prepare` phase after applying the redo log. The validation process operates in read-only mode against backup files and does not modify backup contents. Validation continues after detecting corruption so that Percona XtraBackup can report all problematic tables and indexes in a single run. + +For each tablespace, Percona XtraBackup: + +1. Loads index metadata + +2. Identifies committed indexes + +3. Executes `btr_validate_index()` on each index + +4. Traverses B-tree pages and validates structural relationships + +5. Reports detected inconsistencies + +The option also works with: + +* [Parallel execution](#parallel-execution) through [`--parallel`](xtrabackup-option-reference.md#parallel) + +* Workflows that use [`--apply-log-only`](xtrabackup-option-reference.md#apply-log-only) + +* Transportable tablespace export with [`--export`](xtrabackup-option-reference.md#export) + +### Detected corruption conditions + +The validation process performs the following structural checks: + +| Check | Detected condition | +|------|---------------------| +| Broken sibling links | Invalid sibling-page or parent-page navigation pointers | +| `PAGE_INDEX_ID` mismatches | Page index ID does not match index metadata | +| Minimum-record flag validation | Minimum-record flag is missing or invalid | +| Parent-child pointer validation | Child page boundaries do not match parent node structure | +| External LOB validation | Shared, freed, or out-of-bounds LOB page references | +| All-zero page detection | Page contains only zero bytes | +| PRIMARY and secondary index record-count validation | Record count mismatch between the PRIMARY index and secondary indexes | + +### Offloading `CHECK TABLE` + +Similar to the InnoDB `CHECK TABLE` command, the `--check-tables` option validates InnoDB tables. However, Percona XtraBackup performs this validation offline on backup files during the `--prepare` phase, avoiding any performance impact on a live production server. + +Validation during `--prepare` moves structural integrity verification from restored database instances to the backup preparation workflow. A backup or staging host can run validation without starting MySQL on the restored backup. + +Using `--check-tables` during `--prepare` provides the following operational benefits: + +* Eliminates the need to start a MySQL server on restored backups solely for structural validation + +* Moves validation workload away from running production systems + +* Detects structural corruption earlier in the backup validation workflow + +* Detects corruption before restore or deployment + +### Parallel execution + +The `--check-tables` option uses the existing `--parallel` infrastructure from Percona XtraBackup. Worker threads process tablespaces independently. + +Each worker thread: + +1. Retrieves a tablespace from the shared queue + +2. Loads metadata for the tablespace + +3. Validates committed indexes + +4. Reports validation results + +### Limitations + +The `--check-tables` option has the following limitations: + +* Validation applies only to InnoDB tables and does not validate MyISAM or RocksDB tables + +* Validation runs only during `--prepare` + +* Validation increases CPU and I/O usage on the backup host + +* Runtime depends on the number of tablespaces and indexes + +* For incremental backups, use `--check-tables` only during the final prepare stage because the option verifies all tables and indexes each time it runs + +* Checksum corruption may cause XtraBackup to abort with an assertion failure instead of exiting gracefully + +## Usage + +The `--check-tables` option uses the thread count specified by `--parallel`. Start with `--parallel=8` and adjust the value according to CPU availability and disk I/O capacity on the backup host. + +### Validate a full backup + +```bash +xtrabackup --prepare --check-tables \ + --target-dir=/backups/full \ + --parallel=8 +``` + +### Validate an incremental backup + +The `--check-tables` option can be used together with `--apply-log-only`. However, because validation scans all tables and indexes each time it runs, it's recommended using the option during the final prepare stage of an incremental backup. + +```bash +xtrabackup --prepare --check-tables \ + --target-dir=/backups/full \ + --parallel=8 +``` + +### Validate and export tablespaces + +```bash +xtrabackup --prepare --export --check-tables \ + --target-dir=/backups/full \ + --parallel=8 +``` + +## Output + +A successful validation operation typically ends with a message similar to: + +```text +2026-05-15T15:41:57.808327+01:00 2 [Note] [MY-011825] [Xtrabackup] Checking: mysql/replication_group_member_actions +2026-05-15T15:41:57.808630+01:00 2 [Note] [MY-011825] [Xtrabackup] Checking: mysql/replication_group_configuration_version +2026-05-15T15:41:57.808810+01:00 2 [Note] [MY-011825] [Xtrabackup] Checking: mysql/server_cost +2026-05-15T15:41:57.808998+01:00 2 [Note] [MY-011825] [Xtrabackup] Checking: mysql/engine_cost +2026-05-15T15:41:57.809190+01:00 2 [Note] [MY-011825] [Xtrabackup] Checking: mysql/proxies_priv +2026-05-15T15:41:57.809511+01:00 2 [Note] [MY-011825] [Xtrabackup] Checking: mysql/ndb_binlog_index +2026-05-15T15:41:58.051499+01:00 0 [Note] [MY-011825] [Xtrabackup] All table checks passed. +``` + +A failed validation operation returns a non-zero exit code. During validation, XtraBackup logs each table as it processes it: + +```text +2026-05-15T13:42:23.691691+01:00 2 [Note] [MY-011825] [Xtrabackup] Checking: test/t1 +2026-05-15T13:42:23.697349+01:00 2 [Note] [MY-011825] [Xtrabackup] Checking: test/t_lob +2026-05-15T13:42:23.782555+01:00 2 [Note] [MY-011825] [Xtrabackup] Checking: mysql/dd_properties +2026-05-15T13:42:23.782835+01:00 2 [Note] [MY-011825] [Xtrabackup] Checking: mysql/innodb_dynamic_metadata +... +``` + +If validation detects corruption, XtraBackup reports the affected tables and ends with the following summary message: + +```text +2026-05-15T13:42:24.670469+01:00 0 [ERROR] [MY-011825] [Xtrabackup] Table check failed. The backup may be corrupted. +``` + +The log contains detailed information for each detected inconsistency. + +### Corruption examples + +1. Sibling page relationships corruption. + + ??? example "Expected output" + + ```{.text .no-copy} + 2026-05-15T13:42:20.270268+01:00 2 [ERROR] [MY-013051] [InnoDB] + In pages [page id: space=2, page number=5] + and [page id: space=2, page number=6] + of index PRIMARY of table test.t1 + + InnoDB: broken FIL_PAGE_NEXT or FIL_PAGE_PREV links + ``` + +2. Parent-to-child page references corruption. + + ??? example "Expected output" + + ```{.text .no-copy} + 2026-05-15T13:38:12.343921+01:00 2 [ERROR] [MY-011825] [InnoDB] + B-tree corruption: page 0 is empty but is not the root page + in index PRIMARY. Possible all-zero (unflushed) page. + ``` + +3. Page ownership metadata corruption. + + ??? example "Expected output" + + ```{.text .no-copy} + 2026-05-15T13:38:12.343894+01:00 2 [ERROR] [MY-011866] [InnoDB] + Page index id 0 != data dictionary index id 204 + ``` + +4. Minimum-record markers corruption. + + ??? example "Expected output" + + ```{.text .no-copy} + 2026-05-15T13:42:27.237530+01:00 2 [ERROR] [MY-014011] [InnoDB] + Minimum record flag is wrongly set to rec on page '4' + at level '0' for index 'PRIMARY' of table 'sys/sys_config'. + ``` + +5. External LOB page ownership corruption. + + ??? example "Expected output" + + ```{.text .no-copy} + 2026-05-15T13:42:34.475996+01:00 2 [ERROR] [MY-011825] [InnoDB] Invalid record! External LOB first page cannot be shared between two records + 2026-05-15T13:42:34.476009+01:00 2 [ERROR] [MY-011825] [InnoDB] The external LOB first page is [page id: space=4294967294, page number=1002] + 2026-05-15T13:42:34.476014+01:00 2 [ERROR] [MY-011825] [InnoDB] The first occurrence of the external LOB first page is in record : page_no: 992 with heap_no: 4 + ``` \ No newline at end of file diff --git a/docs/js/kapa.js b/docs/js/kapa.js new file mode 100644 index 000000000..c07b3dac7 --- /dev/null +++ b/docs/js/kapa.js @@ -0,0 +1,98 @@ +(function () { + function createAIButton() { + if (document.getElementById("ask-percona-ai")) { + return; + } + + const search = document.querySelector(".md-search"); + + if (!search || !search.parentNode) { + return; + } + + const button = document.createElement("button"); + + button.id = "ask-percona-ai"; + button.type = "button"; + + button.innerHTML = ` + + Ask Percona AI + `; + + // Place button AFTER search component + search.parentNode.insertBefore(button, search.nextSibling); + } + + function loadKapa() { + // Prevent duplicate loading + if (document.getElementById("kapa-widget-script")) { + return; + } + + const script = document.createElement("script"); + + script.id = "kapa-widget-script"; + + script.src = "https://widget.kapa.ai/kapa-widget.bundle.js"; + + script.async = true; + + // REQUIRED CONFIG + script.setAttribute( + "data-website-id", + "0e0d55cf-6370-4a6d-a987-96670a7fe935" + ); + + script.setAttribute( + "data-modal-override-open-selector", + "#ask-percona-ai" + ); + + script.setAttribute( + "data-button-hide", + "true" + ); + + script.setAttribute( + "data-project-name", + "Percona" + ); + + script.setAttribute( + "data-modal-title", + "Percona AI Assistant" + ); + + script.setAttribute( + "font-size", + "0.875rem" + ); + + // MODAL CONTENT + script.setAttribute( + "data-modal-disclaimer", + "The **Percona AI Assistant** helps you find simple, clear answers to your Percona questions using [official documentation](https://docs.percona.com/), resolved [forum posts](https://forums.percona.com/) and [blog posts](https://www.percona.com/blog/). Note, do not enter personal or confidential information. Before using Percona AI assistant, read the [Legal Notice](https://docs.percona.com/percona-xtrabackup/9.7/legal-notice.html)." + ); + + script.setAttribute( + "data-modal-example-questions", + "How do I get started quickly with Percona XtraBackup?, How do I install Percona XtraBackup?, How do I manage backups?, How do I use Percona XtraBackup binaries?" + ); + + script.setAttribute( + "data-project-logo", + "https://docs.percona.com/percona-xtrabackup/9.7/_static/percona-logomark-one-color-dark.png" + ); + + document.head.appendChild(script); + } + + createAIButton(); + loadKapa(); + + document.addEventListener("navigation.instant", () => { + createAIButton(); + loadKapa(); + }); +})(); diff --git a/docs/legal-notice.md b/docs/legal-notice.md new file mode 100644 index 000000000..624be3ffd --- /dev/null +++ b/docs/legal-notice.md @@ -0,0 +1,3 @@ +# Legal Notice + +You are interacting with an AI-powered chatbot that provides automated responses for general information about our IT services and software. Responses may be inaccurate or incomplete and do not constitute professional or contractual advice. Do not submit personal data, confidential information, credentials, or other sensitive information through this chat. Conversations may be logged and processed to improve our services in accordance with our [Privacy Policy](https://www.percona.com/privacy-policy#h.c033wws8ytgb) and applicable laws, including the GDPR. If you require assistance, please contact a [human representative](https://www.percona.com/about/contact). \ No newline at end of file diff --git a/docs/quickstart-restore-back.md b/docs/quickstart-restore-back.md index 28e8c3349..1f04cda4e 100644 --- a/docs/quickstart-restore-back.md +++ b/docs/quickstart-restore-back.md @@ -25,18 +25,18 @@ The following steps describe how to restore your backup to another Percona Serve | `-d` | Detaches the container. The container runs in the background. | | `-e` | Adds an environmental variable. This example adds the ` MYSQL_ROOT_PASSWORD ` environment variable. The instance refuses to initialize if no environmental variable is added. Choose a more secure password, if needed. | | `myvol2` | Indicates the persistent storage for the database. | - | `8.4` | Use this tag to specify a specific version. | + | `9.7` | Use this tag to specify a specific version. | You must provide at least one environment variable to access the database, such as `MYSQL_ROOT_PASSWORD`, `MYSQL_DATABASE`, `MYSQL_USER`, and `MYSQL_PASSWORD` or the instance refuses to initialize. - For this document, we are using the `8.4` tag. In Docker, a tag is a label assigned to an image. Tags are used to maintain different versions of an image. If we did not add a tag, Docker uses `latest` as the default tag and downloads the latest image from [percona/percona-server on the Docker Hub]. + For this document, we are using the `9.7` tag. In Docker, a tag is a label assigned to an image. Tags are used to maintain different versions of an image. If we did not add a tag, Docker uses `latest` as the default tag and downloads the latest image from [percona/percona-server on the Docker Hub]. To use a Docker volume for persistent storage with a database, specify the path where the database stores its data inside the container, usually `/var/lib/mysql`. * Run a Docker container example ```shell - docker run -d -p 3307:3306 --name psmysql2 -e MYSQL_ROOT_PASSWORD=secret -v myvol2:/var/lib/mysql percona/percona-server:8.4 + docker run -d -p 3307:3306 --name psmysql2 -e MYSQL_ROOT_PASSWORD=secret -v myvol2:/var/lib/mysql percona/percona-server:9.7 ``` ??? example "Expected output" @@ -63,7 +63,7 @@ The following steps describe how to restore your backup to another Percona Serve The `--rm` option automatically removes the temporary container created from percona/percona-xtrabackup:8.0.34 image after the container exits. ```shell - docker run --volumes-from psmysql2 -v backupvol:/backup_84 -it --rm --user root percona/percona-xtrabackup:8.4 /bin/bash -c "rm -rf /var/lib/mysql/*" + docker run --volumes-from psmysql2 -v backupvol:/backup_97 -it --rm --user root percona/percona-xtrabackup:9.7 /bin/bash -c "rm -rf /var/lib/mysql/*" ``` If the command executes successfully, the expected output is empty. @@ -71,16 +71,16 @@ The following steps describe how to restore your backup to another Percona Serve 5. Restore backup of `psmysql` from `backupvol` to a new `psmysql2` instance. ```shell - docker run --platform linux/amd64 --volumes-from psmysql2 -v backupvol:/backup_84 -it --rm --user root percona/percona-xtrabackup:8.4 /bin/bash -c "xtrabackup --copy-back --datadir=/var/lib/mysql/ --target-dir=/backup_84" + docker run --platform linux/amd64 --volumes-from psmysql2 -v backupvol:/backup_97 -it --rm --user root percona/percona-xtrabackup:9.7 /bin/bash -c "xtrabackup --copy-back --datadir=/var/lib/mysql/ --target-dir=/backup_97" ``` ??? example "Expected output" ```{.text .no-copy} 2024-10-07T14:08:59.127166-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized server arguments: --datadir=/var/lib/mysql/ - 2024-10-07T14:08:59.128951-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized client arguments: --copy-back=1 --target-dir=/backup_84 - xtrabackup version 8.4.0-1 based on MySQL server 8.4.0 Linux (x86_64) (revision id: 3792f907) - 2024-10-07T14:08:59.129407-00:00 0 [Note] [MY-011825] [Xtrabackup] cd to /backup_84/ + 2024-10-07T14:08:59.128951-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized client arguments: --copy-back=1 --target-dir=/backup_97 + xtrabackup version 9.7.0-1 based on MySQL server 9.7.1-1 Linux (x86_64) (revision id: 3792f907) + 2024-10-07T14:08:59.129407-00:00 0 [Note] [MY-011825] [Xtrabackup] cd to /backup_97/ ... @@ -101,7 +101,7 @@ This section describes the backup validation steps assuming that you backed up ` To avoid permission issues when running `psmysql2` container, you need to change the owner because the files were restored by `root` user and `psmysql2` will use `mysql` user. ```shell - docker run --volumes-from psmysql2 -v backupvol:/backup_84 -it --rm --user root percona/percona-xtrabackup:8.4 /bin/bash -c "chown -R mysql:mysql /var/lib/mysql/" + docker run --volumes-from psmysql2 -v backupvol:/backup_97 -it --rm --user root percona/percona-xtrabackup:9.7 /bin/bash -c "chown -R mysql:mysql /var/lib/mysql/" ``` If the command executes successfully, the expected output is empty. @@ -149,7 +149,7 @@ This section describes the backup validation steps assuming that you backed up ` ```{.text .no-copy} Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 - Server version: 8.4.0-1 Percona Server (GPL), Release 1, Revision 238b3c02 + Server version: 9.7.0-1 Percona Server (GPL), Release 1, Revision 238b3c02 Copyright (c) 2009-2024 Percona LLC and/or its affiliates Copyright (c) 2000, 2024, Oracle and/or its affiliates. diff --git a/docs/smart-memory-estimation.md b/docs/smart-memory-estimation.md index 3481b453f..7a6ed9765 100644 --- a/docs/smart-memory-estimation.md +++ b/docs/smart-memory-estimation.md @@ -1,7 +1,5 @@ # Smart memory estimation -The Smart memory estimation is [tech preview](glossary.md#tech-preview) feature. Before using Smart memory estimation in production, we recommend that you test restoring production from physical backups in your environment and also use the alternative backup method for redundancy. - Percona XtraBackup supports the Smart memory estimation feature. With this feature, Percona XtraBackup computes the memory required for `prepare` phase, while copying redo log entries during the `backup` phase. Percona XtraBackup also considers the number of InnoDB pages to be fetched from the disk. Percona XtraBackup performs the backup procedure in two steps: diff --git a/docs/templates/pdf_cover_page.tpl b/docs/templates/pdf_cover_page.tpl index 49cd4d31f..2f6d370d6 100644 --- a/docs/templates/pdf_cover_page.tpl +++ b/docs/templates/pdf_cover_page.tpl @@ -7,5 +7,5 @@ {% if config.site_description %}

{{ config.site_description }}

{% endif %} -

9.7.0 (, 2025)

+

9.7.0 (, 2026)

diff --git a/docs/xtrabackup-binary-overview.md b/docs/xtrabackup-binary-overview.md index 23f50f444..0d563ca5e 100644 --- a/docs/xtrabackup-binary-overview.md +++ b/docs/xtrabackup-binary-overview.md @@ -74,6 +74,6 @@ Explore the following sections for more guidance: * Configuration options appear on [configure xtrabackup](configure-xtrabackup.md) -* Command-line options: A comprehensive list of command-line options is available on [xtrabackup option reference](xtrabackup-option-reference.html) +* Command-line options: A comprehensive list of command-line options is available on [xtrabackup option reference](xtrabackup-option-reference.md) * Implementation details: Review technical insights and architecture on [xtrabackup implementation details](xtrabackup-implementation-details.md) diff --git a/docs/xtrabackup-option-reference.md b/docs/xtrabackup-option-reference.md index 4e11b3545..b0377838e 100644 --- a/docs/xtrabackup-option-reference.md +++ b/docs/xtrabackup-option-reference.md @@ -110,6 +110,20 @@ If a privilege is not needed for the current operation but is missing and may be xtrabackup: Warning: missing required privilege REPLICATION CLIENT on *.* ``` +### check-tables + +Usage: `--check-tables` + +Enables InnoDB B-tree structural validation during the `--prepare` phase after redo log application completes. + +The option runs `btr_validate_index()` on every committed index in each `.ibd` tablespace in the backup. Validation detects structural inconsistencies that page checksum verification cannot detect, including broken B-tree relationships, invalid page metadata, and inconsistent external LOB references. + +Percona XtraBackup runs validation in read-only mode and does not modify backup data. The option supports `--apply-log-only`, `--parallel`, and `--export`. + +If validation detects corruption, xtrabackup reports the affected tables and returns a non-zero exit code after completing all checks. + +For more information, see [InnoDB B-tree integrity validation during prepare](innodb-btree-check.md). + ### close-files Usage: `--close-files` @@ -369,8 +383,6 @@ To adjust the chunk size for encrypted files, use [`--read-buffer-size`](#read-b Usage: `--estimate-memory=#` -This option is in [tech preview](glossary.md#tech-preview). - The option lets you enable or disable the [Smart memory estimation](smart-memory-estimation.md) feature. The default value is OFF. Enable the feature by setting `--estimate-memory=ON` in the backup phase and setting the `--use-free-memory-pct` option in the `--prepare` phase. If the `--estimate-memory` setting is disabled, the `--use-free-memory-pct` setting is ignored. An example of how to enable the Smart memory estimation feature: @@ -1113,8 +1125,6 @@ specified for the `--prepare` command. Usage: `--use-free-memory-pct` -The `--use-free-memory-pct` is a [tech preview](glossary.md#tech-preview) option. - This option lets you configure the [Smart memory estimation](smart-memory-estimation.md) feature. The option controls the amount of free memory that can be used to `--prepare` a backup. The default value is 0 (zero), which defines the option as disabled. For example, if you set `--use-free-memory-pct=50`, then 50% of the free memory is used to `prepare` a backup. The maximum allowed value is 100. This option works only if `--estimate-memory` option is enabled. If the `--estimate-memory` option is disabled, the `--use-free-memory-pct` setting is ignored. diff --git a/docs/yum-download-rpm.md b/docs/yum-download-rpm.md index d0a31c7ef..28786cbd9 100644 --- a/docs/yum-download-rpm.md +++ b/docs/yum-download-rpm.md @@ -16,13 +16,13 @@ The following example downloads *Percona XtraBackup* {{release}} release package 2. Use `wget` to download the `RPM` package: ```bash - wget https://downloads.percona.com/downloads/Percona-XtraBackup-{{vers}}/Percona-XtraBackup-{{release}}/binary/redhat/9/x86_64/percona-xtrabackup-84-{{release}}.1.el9.x86_64.rpm + wget https://downloads.percona.com/downloads/Percona-XtraBackup-{{vers}}/Percona-XtraBackup-{{release}}/binary/redhat/9/x86_64/percona-xtrabackup-97-{{release}}.1.el9.x86_64.rpm ``` 3. Install Percona XtraBackup by running: ```bash - sudo dnf install ./percona-xtrabackup-84-{{release}}.1.el9.x86_64.rpm + sudo dnf install ./percona-xtrabackup-97-{{release}}.1.el9.x86_64.rpm ``` ## Common dependencies diff --git a/docs/yum-repo.md b/docs/yum-repo.md index 6117fdf39..15cd9fba2 100644 --- a/docs/yum-repo.md +++ b/docs/yum-repo.md @@ -1,13 +1,9 @@ # Use a YUM repository to install Percona XtraBackup - - Ready-to-use packages are available from the Percona XtraBackup software repositories and the [Percona Software Downloads :octicons-link-external-16:](https://www.percona.com/downloads). The Percona yum repository supports popular `RPM`-based operating systems, including the `Amazon Linux AMI`. -The easiest way to install the Percona Yum repository is to install an `RPM` that configures yum and installs the [Percona GPG key :octicons-link-external-16:](https://www.percona.com/downloads/RPM-GPG-KEY-percona). - -Specific information on the supported platforms, products, and versions is described in [Percona Software and Platform Lifecycle :octicons-link-external-16:](https://www.percona.com/services/policies/percona-software-platform-lifecycle#mysql). +Specific information on the supported platforms, products, and versions is described in [Percona Software and Platform Lifecycle :octicons-link-external-16:](https://www.percona.com/release-lifecycle-overview/#mysql). ## Install Percona XtraBackup from Percona `yum` repository @@ -46,7 +42,7 @@ To install Percona XtraBackup from Percona `yum` repository, do the following st 2. Enable the repository: ```shell - sudo percona-release enable pxb-84-lts + sudo percona-release enable {{pkg}} ``` ??? example "Expected output" @@ -59,7 +55,7 @@ To install Percona XtraBackup from Percona `yum` repository, do the following st 3. Install Percona XtraBackup. ```shell - sudo yum install percona-xtrabackup-84 + sudo yum install percona-xtrabackup-97 ``` ??? example "Expected output" @@ -86,7 +82,7 @@ To install Percona XtraBackup from Percona `yum` repository, do the following st ??? example "Expected output" ```{.text .no-copy} - xtrabackup version 8.4.0-1 based on MySQL server 8.4.0 Linux (x86_64) (revision id: da6e1abd) + xtrabackup version 9.7.0-1 based on MySQL server 9.7.1-1 Linux (x86_64) (revision id: da6e1abd) ``` 5. To decompress backups made using `LZ4` or `ZSTD` compression algorithm, install the corresponding package: diff --git a/mkdocs-base.yml b/mkdocs-base.yml index fd10a36b8..5055b0080 100644 --- a/mkdocs-base.yml +++ b/mkdocs-base.yml @@ -69,12 +69,14 @@ extra_css: - css/nocopy.css - css/mysql.css - css/rating.css + - css/kapa.css extra_javascript: - js/version-select.js - js/promptremover.js - js/consent.js - js/rating.js + - js/kapa.js markdown_extensions: attr_list: {} @@ -191,15 +193,14 @@ nav: - lru-dump-backup.md - throttling-backups.md - store-backup-history.md - + - backup-size-reporting.md - xbstream features: - take-streaming-backup.md - accelerate-backup-process.md - + - Prepare features: + - innodb-btree-check.md - Restore features: - point-in-time-recovery.md - - - flush-tables-with-read-lock.md - log-enhancements.md - redo-log-archiving.md