From 2b58524494fa3561a3df043aad8c40cfaff36198 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 4 Jun 2026 17:26:48 +0530 Subject: [PATCH 001/212] PBM-1710-SBOMS for PBM --- mkdocs-base.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/mkdocs-base.yml b/mkdocs-base.yml index 0774a511..e3f84e0f 100644 --- a/mkdocs-base.yml +++ b/mkdocs-base.yml @@ -333,6 +333,7 @@ nav: - 'Percona Backup for MongoDB 0.5.0 (2019-06-17)': 'release-notes/0.5.0.md' - Reference: - "About Percona Backup for MongoDB documentation": about-docs.md + - sboms-pbm.md - reference/glossary.md - Contribution guidelines: 'https://github.com/percona/pbm-docs/blob/main/CONTRIBUTING.md' - Copyright and licensing: copyright.md From dd2262e62dd8347fca2ed880d0de600bf363e6fa Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 4 Jun 2026 17:33:15 +0530 Subject: [PATCH 002/212] Create sboms-pbm.md --- docs/reference/sboms-pbm.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 docs/reference/sboms-pbm.md diff --git a/docs/reference/sboms-pbm.md b/docs/reference/sboms-pbm.md new file mode 100644 index 00000000..ef6bb906 --- /dev/null +++ b/docs/reference/sboms-pbm.md @@ -0,0 +1,16 @@ +# Software Bill of Materials + + +A Software Bill of Materials (SBOM) is a machine-readable inventory of the components and dependencies included in a software release. It helps you understand what is included in a build and assess potential security or compliance risks. + +Starting with version 2.15.0, every Percona Backup for MongoDB (PBM) release includes a [CycloneDX 1.6 :octicons-link-external-16:](https://cyclonedx.org/specification/overview/){:target="_blank"} SBOM in JSON format. + +## Why it matters + +An SBOM helps you: + +- Identify the components and dependencies included in a PCSM release. +- Assess known vulnerabilities using SBOM-compatible security scanners. +- Support security reviews, compliance processes, and software supply chain requirements. +- Verify the contents of deployed software artifacts. + From 5d21078d5bb0ee89bb98e071d5717b53c77753cc Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 4 Jun 2026 17:59:07 +0530 Subject: [PATCH 003/212] Update sboms-pbm.md --- docs/reference/sboms-pbm.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/reference/sboms-pbm.md b/docs/reference/sboms-pbm.md index ef6bb906..2f851531 100644 --- a/docs/reference/sboms-pbm.md +++ b/docs/reference/sboms-pbm.md @@ -14,3 +14,11 @@ An SBOM helps you: - Support security reviews, compliance processes, and software supply chain requirements. - Verify the contents of deployed software artifacts. +## Where to find the SBOM + +| Distribution method | SBOM location | +|---|---| +| Binary tarball | `Percona Backup for MongoDB.cdx.json` at the archive root | +| RPM package | `/usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-.cdx.json` | +| DEB package | `/usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-.cdx.json` | +| Docker image | Two SBOMs ship together — see [Docker images](#docker-images) below | \ No newline at end of file From 6dae0b2158637b9e4544a0c584c779744fcb0d85 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 8 Jun 2026 12:10:53 +0530 Subject: [PATCH 004/212] Update sboms-pbm.md --- docs/reference/sboms-pbm.md | 90 +++++++++++++++++++++++++++++++++++-- 1 file changed, 87 insertions(+), 3 deletions(-) diff --git a/docs/reference/sboms-pbm.md b/docs/reference/sboms-pbm.md index 2f851531..8e215b67 100644 --- a/docs/reference/sboms-pbm.md +++ b/docs/reference/sboms-pbm.md @@ -1,9 +1,8 @@ # Software Bill of Materials - A Software Bill of Materials (SBOM) is a machine-readable inventory of the components and dependencies included in a software release. It helps you understand what is included in a build and assess potential security or compliance risks. -Starting with version 2.15.0, every Percona Backup for MongoDB (PBM) release includes a [CycloneDX 1.6 :octicons-link-external-16:](https://cyclonedx.org/specification/overview/){:target="_blank"} SBOM in JSON format. +Starting with version , every Percona Backup for MongoDB (PBM) release includes a [CycloneDX 1.6 :octicons-link-external-16:](https://cyclonedx.org/specification/overview/){:target="_blank"} SBOM in JSON format. ## Why it matters @@ -21,4 +20,89 @@ An SBOM helps you: | Binary tarball | `Percona Backup for MongoDB.cdx.json` at the archive root | | RPM package | `/usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-.cdx.json` | | DEB package | `/usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-.cdx.json` | -| Docker image | Two SBOMs ship together — see [Docker images](#docker-images) below | \ No newline at end of file +| Docker image | Embedded in the image and available as an attached OCI artifact. See [Docker images](#docker-images).| + + +## Verifying and scanning the SBOM + +The examples below use [Trivy :octicons-link-external-16:](https://trivy.dev/){:target="_blank"}. You can also use other CycloneDX-compatible scanners, such as [Grype :octicons-link-external-16:](https://github.com/anchore/grype){:target="_blank"} or Snyk. + +### Binary tarball + +```bash +# Confirm the SBOM is bundled +tar tzf percona-backup-mongodb--x86_64.tar.gz | grep cdx.json + +# Extract and scan +tar xzf percona-backup-mongodb--x86_64.tar.gz \ + -C /tmp percona-backup-mongodb-/percona-backup-mongodb-.cdx.json +trivy sbom --severity HIGH,CRITICAL --ignore-unfixed \ + /tmp/percona-backup-mongodb-/percona-backup-mongodb-.cdx.json +``` + +### RPM package + +```bash +# Confirm the package installs the SBOM +rpm -ql percona-backup-mongodb | grep cdx.json + +# Scan it (replace 9.x with your RHEL/OL version) +trivy sbom --severity HIGH,CRITICAL --ignore-unfixed --distro redhat/9.x \ + /usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-.cdx.json +``` + +### DEB package + +```bash +# Confirm the package installs the SBOM +dpkg -L percona-backup-mongodb | grep cdx.json + +# Scan it +trivy sbom --severity HIGH,CRITICAL --ignore-unfixed \ + /usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-.cdx.json +``` + +### Docker images + +Each PBM Docker image (Docker Hub `percona/percona-backup-mongodb`, PerconaLab `perconalab/percona-backup-mongodb`) ships with **two** CycloneDX 1.6 SBOMs that describe overlapping scopes: + +| SBOM | Scope | How to access | +|---|---|---| +| **Embedded** | PBM binary and Go modules only | Inside the image filesystem | +| **OCI-attached** | Full image — PBM and UBI9 base OS packages | Registry-side, via the OCI Referrers API | + + +#### Scan via OCI Referrers API (recommended) + +`trivy image --sbom-sources oci` fetches the attached SBOM via the OCI Referrers API and scans it, without pulling the image: + +```bash +trivy image --severity HIGH,CRITICAL --ignore-unfixed --sbom-sources oci \ + docker.io/percona/percona-backup-mongodb: +``` + + + +#### Scan the embedded SBOM + +To scan the embedded SBOM from inside the container image: + +```bash +docker run --rm -it --entrypoint cat \ + docker.io/percona/percona-backup-mongodb: \ + /usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-.cdx.json \ + | trivy sbom --severity HIGH,CRITICAL --ignore-unfixed - +``` + +#### Advanced: Inspect OCI-attached SBOMs with ORAS + +You can use the [ORAS CLI :octicons-link-external-16:](https://oras.land/){:target="_blank"} to discover and download OCI-attached SBOMs. + +```bash +# Use the per-architecture tag to resolve directly to the image manifest +oras discover --format tree \ + docker.io/percona/percona-backup-mongodb:-amd64 + +# Pull the SBOM artifact using the digest from the discover output +oras pull docker.io/percona/percona-backup-mongodb@sha256: +``` From b46e093222734ad96236134830aafe5d4dfd8c46 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 8 Jun 2026 12:16:34 +0530 Subject: [PATCH 005/212] Update variables.yml --- variables.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/variables.yml b/variables.yml index bbb63ab1..07738257 100644 --- a/variables.yml +++ b/variables.yml @@ -1,13 +1,14 @@ # PBM Variables set for HTML output # See also mkdocs.yml plugins.with-pdf.cover_subtitle and output_path -release: '2.14.0' -version: '2.14' +release: '2.15.0' +version: '2.15' year: '2026' pbm: full_name: 'Percona Backup for MongoDB' date: + 2_15_0: 2026-06-15 2_14_0: 2026-04-29 2_13_0: 2026-03-03 2_12_0: 2025-11-04 From f5e2ba767a5b9aa0182485b0d10114f32dcdf55f Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 8 Jun 2026 12:17:22 +0530 Subject: [PATCH 006/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- mkdocs-base.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs-base.yml b/mkdocs-base.yml index e3f84e0f..d8af8665 100644 --- a/mkdocs-base.yml +++ b/mkdocs-base.yml @@ -333,7 +333,7 @@ nav: - 'Percona Backup for MongoDB 0.5.0 (2019-06-17)': 'release-notes/0.5.0.md' - Reference: - "About Percona Backup for MongoDB documentation": about-docs.md - - sboms-pbm.md + - reference/sboms-pbm.md - reference/glossary.md - Contribution guidelines: 'https://github.com/percona/pbm-docs/blob/main/CONTRIBUTING.md' - Copyright and licensing: copyright.md From a4814be50e4db8580638c21b9c9a31f6d9a72c7d Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 8 Jun 2026 12:18:29 +0530 Subject: [PATCH 007/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/sboms-pbm.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/sboms-pbm.md b/docs/reference/sboms-pbm.md index 8e215b67..f9775871 100644 --- a/docs/reference/sboms-pbm.md +++ b/docs/reference/sboms-pbm.md @@ -8,7 +8,7 @@ Starting with version , every Percona Backup for MongoDB (PBM) release An SBOM helps you: -- Identify the components and dependencies included in a PCSM release. +- Identify the components and dependencies included in a PBM release. - Assess known vulnerabilities using SBOM-compatible security scanners. - Support security reviews, compliance processes, and software supply chain requirements. - Verify the contents of deployed software artifacts. From 757051a9158ac62b23c04c069c1aaa4f89c6fe09 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 8 Jun 2026 12:18:47 +0530 Subject: [PATCH 008/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/sboms-pbm.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/sboms-pbm.md b/docs/reference/sboms-pbm.md index f9775871..17583b50 100644 --- a/docs/reference/sboms-pbm.md +++ b/docs/reference/sboms-pbm.md @@ -17,7 +17,7 @@ An SBOM helps you: | Distribution method | SBOM location | |---|---| -| Binary tarball | `Percona Backup for MongoDB.cdx.json` at the archive root | +| Binary tarball | `percona-backup-mongodb-/percona-backup-mongodb-.cdx.json` inside the archive | | RPM package | `/usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-.cdx.json` | | DEB package | `/usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-.cdx.json` | | Docker image | Embedded in the image and available as an attached OCI artifact. See [Docker images](#docker-images).| From d81878ab476a803b5b4b197edee9c4e7417cde81 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 8 Jun 2026 06:58:15 +0000 Subject: [PATCH 009/212] Pin Vale version in CI workflow --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e4af0a33..8dc0abdf 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -29,10 +29,10 @@ jobs: uses: errata-ai/vale-action@reviewdog with: vale_flags: "--glob=*.md" + version: 3.12.0 # fail_on_error: true reporter: github-check env: # Required, set by GitHub actions automatically: # https://docs.github.com/en/actions/security-guides/automatic-token-authentication#about-the-github_token-secret GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - From b146e66bab6dae847a9a3a812831570761594865 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 8 Jun 2026 12:44:04 +0530 Subject: [PATCH 010/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/sboms-pbm.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/sboms-pbm.md b/docs/reference/sboms-pbm.md index 17583b50..c188e6a9 100644 --- a/docs/reference/sboms-pbm.md +++ b/docs/reference/sboms-pbm.md @@ -2,7 +2,7 @@ A Software Bill of Materials (SBOM) is a machine-readable inventory of the components and dependencies included in a software release. It helps you understand what is included in a build and assess potential security or compliance risks. -Starting with version , every Percona Backup for MongoDB (PBM) release includes a [CycloneDX 1.6 :octicons-link-external-16:](https://cyclonedx.org/specification/overview/){:target="_blank"} SBOM in JSON format. +Starting with version 2.15.0, every Percona Backup for MongoDB (PBM) release includes a [CycloneDX 1.6 :octicons-link-external-16:](https://cyclonedx.org/specification/overview/){:target="_blank"} SBOM in JSON format. ## Why it matters From 0e98fb28a686b526d39d12404184584d0418a489 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 8 Jun 2026 12:50:31 +0530 Subject: [PATCH 011/212] Update sboms-pbm.md --- docs/reference/sboms-pbm.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/sboms-pbm.md b/docs/reference/sboms-pbm.md index 8e215b67..6aef7a6b 100644 --- a/docs/reference/sboms-pbm.md +++ b/docs/reference/sboms-pbm.md @@ -18,7 +18,7 @@ An SBOM helps you: | Distribution method | SBOM location | |---|---| | Binary tarball | `Percona Backup for MongoDB.cdx.json` at the archive root | -| RPM package | `/usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-.cdx.json` | +| RPM package | `/usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-{{release}}.cdx.json` | | DEB package | `/usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-.cdx.json` | | Docker image | Embedded in the image and available as an attached OCI artifact. See [Docker images](#docker-images).| From c93e78add09b3a04e3fc8c57eed00d49431780a0 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 8 Jun 2026 13:00:54 +0530 Subject: [PATCH 012/212] update the variable "version" --- docs/reference/sboms-pbm.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/reference/sboms-pbm.md b/docs/reference/sboms-pbm.md index 8928cd68..e87199a7 100644 --- a/docs/reference/sboms-pbm.md +++ b/docs/reference/sboms-pbm.md @@ -19,7 +19,7 @@ An SBOM helps you: |---|---| | Binary tarball | `Percona Backup for MongoDB.cdx.json` at the archive root | | RPM package | `/usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-{{release}}.cdx.json` | -| DEB package | `/usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-.cdx.json` | +| DEB package | `/usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-{{release}}.cdx.json` | | Docker image | Embedded in the image and available as an attached OCI artifact. See [Docker images](#docker-images).| @@ -31,13 +31,13 @@ The examples below use [Trivy :octicons-link-external-16:](https://trivy.dev/){: ```bash # Confirm the SBOM is bundled -tar tzf percona-backup-mongodb--x86_64.tar.gz | grep cdx.json +tar tzf percona-backup-mongodb-{{release}}-x86_64.tar.gz | grep cdx.json # Extract and scan -tar xzf percona-backup-mongodb--x86_64.tar.gz \ - -C /tmp percona-backup-mongodb-/percona-backup-mongodb-.cdx.json +tar xzf percona-backup-mongodb-{{release}}-x86_64.tar.gz \ + -C /tmp percona-backup-mongodb-{{release}}/percona-backup-mongodb-{{release}}.cdx.json trivy sbom --severity HIGH,CRITICAL --ignore-unfixed \ - /tmp/percona-backup-mongodb-/percona-backup-mongodb-.cdx.json + /tmp/percona-backup-mongodb-{{release}}/percona-backup-mongodb-{{release}}.cdx.json ``` ### RPM package @@ -48,7 +48,7 @@ rpm -ql percona-backup-mongodb | grep cdx.json # Scan it (replace 9.x with your RHEL/OL version) trivy sbom --severity HIGH,CRITICAL --ignore-unfixed --distro redhat/9.x \ - /usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-.cdx.json + /usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-{{release}}.cdx.json ``` ### DEB package @@ -59,7 +59,7 @@ dpkg -L percona-backup-mongodb | grep cdx.json # Scan it trivy sbom --severity HIGH,CRITICAL --ignore-unfixed \ - /usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-.cdx.json + /usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-{{release}}.cdx.json ``` ### Docker images @@ -78,7 +78,7 @@ Each PBM Docker image (Docker Hub `percona/percona-backup-mongodb`, PerconaLab ` ```bash trivy image --severity HIGH,CRITICAL --ignore-unfixed --sbom-sources oci \ - docker.io/percona/percona-backup-mongodb: + docker.io/percona/percona-backup-mongodb:{{release}} ``` @@ -89,8 +89,8 @@ To scan the embedded SBOM from inside the container image: ```bash docker run --rm -it --entrypoint cat \ - docker.io/percona/percona-backup-mongodb: \ - /usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-.cdx.json \ + docker.io/percona/percona-backup-mongodb:{{release}} \ + /usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-{{release}}.cdx.json \ | trivy sbom --severity HIGH,CRITICAL --ignore-unfixed - ``` @@ -101,7 +101,7 @@ You can use the [ORAS CLI :octicons-link-external-16:](https://oras.land/){:targ ```bash # Use the per-architecture tag to resolve directly to the image manifest oras discover --format tree \ - docker.io/percona/percona-backup-mongodb:-amd64 + docker.io/percona/percona-backup-mongodb:{{release}}-amd64 # Pull the SBOM artifact using the digest from the discover output oras pull docker.io/percona/percona-backup-mongodb@sha256: From 9841aec07cf0e736c2f464ecfdb169ea6f3c52df Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 8 Jun 2026 15:03:06 +0530 Subject: [PATCH 013/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/sboms-pbm.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/reference/sboms-pbm.md b/docs/reference/sboms-pbm.md index e87199a7..0c28cb4d 100644 --- a/docs/reference/sboms-pbm.md +++ b/docs/reference/sboms-pbm.md @@ -17,10 +17,10 @@ An SBOM helps you: | Distribution method | SBOM location | |---|---| -| Binary tarball | `Percona Backup for MongoDB.cdx.json` at the archive root | +| Binary tarball | `percona-backup-mongodb-{{release}}/percona-backup-mongodb-{{release}}.cdx.json` | | RPM package | `/usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-{{release}}.cdx.json` | | DEB package | `/usr/share/doc/percona-backup-mongodb/percona-backup-mongodb-{{release}}.cdx.json` | -| Docker image | Embedded in the image and available as an attached OCI artifact. See [Docker images](#docker-images).| +| Docker image | Embedded in the image and available as an attached OCI artifact. See [Docker images](#docker-images). | ## Verifying and scanning the SBOM From dd753bdd8be7927a8e793468013a960a388af963 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 8 Jun 2026 15:03:17 +0530 Subject: [PATCH 014/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/sboms-pbm.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/reference/sboms-pbm.md b/docs/reference/sboms-pbm.md index 0c28cb4d..551230e6 100644 --- a/docs/reference/sboms-pbm.md +++ b/docs/reference/sboms-pbm.md @@ -71,7 +71,6 @@ Each PBM Docker image (Docker Hub `percona/percona-backup-mongodb`, PerconaLab ` | **Embedded** | PBM binary and Go modules only | Inside the image filesystem | | **OCI-attached** | Full image — PBM and UBI9 base OS packages | Registry-side, via the OCI Referrers API | - #### Scan via OCI Referrers API (recommended) `trivy image --sbom-sources oci` fetches the attached SBOM via the OCI Referrers API and scans it, without pulling the image: From 1958a347f84f500a669040180628e0dde7a00e0e Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 8 Jun 2026 15:03:56 +0530 Subject: [PATCH 015/212] Update variables.yml --- variables.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/variables.yml b/variables.yml index 07738257..bbb63ab1 100644 --- a/variables.yml +++ b/variables.yml @@ -1,14 +1,13 @@ # PBM Variables set for HTML output # See also mkdocs.yml plugins.with-pdf.cover_subtitle and output_path -release: '2.15.0' -version: '2.15' +release: '2.14.0' +version: '2.14' year: '2026' pbm: full_name: 'Percona Backup for MongoDB' date: - 2_15_0: 2026-06-15 2_14_0: 2026-04-29 2_13_0: 2026-03-03 2_12_0: 2025-11-04 From 5512e0aa94a780171001b0838ffa0ed101bd4536 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Wed, 10 Jun 2026 18:33:38 +0530 Subject: [PATCH 016/212] Config changes for versioning --- .github/workflows/main.yml | 69 +++++++++++++++++++++++++------------- mkdocs-base.yml | 5 +++ 2 files changed, 51 insertions(+), 23 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e4af0a33..19de899b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,18 +1,25 @@ -name: Check docs with Vale -on: - pull_request: - branches: - - main - +name: Percona Backup for MongoDB 2.15.0 docs +on: + push: + branches: + - 2.15.0 jobs: - vale: - name: runner / vale + build: + name: Deploy docs runs-on: ubuntu-latest - steps: - - name: Checkout + + steps: + #Pull the latest changes + - name: Chekout code uses: actions/checkout@v3 with: fetch-depth: 0 + #Prepare the env + - name: Set up Python + uses: actions/setup-python@v3 + with: + python-version: '3.x' + #Configure git - name: Configure git env: @@ -23,16 +30,32 @@ jobs: git config user.email "github-action@users.noreply.github.com" git config user.password "${ROBOT_TOKEN}" echo "GIT_USER=percona-platform-robot:${ROBOT_TOKEN}" >> $GITHUB_ENV - - #Run check - - name: reviewdog - uses: errata-ai/vale-action@reviewdog - with: - vale_flags: "--glob=*.md" -# fail_on_error: true - reporter: github-check - env: - # Required, set by GitHub actions automatically: - # https://docs.github.com/en/actions/security-guides/automatic-token-authentication#about-the-github_token-secret - GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - + #Set up MkDocs + - name: Install MkDocs + run: | + python -m pip install --upgrade pip + pip install wheel + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + #Set up PlantUML + - name: Setup PlantUML dependencies + run: | + sudo apt install -y graphviz + + # Deploy docs + - name: Deploy docs + run: | + mike deploy 2.15.0 -b publish -p + mike retitle 2.15.0 "2.15.0" -b publish -p +# - name: Install Node.js 14.x +# uses: percona-platform/setup-node@v2 +# with: +# node-version: "14" +# +# - name: Spelling +# run: | +# npx markdown-spellcheck --report --en-us --ignore-acronyms --ignore-numbers "docs/**/*.md" || true + # Ignore errors, just inspect results +# - name: Grammar +# run: | +# npx write-good --no-passive docs/**/*.md || true +# # Ignore errors, just inspect results \ No newline at end of file diff --git a/mkdocs-base.yml b/mkdocs-base.yml index 0774a511..b5fde611 100644 --- a/mkdocs-base.yml +++ b/mkdocs-base.yml @@ -173,6 +173,11 @@ plugins: include_css: true enabled: true +extra: + version: + provider: mike +# homepage: https://docs.percona.com + nav: - Home: index.md - get-help.md From a882b6edb6c00f726afaa54942251d28fc05aa75 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Wed, 10 Jun 2026 18:46:28 +0530 Subject: [PATCH 017/212] typo --- docs/install/configure-authentication.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/install/configure-authentication.md b/docs/install/configure-authentication.md index ef895329..ba428164 100644 --- a/docs/install/configure-authentication.md +++ b/docs/install/configure-authentication.md @@ -6,7 +6,7 @@ Percona Backup for MongoDB uses the authentication and authorization subsystem o * [Set a valid MongoDB connection URI string for **pbm-agent**](#set-the-mongodb-connection-uri-for-pbm-agent) * [Set a valid MongoDB connection URI string for `pbm` CLI](#set-the-mongodb-connection-uri-for-pbm-cli) -## Create the `pbm` user +## Create a `pbm` user !!! info From c8d09d1aaeda3d74c654335b0f923e54708529ba Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Wed, 10 Jun 2026 18:56:22 +0530 Subject: [PATCH 018/212] version-selector-2.15.0-test --- docs/install/docker.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/install/docker.md b/docs/install/docker.md index 49971f1d..b9bb51d2 100644 --- a/docs/install/docker.md +++ b/docs/install/docker.md @@ -32,7 +32,6 @@ By default, Docker will pull the image from Docker Hub if it is not available lo Start Percona Backup for MongoDB container with the following command: - ```bash docker run --name -e PBM_MONGODB_URI="mongodb://:@:" -d percona/percona-backup-mongodb: ``` From d73a53440384eef5bc6e974270ce261c83e59768 Mon Sep 17 00:00:00 2001 From: Alina Derkach Date: Wed, 10 Jun 2026 15:40:38 +0200 Subject: [PATCH 019/212] Update pbm-pmm.md --- docs/troubleshoot/pbm-pmm.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/troubleshoot/pbm-pmm.md b/docs/troubleshoot/pbm-pmm.md index fb92ef68..4c86b60d 100644 --- a/docs/troubleshoot/pbm-pmm.md +++ b/docs/troubleshoot/pbm-pmm.md @@ -7,3 +7,4 @@ If you are facing issues with physical backups and restores via PMM, follow thes 3. Confirm that the system user who runs the `pbm-agent` process (by default, `mongod`) has the read / write access to both the MongoDB dbpath and the backup storage location. 4. Examine the `systemd` restart policy for the user mentioned in step 4. Ensure it is not set to `always` or `on-success`. During physical restores, the database must not be automatically restarted as this is controlled by the `pbm-agent`. + From fa94e6be8a6d9d8d31958684e02432a7bd89151e Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 11:53:31 +0530 Subject: [PATCH 020/212] PBM-1715 Parallel file processing for backups and restores --- docs/reference/backup-options.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/reference/backup-options.md b/docs/reference/backup-options.md index 5f5c052e..8fa1f151 100644 --- a/docs/reference/backup-options.md +++ b/docs/reference/backup-options.md @@ -121,3 +121,21 @@ The duration (in minutes) of oplog slices saved with the logical backup snapshot The number of parallel collections to process during a logical backup. By default, the number of parallel collections is half of the number of CPU cores. By setting the value for this option you define the new default. Available starting with version 2.7.0. + +## backup.numParallelFiles + +*Type*: int
+*Default*: 1
+*Storage*: Filesystem only
+*Backup type:* Physical only + +The number of files to copy in parallel during a physical backup +to filesystem or NFS storage. + +The default value of `1` copies files sequentially. If parameter is not specified, files will be uploaded/downloaded sequentially. + + + + + + From e022790a504da4a3327c2374eb05793fc81f8e59 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 12:03:05 +0530 Subject: [PATCH 021/212] Added restore flag --- docs/reference/restore-options.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 6747acbe..47eb75ca 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -99,4 +99,21 @@ This is useful when you want to: - Prevent restore operations from waiting indefinitely - Enforce time limits in automated workflows -- Fail fast if the balancer cannot be stopped \ No newline at end of file +- Fail fast if the balancer cannot be stopped + + +## restore.numParallelFiles + +*Type*: int
+*Default*: 1
+*Storage*: Filesystem only
+*Restore type:* Physical only + +The number of files to copy in parallel during a physical restore +from filesystem or NFS storage. + +The default value of `1` copies files sequentially. If parameter is not specified, files will be uploaded/downloaded sequentially. + + + + From b36ea8862a54632eec4530120aadcc7115813041 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 12:14:16 +0530 Subject: [PATCH 022/212] Update backup-physical.md --- docs/usage/backup-physical.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/docs/usage/backup-physical.md b/docs/usage/backup-physical.md index 62f21db5..2df08179 100644 --- a/docs/usage/backup-physical.md +++ b/docs/usage/backup-physical.md @@ -18,6 +18,30 @@ pbm backup --type=physical Starting with [2.4.0](../release-notes/2.4.0.md), PBM doesn't stop [point-in-time recovery oplog slicing](../features/point-in-time-recovery.md#oplog-slicing), if it's enabled, but runs it in parallel. This ensures [point-in-time recovery](pitr-tutorial.md) to any timestamp if it takes too long (e.g. hours) to make a backup snapshot. +## Improve backup performance on filesystem storage + +For physical backups stored on a filesystem, you can control how many files PBM processes in parallel during backup and restore operations. Increasing parallelism can improve performance by allowing multiple files to be transferred or copied simultaneously. + + +To copy files in parallel, set `backup.numParallelFiles` in the +PBM configuration: + +```yaml +backup: + numParallelFiles: 4 +``` + +Or pass `--num-parallel-files` + +```sh +pbm backup --num-parallel-files=4 +``` + +!!! note + Parallel file copy applies to **physical backups to filesystem + or NFS storage only**. It has no effect on logical backups or + on S3-compatible storage. + ## Next steps [List backups](../usage/list-backup.md){.md-button} From c39a56defb1ba7ca0077fbded94e43402d8cbe35 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 12:16:20 +0530 Subject: [PATCH 023/212] Update restore-physical.md --- docs/usage/restore-physical.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/docs/usage/restore-physical.md b/docs/usage/restore-physical.md index 9b8c7569..188c1b2d 100644 --- a/docs/usage/restore-physical.md +++ b/docs/usage/restore-physical.md @@ -151,6 +151,28 @@ restore: * `maxDownloadBufferMb` - the maximum size of memory buffer to store the downloaded data chunks for decompression and ordering. It is calculated as `numDownloadWorkers * downloadChunkMb * 16` * `downloadChunkMb` is the size of the data chunk to download (by default, 32 MB) +## Improve restore performance on filesystem storage + +For physical restores from filesystem storage, you can control how many files PBM copies in parallel during the restore operation. Increasing the number of parallel file copies can reduce restore time by allowing multiple files to be processed simultaneously, depending on the available system and storage resources. + +To copy files in parallel, set `restore.numParallelFiles` in the +PBM configuration: + +```yaml +restore: + numParallelFiles: 4 +``` + +Or pass `--num-parallel-files`: + +```sh +pbm restore --num-parallel-files=4 +``` + +!!! note + Parallel file copy applies to **physical restores from + filesystem or NFS storage only**. It has no effect on logical + restores or on S3-compatible storage. ## Next steps From 99db9e3bb8fe3ebd2bbfb1153abd4ac0a8f5600b Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 12:21:52 +0530 Subject: [PATCH 024/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/usage/restore-physical.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/usage/restore-physical.md b/docs/usage/restore-physical.md index 188c1b2d..0a2dc94b 100644 --- a/docs/usage/restore-physical.md +++ b/docs/usage/restore-physical.md @@ -155,8 +155,7 @@ restore: For physical restores from filesystem storage, you can control how many files PBM copies in parallel during the restore operation. Increasing the number of parallel file copies can reduce restore time by allowing multiple files to be processed simultaneously, depending on the available system and storage resources. -To copy files in parallel, set `restore.numParallelFiles` in the -PBM configuration: +To copy files in parallel, set `restore.numParallelFiles` in the PBM configuration: ```yaml restore: From c21aad3223ce5167994f543f89dd01d71fcfccf4 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 12:22:07 +0530 Subject: [PATCH 025/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/usage/restore-physical.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/usage/restore-physical.md b/docs/usage/restore-physical.md index 0a2dc94b..ee9464c5 100644 --- a/docs/usage/restore-physical.md +++ b/docs/usage/restore-physical.md @@ -169,9 +169,7 @@ pbm restore --num-parallel-files=4 ``` !!! note - Parallel file copy applies to **physical restores from - filesystem or NFS storage only**. It has no effect on logical - restores or on S3-compatible storage. + Parallel file copy applies to **physical restores from filesystem or NFS storage only**. It has no effect on logical restores or on S3-compatible storage. ## Next steps From 7ae0a395f6ee2a6153eb7a9e3ce2c0caeb642c21 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 12:22:51 +0530 Subject: [PATCH 026/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/usage/backup-physical.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage/backup-physical.md b/docs/usage/backup-physical.md index 2df08179..8d028d0a 100644 --- a/docs/usage/backup-physical.md +++ b/docs/usage/backup-physical.md @@ -20,7 +20,7 @@ Starting with [2.4.0](../release-notes/2.4.0.md), PBM doesn't stop [point-in-tim ## Improve backup performance on filesystem storage -For physical backups stored on a filesystem, you can control how many files PBM processes in parallel during backup and restore operations. Increasing parallelism can improve performance by allowing multiple files to be transferred or copied simultaneously. +For physical backups stored on a filesystem, you can control how many files PBM processes in parallel during the backup operation. Increasing parallelism can improve performance by allowing multiple files to be copied simultaneously. To copy files in parallel, set `backup.numParallelFiles` in the From aad2bf0f641f1f6d7b2de09970ca8159925243e6 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 12:23:18 +0530 Subject: [PATCH 027/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/usage/backup-physical.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/usage/backup-physical.md b/docs/usage/backup-physical.md index 8d028d0a..8eedae01 100644 --- a/docs/usage/backup-physical.md +++ b/docs/usage/backup-physical.md @@ -23,8 +23,7 @@ Starting with [2.4.0](../release-notes/2.4.0.md), PBM doesn't stop [point-in-tim For physical backups stored on a filesystem, you can control how many files PBM processes in parallel during the backup operation. Increasing parallelism can improve performance by allowing multiple files to be copied simultaneously. -To copy files in parallel, set `backup.numParallelFiles` in the -PBM configuration: +To copy files in parallel, set `backup.numParallelFiles` in the PBM configuration: ```yaml backup: From 132ad2270ffa1b5fa78229c696ce5b36cd764a10 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 12:23:30 +0530 Subject: [PATCH 028/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/usage/backup-physical.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage/backup-physical.md b/docs/usage/backup-physical.md index 8eedae01..4d409dfe 100644 --- a/docs/usage/backup-physical.md +++ b/docs/usage/backup-physical.md @@ -30,7 +30,7 @@ backup: numParallelFiles: 4 ``` -Or pass `--num-parallel-files` +Or pass `--num-parallel-files`: ```sh pbm backup --num-parallel-files=4 From f6fbad77a85ad83cf036c30f434607b656f973e3 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 12:23:42 +0530 Subject: [PATCH 029/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/usage/backup-physical.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/usage/backup-physical.md b/docs/usage/backup-physical.md index 4d409dfe..335d3d6a 100644 --- a/docs/usage/backup-physical.md +++ b/docs/usage/backup-physical.md @@ -37,9 +37,7 @@ pbm backup --num-parallel-files=4 ``` !!! note - Parallel file copy applies to **physical backups to filesystem - or NFS storage only**. It has no effect on logical backups or - on S3-compatible storage. + Parallel file copy applies to **physical backups to filesystem or NFS storage only**. It has no effect on logical backups or on S3-compatible storage. ## Next steps From 4181d3c57d5537e58a929ac2ca036d2ddc8cc0a2 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 12:23:57 +0530 Subject: [PATCH 030/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 47eb75ca..12332dae 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -102,7 +102,7 @@ This is useful when you want to: - Fail fast if the balancer cannot be stopped -## restore.numParallelFiles +### restore.numParallelFiles *Type*: int
*Default*: 1
From 4b3fe64f5543c7c3f451e2994c1157a92be6a76f Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 12:24:19 +0530 Subject: [PATCH 031/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 12332dae..a58b60d9 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -109,10 +109,9 @@ This is useful when you want to: *Storage*: Filesystem only
*Restore type:* Physical only -The number of files to copy in parallel during a physical restore -from filesystem or NFS storage. +The number of files to copy in parallel during a physical restore from filesystem or NFS storage. -The default value of `1` copies files sequentially. If parameter is not specified, files will be uploaded/downloaded sequentially. +The default value is `1`, which copies files sequentially. From 53ab1e158437bc01b20eceb6159deaffcfc0bea5 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 12:24:28 +0530 Subject: [PATCH 032/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/backup-options.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/reference/backup-options.md b/docs/reference/backup-options.md index 8fa1f151..114ca23a 100644 --- a/docs/reference/backup-options.md +++ b/docs/reference/backup-options.md @@ -129,10 +129,9 @@ Available starting with version 2.7.0. *Storage*: Filesystem only
*Backup type:* Physical only -The number of files to copy in parallel during a physical backup -to filesystem or NFS storage. +The number of files to copy in parallel during a physical backup to filesystem or NFS storage. -The default value of `1` copies files sequentially. If parameter is not specified, files will be uploaded/downloaded sequentially. +The default value is `1`, which copies files sequentially. From ffc30b4e1a48642fb1a0cc08eb8720ef3d17cfdf Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 12:32:09 +0530 Subject: [PATCH 033/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index a58b60d9..a3a7d994 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -106,7 +106,7 @@ This is useful when you want to: *Type*: int
*Default*: 1
-*Storage*: Filesystem only
+*Storage*: Filesystem / NFS only
*Restore type:* Physical only The number of files to copy in parallel during a physical restore from filesystem or NFS storage. From 303c5a3a33868a80a458a48ad8664b56cca3fe0f Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 12:32:19 +0530 Subject: [PATCH 034/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/backup-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/backup-options.md b/docs/reference/backup-options.md index 114ca23a..baed0c76 100644 --- a/docs/reference/backup-options.md +++ b/docs/reference/backup-options.md @@ -126,7 +126,7 @@ Available starting with version 2.7.0. *Type*: int
*Default*: 1
-*Storage*: Filesystem only
+*Storage*: Filesystem / NFS only
*Backup type:* Physical only The number of files to copy in parallel during a physical backup to filesystem or NFS storage. From 94232caf9c0d6edcbd102144b6331d9a481f3e28 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 12:43:05 +0530 Subject: [PATCH 035/212] self review --- docs/usage/backup-physical.md | 3 +-- docs/usage/restore-physical.md | 6 ++++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/usage/backup-physical.md b/docs/usage/backup-physical.md index 335d3d6a..d38f8c1a 100644 --- a/docs/usage/backup-physical.md +++ b/docs/usage/backup-physical.md @@ -18,11 +18,10 @@ pbm backup --type=physical Starting with [2.4.0](../release-notes/2.4.0.md), PBM doesn't stop [point-in-time recovery oplog slicing](../features/point-in-time-recovery.md#oplog-slicing), if it's enabled, but runs it in parallel. This ensures [point-in-time recovery](pitr-tutorial.md) to any timestamp if it takes too long (e.g. hours) to make a backup snapshot. -## Improve backup performance on filesystem storage +## Parallel file copy for filesystem storage For physical backups stored on a filesystem, you can control how many files PBM processes in parallel during the backup operation. Increasing parallelism can improve performance by allowing multiple files to be copied simultaneously. - To copy files in parallel, set `backup.numParallelFiles` in the PBM configuration: ```yaml diff --git a/docs/usage/restore-physical.md b/docs/usage/restore-physical.md index ee9464c5..d92d1647 100644 --- a/docs/usage/restore-physical.md +++ b/docs/usage/restore-physical.md @@ -151,9 +151,11 @@ restore: * `maxDownloadBufferMb` - the maximum size of memory buffer to store the downloaded data chunks for decompression and ordering. It is calculated as `numDownloadWorkers * downloadChunkMb * 16` * `downloadChunkMb` is the size of the data chunk to download (by default, 32 MB) -## Improve restore performance on filesystem storage +## Parallel file copy for filesystem storage -For physical restores from filesystem storage, you can control how many files PBM copies in parallel during the restore operation. Increasing the number of parallel file copies can reduce restore time by allowing multiple files to be processed simultaneously, depending on the available system and storage resources. +By default, PBM copies backup files sequentially during a physical +restore from filesystem or NFS storage. On fast NFS mounts, this +limits restore throughput regardless of available network bandwidth. To copy files in parallel, set `restore.numParallelFiles` in the PBM configuration: From 5ce1aa2f184bf0bce987eb1ff4948d1e6b1fbaa1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 11 Jun 2026 07:17:35 +0000 Subject: [PATCH 036/212] Remove extra trailing blank lines in backup options docs --- docs/reference/backup-options.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docs/reference/backup-options.md b/docs/reference/backup-options.md index baed0c76..8950986f 100644 --- a/docs/reference/backup-options.md +++ b/docs/reference/backup-options.md @@ -132,9 +132,3 @@ Available starting with version 2.7.0. The number of files to copy in parallel during a physical backup to filesystem or NFS storage. The default value is `1`, which copies files sequentially. - - - - - - From b73439fc4dd7cb542523ae165cf93cf6b2f43733 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 12:50:16 +0530 Subject: [PATCH 037/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/usage/backup-physical.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/usage/backup-physical.md b/docs/usage/backup-physical.md index d38f8c1a..cd078f9f 100644 --- a/docs/usage/backup-physical.md +++ b/docs/usage/backup-physical.md @@ -18,9 +18,9 @@ pbm backup --type=physical Starting with [2.4.0](../release-notes/2.4.0.md), PBM doesn't stop [point-in-time recovery oplog slicing](../features/point-in-time-recovery.md#oplog-slicing), if it's enabled, but runs it in parallel. This ensures [point-in-time recovery](pitr-tutorial.md) to any timestamp if it takes too long (e.g. hours) to make a backup snapshot. -## Parallel file copy for filesystem storage +## Parallel file copy for filesystem or NFS storage -For physical backups stored on a filesystem, you can control how many files PBM processes in parallel during the backup operation. Increasing parallelism can improve performance by allowing multiple files to be copied simultaneously. +For physical backups stored on a filesystem or NFS mount, you can control how many files PBM processes in parallel during the backup operation. Increasing parallelism can improve performance by allowing multiple files to be copied simultaneously. To copy files in parallel, set `backup.numParallelFiles` in the PBM configuration: From fdaa87de3cc5de6cb2e01295d2dad3cef573608c Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 12:50:28 +0530 Subject: [PATCH 038/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/usage/restore-physical.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/usage/restore-physical.md b/docs/usage/restore-physical.md index d92d1647..0b6fa874 100644 --- a/docs/usage/restore-physical.md +++ b/docs/usage/restore-physical.md @@ -151,11 +151,9 @@ restore: * `maxDownloadBufferMb` - the maximum size of memory buffer to store the downloaded data chunks for decompression and ordering. It is calculated as `numDownloadWorkers * downloadChunkMb * 16` * `downloadChunkMb` is the size of the data chunk to download (by default, 32 MB) -## Parallel file copy for filesystem storage +## Parallel file copy for filesystem or NFS storage -By default, PBM copies backup files sequentially during a physical -restore from filesystem or NFS storage. On fast NFS mounts, this -limits restore throughput regardless of available network bandwidth. +By default, PBM copies backup files sequentially during a physical restore from filesystem or NFS storage. On fast NFS mounts, this limits restore throughput regardless of available network bandwidth. To copy files in parallel, set `restore.numParallelFiles` in the PBM configuration: From 4f9fc295a95fd9a0bb174b1e3d5361ff3b6fbbab Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 13:05:34 +0530 Subject: [PATCH 039/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/usage/restore-physical.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage/restore-physical.md b/docs/usage/restore-physical.md index 0b6fa874..534cad7b 100644 --- a/docs/usage/restore-physical.md +++ b/docs/usage/restore-physical.md @@ -151,7 +151,7 @@ restore: * `maxDownloadBufferMb` - the maximum size of memory buffer to store the downloaded data chunks for decompression and ordering. It is calculated as `numDownloadWorkers * downloadChunkMb * 16` * `downloadChunkMb` is the size of the data chunk to download (by default, 32 MB) -## Parallel file copy for filesystem or NFS storage +### Parallel file copy for filesystem or NFS storage By default, PBM copies backup files sequentially during a physical restore from filesystem or NFS storage. On fast NFS mounts, this limits restore throughput regardless of available network bandwidth. From 66f72da34717d2ff57b3c81a57713661ec27d5f4 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 13:08:15 +0530 Subject: [PATCH 040/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/usage/backup-physical.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage/backup-physical.md b/docs/usage/backup-physical.md index cd078f9f..9c06a958 100644 --- a/docs/usage/backup-physical.md +++ b/docs/usage/backup-physical.md @@ -32,7 +32,7 @@ backup: Or pass `--num-parallel-files`: ```sh -pbm backup --num-parallel-files=4 +pbm backup --type=physical --num-parallel-files=4 ``` !!! note From b2d07f708834a7fce8c7ceaf35b347efa2488943 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 11 Jun 2026 07:38:22 +0000 Subject: [PATCH 041/212] Add numParallelFiles to backup YAML example --- docs/reference/backup-options.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/reference/backup-options.md b/docs/reference/backup-options.md index 8950986f..c05696a3 100644 --- a/docs/reference/backup-options.md +++ b/docs/reference/backup-options.md @@ -13,6 +13,7 @@ backup: startingStatus: 60 oplogSpanMin: numParallelCollections: + numParallelFiles: ``` ## priority From d08cf9ab776944f81f863b219f29c477af286860 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 11 Jun 2026 07:38:50 +0000 Subject: [PATCH 042/212] Remove trailing blank lines in restore options doc --- docs/reference/restore-options.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index a3a7d994..f3c1e071 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -112,7 +112,3 @@ This is useful when you want to: The number of files to copy in parallel during a physical restore from filesystem or NFS storage. The default value is `1`, which copies files sequentially. - - - - From f5c0f06c60fc42ef6001ae9e378d8d26696461b7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 11 Jun 2026 07:40:07 +0000 Subject: [PATCH 043/212] Add restore numParallelFiles to YAML example --- docs/reference/restore-options.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index f3c1e071..02490c64 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -6,6 +6,7 @@ restore: numInsertionWorkers: numParallelCollections: numDownloadWorkers: + numParallelFiles: maxDownloadBufferMb: downloadChunkMb: mongodLocation: From aef469ce389be587305f31114f09e8d78fcdf02c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 11 Jun 2026 07:40:49 +0000 Subject: [PATCH 044/212] Add restore numParallelFiles to YAML example --- .cache/plugin/git-committers/page-authors.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 .cache/plugin/git-committers/page-authors.json diff --git a/.cache/plugin/git-committers/page-authors.json b/.cache/plugin/git-committers/page-authors.json new file mode 100644 index 00000000..de035433 --- /dev/null +++ b/.cache/plugin/git-committers/page-authors.json @@ -0,0 +1 @@ +{"cache_date": "2026-06-11", "page_authors": {"docs/index.md": {"last_commit_date": "2025-02-20", "authors": []}, "docs/404.md": {"last_commit_date": "2023-12-08", "authors": []}, "docs/CODE_OF_CONDUCT.md": {"last_commit_date": "2026-02-09", "authors": []}, "docs/about-docs.md": {"last_commit_date": "2025-02-19", "authors": []}, "docs/copyright.md": {"last_commit_date": "2024-12-09", "authors": []}, "docs/get-help.md": {"last_commit_date": "2025-02-20", "authors": []}, "docs/installation.md": {"last_commit_date": "2024-08-07", "authors": []}, "docs/intro.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/pmm.md": {"last_commit_date": "2025-02-12", "authors": []}, "docs/release-notes.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/system-requirements.md": {"last_commit_date": "2025-01-23", "authors": []}, "docs/trademark-policy.md": {"last_commit_date": "2023-12-08", "authors": []}, "docs/details/architecture.md": {"last_commit_date": "2024-09-10", "authors": []}, "docs/details/authentication.md": {"last_commit_date": "2026-03-05", "authors": []}, "docs/details/azure.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/details/cli.md": {"last_commit_date": "2024-03-04", "authors": []}, "docs/details/control-collections.md": {"last_commit_date": "2024-05-16", "authors": []}, "docs/details/deployments.md": {"last_commit_date": "2024-05-16", "authors": []}, "docs/details/endpoint-map.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/details/filesystem-storage.md": {"last_commit_date": "2025-07-16", "authors": []}, "docs/details/gcs.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/details/minio.md": {"last_commit_date": "2026-03-16", "authors": []}, "docs/details/oss.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/details/pbm-agent.md": {"last_commit_date": "2024-09-10", "authors": []}, "docs/details/s3-storage.md": {"last_commit_date": "2026-04-08", "authors": []}, "docs/details/storage-configuration.md": {"last_commit_date": "2026-03-16", "authors": []}, "docs/details/versions.md": {"last_commit_date": "2025-12-03", "authors": []}, "docs/details/workload-identity-auth.md": {"last_commit_date": "2026-02-24", "authors": []}, "docs/features/backup-sharding.md": {"last_commit_date": "2025-02-20", "authors": []}, "docs/features/backup-types.md": {"last_commit_date": "2024-11-19", "authors": []}, "docs/features/comparison.md": {"last_commit_date": "2025-05-23", "authors": []}, "docs/features/incremental-backup.md": {"last_commit_date": "2025-02-20", "authors": []}, "docs/features/known-limitations.md": {"last_commit_date": "2026-04-29", "authors": []}, "docs/features/logical.md": {"last_commit_date": "2024-09-02", "authors": []}, "docs/features/multi-storage.md": {"last_commit_date": "2026-04-29", "authors": []}, "docs/features/physical.md": {"last_commit_date": "2026-04-29", "authors": []}, "docs/features/point-in-time-recovery.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/features/restore-new-env.md": {"last_commit_date": "2025-09-23", "authors": []}, "docs/features/restore-remapping.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/features/selective-backup.md": {"last_commit_date": "2026-02-24", "authors": []}, "docs/features/snapshots.md": {"last_commit_date": "2026-03-26", "authors": []}, "docs/features/split-merge-backup.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/install/backup-storage.md": {"last_commit_date": "2026-03-26", "authors": []}, "docs/install/configure-authentication.md": {"last_commit_date": "2026-06-10", "authors": []}, "docs/install/docker.md": {"last_commit_date": "2026-06-10", "authors": []}, "docs/install/initial-setup.md": {"last_commit_date": "2024-09-10", "authors": []}, "docs/install/repos.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/install/secure-credentials-systemd.md": {"last_commit_date": "2026-04-01", "authors": []}, "docs/install/source.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/install/start-pbm-agent.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/install/tarball.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/manage/automate-s3-access.md": {"last_commit_date": "2025-11-13", "authors": []}, "docs/manage/change-nodes.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/manage/configure-remotely.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/manage/logpath.md": {"last_commit_date": "2025-12-24", "authors": []}, "docs/manage/overview.md": {"last_commit_date": "2023-12-08", "authors": []}, "docs/manage/start-agent-with-config.md": {"last_commit_date": "2025-12-24", "authors": []}, "docs/manage/uninstalling.md": {"last_commit_date": "2023-03-29", "authors": []}, "docs/manage/upgrading.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/reference/backup-options.md": {"last_commit_date": "2026-06-11", "authors": []}, "docs/reference/config.md": {"last_commit_date": "2026-04-17", "authors": []}, "docs/reference/configuration-options.md": {"last_commit_date": "2026-04-08", "authors": []}, "docs/reference/glossary.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/reference/logging-options.md": {"last_commit_date": "2025-02-19", "authors": []}, "docs/reference/pbm-agent-config-options.md": {"last_commit_date": "2025-12-24", "authors": []}, "docs/reference/pbm-commands.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/reference/pitr-options.md": {"last_commit_date": "2025-12-01", "authors": []}, "docs/reference/restore-options.md": {"last_commit_date": "2026-06-11", "authors": []}, "docs/release-notes/0.5.0.md": {"last_commit_date": "2023-01-19", "authors": []}, "docs/release-notes/1.0.0.md": {"last_commit_date": "2024-12-06", "authors": []}, "docs/release-notes/1.1.0.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.1.1.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.1.3.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.2.0.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.2.1.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.3.0.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.3.1.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.3.2.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.3.3.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.3.4.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.4.0.md": {"last_commit_date": "2023-05-09", "authors": []}, "docs/release-notes/1.4.1.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.5.0.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.6.0.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.6.1.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.7.0.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.8.0.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.8.1.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/2.0.0.md": {"last_commit_date": "2025-02-20", "authors": []}, "docs/release-notes/2.0.1.md": {"last_commit_date": "2025-05-23", "authors": []}, "docs/release-notes/2.0.2.md": {"last_commit_date": "2022-10-27", "authors": []}, "docs/release-notes/2.0.3.md": {"last_commit_date": "2023-03-29", "authors": []}, "docs/release-notes/2.0.4.md": {"last_commit_date": "2025-02-20", "authors": []}, "docs/release-notes/2.0.5.md": {"last_commit_date": "2023-03-29", "authors": []}, "docs/release-notes/2.1.0.md": {"last_commit_date": "2025-03-12", "authors": []}, "docs/release-notes/2.10.0.md": {"last_commit_date": "2025-07-02", "authors": []}, "docs/release-notes/2.11.0.md": {"last_commit_date": "2025-09-25", "authors": []}, "docs/release-notes/2.12.0.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/release-notes/2.13.0.md": {"last_commit_date": "2026-03-02", "authors": []}, "docs/release-notes/2.14.0.md": {"last_commit_date": "2026-04-29", "authors": []}, "docs/release-notes/2.2.0.md": {"last_commit_date": "2025-02-20", "authors": []}, "docs/release-notes/2.2.1.md": {"last_commit_date": "2023-07-27", "authors": []}, "docs/release-notes/2.3.0.md": {"last_commit_date": "2023-09-25", "authors": []}, "docs/release-notes/2.3.1.md": {"last_commit_date": "2023-12-08", "authors": []}, "docs/release-notes/2.4.0.md": {"last_commit_date": "2024-03-21", "authors": []}, "docs/release-notes/2.4.1.md": {"last_commit_date": "2024-03-26", "authors": []}, "docs/release-notes/2.5.0.md": {"last_commit_date": "2024-05-16", "authors": []}, "docs/release-notes/2.6.0.md": {"last_commit_date": "2025-04-09", "authors": []}, "docs/release-notes/2.7.0.md": {"last_commit_date": "2024-10-09", "authors": []}, "docs/release-notes/2.8.0.md": {"last_commit_date": "2025-06-26", "authors": []}, "docs/release-notes/2.9.0.md": {"last_commit_date": "2025-02-19", "authors": []}, "docs/release-notes/2.9.1.md": {"last_commit_date": "2025-03-27", "authors": []}, "docs/troubleshoot/index.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/troubleshoot/faq.md": {"last_commit_date": "2026-01-02", "authors": []}, "docs/troubleshoot/pbm-pmm.md": {"last_commit_date": "2026-06-10", "authors": []}, "docs/troubleshoot/pbm-report.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/troubleshoot/restore-partial.md": {"last_commit_date": "2025-06-26", "authors": []}, "docs/troubleshoot/status.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/troubleshoot/troubleshooting.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/usage/backup-external.md": {"last_commit_date": "2026-04-16", "authors": []}, "docs/usage/backup-incremental.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/usage/backup-physical.md": {"last_commit_date": "2026-06-11", "authors": []}, "docs/usage/backup-priority.md": {"last_commit_date": "2025-08-19", "authors": []}, "docs/usage/backup-selective.md": {"last_commit_date": "2026-02-24", "authors": []}, "docs/usage/cancel-backup.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/usage/compression.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/usage/delete-backup.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/usage/describe-backup.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/usage/list-backup.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/usage/logs.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/usage/oplog-replay.md": {"last_commit_date": "2025-12-04", "authors": []}, "docs/usage/pitr-physical.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/usage/pitr-selective.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/usage/pitr-tutorial.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/usage/restore-external-agent-restart.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/usage/restore-external.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/usage/restore-incremental.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/usage/restore-physical.md": {"last_commit_date": "2026-06-11", "authors": []}, "docs/usage/restore-progress.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/usage/restore-selective.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/usage/restore.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/usage/schedule-backup.md": {"last_commit_date": "2025-12-29", "authors": []}, "docs/usage/start-backup.md": {"last_commit_date": "2025-11-04", "authors": []}}} \ No newline at end of file From 2973877323db96196d9abbf097ba914e4e98200a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 11 Jun 2026 07:55:34 +0000 Subject: [PATCH 045/212] Remove generated cache artifact and ignore .cache --- .cache/plugin/git-committers/page-authors.json | 1 - .gitignore | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 .cache/plugin/git-committers/page-authors.json diff --git a/.cache/plugin/git-committers/page-authors.json b/.cache/plugin/git-committers/page-authors.json deleted file mode 100644 index de035433..00000000 --- a/.cache/plugin/git-committers/page-authors.json +++ /dev/null @@ -1 +0,0 @@ -{"cache_date": "2026-06-11", "page_authors": {"docs/index.md": {"last_commit_date": "2025-02-20", "authors": []}, "docs/404.md": {"last_commit_date": "2023-12-08", "authors": []}, "docs/CODE_OF_CONDUCT.md": {"last_commit_date": "2026-02-09", "authors": []}, "docs/about-docs.md": {"last_commit_date": "2025-02-19", "authors": []}, "docs/copyright.md": {"last_commit_date": "2024-12-09", "authors": []}, "docs/get-help.md": {"last_commit_date": "2025-02-20", "authors": []}, "docs/installation.md": {"last_commit_date": "2024-08-07", "authors": []}, "docs/intro.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/pmm.md": {"last_commit_date": "2025-02-12", "authors": []}, "docs/release-notes.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/system-requirements.md": {"last_commit_date": "2025-01-23", "authors": []}, "docs/trademark-policy.md": {"last_commit_date": "2023-12-08", "authors": []}, "docs/details/architecture.md": {"last_commit_date": "2024-09-10", "authors": []}, "docs/details/authentication.md": {"last_commit_date": "2026-03-05", "authors": []}, "docs/details/azure.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/details/cli.md": {"last_commit_date": "2024-03-04", "authors": []}, "docs/details/control-collections.md": {"last_commit_date": "2024-05-16", "authors": []}, "docs/details/deployments.md": {"last_commit_date": "2024-05-16", "authors": []}, "docs/details/endpoint-map.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/details/filesystem-storage.md": {"last_commit_date": "2025-07-16", "authors": []}, "docs/details/gcs.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/details/minio.md": {"last_commit_date": "2026-03-16", "authors": []}, "docs/details/oss.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/details/pbm-agent.md": {"last_commit_date": "2024-09-10", "authors": []}, "docs/details/s3-storage.md": {"last_commit_date": "2026-04-08", "authors": []}, "docs/details/storage-configuration.md": {"last_commit_date": "2026-03-16", "authors": []}, "docs/details/versions.md": {"last_commit_date": "2025-12-03", "authors": []}, "docs/details/workload-identity-auth.md": {"last_commit_date": "2026-02-24", "authors": []}, "docs/features/backup-sharding.md": {"last_commit_date": "2025-02-20", "authors": []}, "docs/features/backup-types.md": {"last_commit_date": "2024-11-19", "authors": []}, "docs/features/comparison.md": {"last_commit_date": "2025-05-23", "authors": []}, "docs/features/incremental-backup.md": {"last_commit_date": "2025-02-20", "authors": []}, "docs/features/known-limitations.md": {"last_commit_date": "2026-04-29", "authors": []}, "docs/features/logical.md": {"last_commit_date": "2024-09-02", "authors": []}, "docs/features/multi-storage.md": {"last_commit_date": "2026-04-29", "authors": []}, "docs/features/physical.md": {"last_commit_date": "2026-04-29", "authors": []}, "docs/features/point-in-time-recovery.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/features/restore-new-env.md": {"last_commit_date": "2025-09-23", "authors": []}, "docs/features/restore-remapping.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/features/selective-backup.md": {"last_commit_date": "2026-02-24", "authors": []}, "docs/features/snapshots.md": {"last_commit_date": "2026-03-26", "authors": []}, "docs/features/split-merge-backup.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/install/backup-storage.md": {"last_commit_date": "2026-03-26", "authors": []}, "docs/install/configure-authentication.md": {"last_commit_date": "2026-06-10", "authors": []}, "docs/install/docker.md": {"last_commit_date": "2026-06-10", "authors": []}, "docs/install/initial-setup.md": {"last_commit_date": "2024-09-10", "authors": []}, "docs/install/repos.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/install/secure-credentials-systemd.md": {"last_commit_date": "2026-04-01", "authors": []}, "docs/install/source.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/install/start-pbm-agent.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/install/tarball.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/manage/automate-s3-access.md": {"last_commit_date": "2025-11-13", "authors": []}, "docs/manage/change-nodes.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/manage/configure-remotely.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/manage/logpath.md": {"last_commit_date": "2025-12-24", "authors": []}, "docs/manage/overview.md": {"last_commit_date": "2023-12-08", "authors": []}, "docs/manage/start-agent-with-config.md": {"last_commit_date": "2025-12-24", "authors": []}, "docs/manage/uninstalling.md": {"last_commit_date": "2023-03-29", "authors": []}, "docs/manage/upgrading.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/reference/backup-options.md": {"last_commit_date": "2026-06-11", "authors": []}, "docs/reference/config.md": {"last_commit_date": "2026-04-17", "authors": []}, "docs/reference/configuration-options.md": {"last_commit_date": "2026-04-08", "authors": []}, "docs/reference/glossary.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/reference/logging-options.md": {"last_commit_date": "2025-02-19", "authors": []}, "docs/reference/pbm-agent-config-options.md": {"last_commit_date": "2025-12-24", "authors": []}, "docs/reference/pbm-commands.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/reference/pitr-options.md": {"last_commit_date": "2025-12-01", "authors": []}, "docs/reference/restore-options.md": {"last_commit_date": "2026-06-11", "authors": []}, "docs/release-notes/0.5.0.md": {"last_commit_date": "2023-01-19", "authors": []}, "docs/release-notes/1.0.0.md": {"last_commit_date": "2024-12-06", "authors": []}, "docs/release-notes/1.1.0.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.1.1.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.1.3.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.2.0.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.2.1.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.3.0.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.3.1.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.3.2.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.3.3.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.3.4.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.4.0.md": {"last_commit_date": "2023-05-09", "authors": []}, "docs/release-notes/1.4.1.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.5.0.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.6.0.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.6.1.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.7.0.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.8.0.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/1.8.1.md": {"last_commit_date": "2022-08-18", "authors": []}, "docs/release-notes/2.0.0.md": {"last_commit_date": "2025-02-20", "authors": []}, "docs/release-notes/2.0.1.md": {"last_commit_date": "2025-05-23", "authors": []}, "docs/release-notes/2.0.2.md": {"last_commit_date": "2022-10-27", "authors": []}, "docs/release-notes/2.0.3.md": {"last_commit_date": "2023-03-29", "authors": []}, "docs/release-notes/2.0.4.md": {"last_commit_date": "2025-02-20", "authors": []}, "docs/release-notes/2.0.5.md": {"last_commit_date": "2023-03-29", "authors": []}, "docs/release-notes/2.1.0.md": {"last_commit_date": "2025-03-12", "authors": []}, "docs/release-notes/2.10.0.md": {"last_commit_date": "2025-07-02", "authors": []}, "docs/release-notes/2.11.0.md": {"last_commit_date": "2025-09-25", "authors": []}, "docs/release-notes/2.12.0.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/release-notes/2.13.0.md": {"last_commit_date": "2026-03-02", "authors": []}, "docs/release-notes/2.14.0.md": {"last_commit_date": "2026-04-29", "authors": []}, "docs/release-notes/2.2.0.md": {"last_commit_date": "2025-02-20", "authors": []}, "docs/release-notes/2.2.1.md": {"last_commit_date": "2023-07-27", "authors": []}, "docs/release-notes/2.3.0.md": {"last_commit_date": "2023-09-25", "authors": []}, "docs/release-notes/2.3.1.md": {"last_commit_date": "2023-12-08", "authors": []}, "docs/release-notes/2.4.0.md": {"last_commit_date": "2024-03-21", "authors": []}, "docs/release-notes/2.4.1.md": {"last_commit_date": "2024-03-26", "authors": []}, "docs/release-notes/2.5.0.md": {"last_commit_date": "2024-05-16", "authors": []}, "docs/release-notes/2.6.0.md": {"last_commit_date": "2025-04-09", "authors": []}, "docs/release-notes/2.7.0.md": {"last_commit_date": "2024-10-09", "authors": []}, "docs/release-notes/2.8.0.md": {"last_commit_date": "2025-06-26", "authors": []}, "docs/release-notes/2.9.0.md": {"last_commit_date": "2025-02-19", "authors": []}, "docs/release-notes/2.9.1.md": {"last_commit_date": "2025-03-27", "authors": []}, "docs/troubleshoot/index.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/troubleshoot/faq.md": {"last_commit_date": "2026-01-02", "authors": []}, "docs/troubleshoot/pbm-pmm.md": {"last_commit_date": "2026-06-10", "authors": []}, "docs/troubleshoot/pbm-report.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/troubleshoot/restore-partial.md": {"last_commit_date": "2025-06-26", "authors": []}, "docs/troubleshoot/status.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/troubleshoot/troubleshooting.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/usage/backup-external.md": {"last_commit_date": "2026-04-16", "authors": []}, "docs/usage/backup-incremental.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/usage/backup-physical.md": {"last_commit_date": "2026-06-11", "authors": []}, "docs/usage/backup-priority.md": {"last_commit_date": "2025-08-19", "authors": []}, "docs/usage/backup-selective.md": {"last_commit_date": "2026-02-24", "authors": []}, "docs/usage/cancel-backup.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/usage/compression.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/usage/delete-backup.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/usage/describe-backup.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/usage/list-backup.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/usage/logs.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/usage/oplog-replay.md": {"last_commit_date": "2025-12-04", "authors": []}, "docs/usage/pitr-physical.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/usage/pitr-selective.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/usage/pitr-tutorial.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/usage/restore-external-agent-restart.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/usage/restore-external.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/usage/restore-incremental.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/usage/restore-physical.md": {"last_commit_date": "2026-06-11", "authors": []}, "docs/usage/restore-progress.md": {"last_commit_date": "2025-11-04", "authors": []}, "docs/usage/restore-selective.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/usage/restore.md": {"last_commit_date": "2026-04-28", "authors": []}, "docs/usage/schedule-backup.md": {"last_commit_date": "2025-12-29", "authors": []}, "docs/usage/start-backup.md": {"last_commit_date": "2025-11-04", "authors": []}}} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 4da6fc20..a0962e49 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ venv/ # Local Netlify folder .netlify site +.cache/ styles/ From c43bd8ddf719d48f0ba428c3386d62d5948ffd4e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 11 Jun 2026 07:55:54 +0000 Subject: [PATCH 046/212] docs: add num-parallel-files to pbm backup flags --- docs/reference/pbm-commands.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/reference/pbm-commands.md b/docs/reference/pbm-commands.md index f1c54b23..2c097877 100644 --- a/docs/reference/pbm-commands.md +++ b/docs/reference/pbm-commands.md @@ -25,6 +25,7 @@ The command accepts the following flags: | `--compression`| Create a backup with compression.
Supported compression methods: `gzip`, `snappy`, `lz4`, `s2`, `pgzip`, `zstd`. Default: `s2`
The `none` value means no compression is done during backup. | | `--compression-level` | Configure the compression level from 0 to 10. The default value depends on the compression method used. | | `--num-parallel-collections`| Sets the number of collections to process in parallel during a specific logical backup. When undefined, `pbm-agent` processes the number of parallel collections defined for the `backup.numParallelCollections` configuration parameter. If that is undefined, the default number of collections to process in parallel is the half of the number of logical CPUs. Available starting with version 2.7.0.| +| `--num-parallel-files`| Sets the number of files to process in parallel during a specific physical backup. When undefined, `pbm-agent` uses the value defined for the `backup.numParallelFiles` configuration parameter. If that is undefined, the default number of files to process in parallel is `1`. | | `-o`, `--out=text` | Shows the output format as either plain text or a JSON object. Supported values: `text`, `json` | | `--wait` | Wait for the backup to finish. The flag blocks the shell session.| | `--wait-time` | The time to wait for PBM to report the status of the command execution. Use this flag together with the `--wait` flag. You can specify the duration in minutes or hours (for example 5m, 1h).

When not set, PBM waits till the command executes.

If it takes longer than the defined waiting time to execute the command, PBM prints the `Operation is in progress. Check pbm status and logs` error message and unblocks the shell session. The `pbm-agent` continues to execute the command enabling you to track its progress via the `pbm status` command. Available starting with version 2.6.0.| From badea9ee94c7ee6600cfa64ca8a24ea8abe0bae4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 11 Jun 2026 07:55:55 +0000 Subject: [PATCH 047/212] Document --num-parallel-files for pbm restore --- docs/reference/pbm-commands.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/reference/pbm-commands.md b/docs/reference/pbm-commands.md index 2c097877..22b1aede 100644 --- a/docs/reference/pbm-commands.md +++ b/docs/reference/pbm-commands.md @@ -941,6 +941,7 @@ The command accepts the following flags: | `--with-users-and-roles` | Restores users and roles created in custom databases during selective restore. Use this flag with the `--ns` flag. Available starting with version 2.5.0.| | `-c`, `--config` | The path to the `mongod.conf` file | | `--num-parallel-collections`| Sets the number of collections to process in parallel during a specific logical restore. When undefined, `pbm-agent` processes the number of parallel collections defined for the `restore.numParallelCollections` configuration parameter. If that is undefined, the default number of collections is the half of the number of logical CPUs. Available starting with version 2.7.0.| +| `--num-parallel-files` | Sets the number of files to copy in parallel during a specific physical restore. When undefined, PBM uses the value configured for the `restore.numParallelFiles` option. | | `--num-insertion-workers-per-collection`| Specifies the number of insertion workers to run concurrently per collection. Increasing the number for large import may increase the speed of the import. Available starting with version 2.8.0.| | `--ns-from`="database.collection" |Specifies the name of the collection you want to restore under a new name. It indicates the collection present in the backup that you are targeting for restoration. Available starting with version 2.8.0.| | `--ns-to`="database.collection" | Specifies the new name for the collection you are restoring from the original one. Available starting with version 2.8.0.| From 22d720fa7e3da7f2664d39c12460a0801053f998 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 14:05:05 +0530 Subject: [PATCH 048/212] Update backup-physical.md --- docs/usage/backup-physical.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/usage/backup-physical.md b/docs/usage/backup-physical.md index 9c06a958..df931e49 100644 --- a/docs/usage/backup-physical.md +++ b/docs/usage/backup-physical.md @@ -18,9 +18,9 @@ pbm backup --type=physical Starting with [2.4.0](../release-notes/2.4.0.md), PBM doesn't stop [point-in-time recovery oplog slicing](../features/point-in-time-recovery.md#oplog-slicing), if it's enabled, but runs it in parallel. This ensures [point-in-time recovery](pitr-tutorial.md) to any timestamp if it takes too long (e.g. hours) to make a backup snapshot. -## Parallel file copy for filesystem or NFS storage +## Parallel file copy for filesystem storage -For physical backups stored on a filesystem or NFS mount, you can control how many files PBM processes in parallel during the backup operation. Increasing parallelism can improve performance by allowing multiple files to be copied simultaneously. +For physical backups stored on a filesystem, you can control how many files PBM processes in parallel during the backup operation. Increasing parallelism can improve performance by allowing multiple files to be copied simultaneously. To copy files in parallel, set `backup.numParallelFiles` in the PBM configuration: @@ -36,7 +36,7 @@ pbm backup --type=physical --num-parallel-files=4 ``` !!! note - Parallel file copy applies to **physical backups to filesystem or NFS storage only**. It has no effect on logical backups or on S3-compatible storage. + Parallel file copy applies to **physical backups or incremental backups to filesystem only**. It has no effect on logical backups or on S3-compatible storage. ## Next steps From 231d400bd12db3694abbfb2dfcb20593fc11a481 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 14:22:36 +0530 Subject: [PATCH 049/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/pbm-commands.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/pbm-commands.md b/docs/reference/pbm-commands.md index 22b1aede..3820ab99 100644 --- a/docs/reference/pbm-commands.md +++ b/docs/reference/pbm-commands.md @@ -941,7 +941,7 @@ The command accepts the following flags: | `--with-users-and-roles` | Restores users and roles created in custom databases during selective restore. Use this flag with the `--ns` flag. Available starting with version 2.5.0.| | `-c`, `--config` | The path to the `mongod.conf` file | | `--num-parallel-collections`| Sets the number of collections to process in parallel during a specific logical restore. When undefined, `pbm-agent` processes the number of parallel collections defined for the `restore.numParallelCollections` configuration parameter. If that is undefined, the default number of collections is the half of the number of logical CPUs. Available starting with version 2.7.0.| -| `--num-parallel-files` | Sets the number of files to copy in parallel during a specific physical restore. When undefined, PBM uses the value configured for the `restore.numParallelFiles` option. | +| `--num-parallel-files` | Sets the number of files to copy in parallel during a specific physical restore from filesystem or NFS storage. When undefined, PBM uses the value configured for the `restore.numParallelFiles` option (default: `1`). | | `--num-insertion-workers-per-collection`| Specifies the number of insertion workers to run concurrently per collection. Increasing the number for large import may increase the speed of the import. Available starting with version 2.8.0.| | `--ns-from`="database.collection" |Specifies the name of the collection you want to restore under a new name. It indicates the collection present in the backup that you are targeting for restoration. Available starting with version 2.8.0.| | `--ns-to`="database.collection" | Specifies the new name for the collection you are restoring from the original one. Available starting with version 2.8.0.| From d4d074da903ef70c903cfa2d04039dfc29be9a0b Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 14:37:56 +0530 Subject: [PATCH 050/212] Update backup-physical.md --- docs/usage/backup-physical.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage/backup-physical.md b/docs/usage/backup-physical.md index df931e49..b2cd81dc 100644 --- a/docs/usage/backup-physical.md +++ b/docs/usage/backup-physical.md @@ -36,7 +36,7 @@ pbm backup --type=physical --num-parallel-files=4 ``` !!! note - Parallel file copy applies to **physical backups or incremental backups to filesystem only**. It has no effect on logical backups or on S3-compatible storage. + Parallel file copy applies to **physical backups and incremental physical backups stored on filesystem only**. It has no effect on logical backups or on any S3-compatible storage, regardless of backup type. ## Next steps From 218b613312e552bd1339a63e7605cea7c50cfa3a Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 20:23:42 +0530 Subject: [PATCH 051/212] PBM-1727 Oracle Cloud Storage --- docs/details/oci-storage.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/details/oci-storage.md diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md new file mode 100644 index 00000000..f29bc22e --- /dev/null +++ b/docs/details/oci-storage.md @@ -0,0 +1 @@ +# Configure Oracle Cloud Infrastructure Object Storage \ No newline at end of file From cb1ec3dbf736c31fdf33a99c40ed202c593069b4 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 11 Jun 2026 22:07:29 +0530 Subject: [PATCH 052/212] Update oci-storage.md --- docs/details/oci-storage.md | 239 +++++++++++++++++++++++++++++++++++- 1 file changed, 238 insertions(+), 1 deletion(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index f29bc22e..d1aced83 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -1 +1,238 @@ -# Configure Oracle Cloud Infrastructure Object Storage \ No newline at end of file +# Oracle Cloud Infrastructure Object Storage + +Percona Backup for MongoDB (PBM) supports [OCI Object Storage](https://docs.oracle.com/en-us/iaas/Content/Object/Concepts/objectstorageoverview.htm) as a remote backup destination through a dedicated OCI native driver, allowing you to store and manage MongoDB backups directly in OCI buckets. + +PBM connects to OCI Object Storage using the `userPrincipal` authentication type by default, which uses OCI API signing keys. For keyless authentication, PBM also supports `instancePrincipal` for PBM running on OCI Compute instances. + +## Prerequisites + +Before configuring PBM, ensure that you have: + +- An Oracle Cloud Infrastructure account +- An Object Storage bucket +- A user with access to the bucket +- Customer Secret Keys generated for the user +- Bucket permissions that allow reading and writing objects + + +## Configure OCI CLI + +Initialize the OCI CLI configuration: + +```sh +oci setup config +``` + +Use your tenancy home region as the default CLI region. + +If needed, update local file permissions: + +```bash +oci setup repair-file-permissions --file ~/.oci/config +oci setup repair-file-permissions --file ~/.oci/oci_api_key.pem +``` +If the setup generated a new API key, upload the public key to your OCI user: + +```bash +cat ~/.oci/oci_api_key_public.pem +``` + +In the OCI Console, go to **User settings → Tokens and keys → API keys → Add API key**, and paste the public key. + +## Verify region access + +Check the regions available to your tenancy: + +```bash +oci iam region-subscription list \ --region \ --output table +``` + +!!! note + The region specified in the configuration must be enabled and subscribed to in your OCI tenancy. + +## Get required OCI values + +Export the values required for the PBM configuration: + +```bash +export HOME_REGION= +export BUCKET_REGION= +export COMPARTMENT_NAME= +export BUCKET_NAME= +export PBM_PREFIX=pbm +``` + +Get the `tenancy OCID`, user `OCID`, `API key fingerprint`, `private key path`, and O`bject Storage namespace`: + +```bash +export TENANCY_OCID=$(oci iam tenancy get \ +--tenancy-id "$(awk -F= '/^tenancy=/{print $2}' ~/.oci/config)" \ +--region "$HOME_REGION" \ --query 'data.id' \ +--raw-output) + +export USER_OCID=$(awk -F= '/^user=/{print $2}' ~/.oci/config) +export FINGERPRINT=$(awk -F= '/^fingerprint=/{print $2}' ~/.oci/config) +export KEY_FILE=$(awk -F= '/^key_file=/{print $2}' ~/.oci/config) + +export NAMESPACE=$(oci os ns get \ +--region "$BUCKET_REGION" \ --query 'data' \ +--raw-output) +``` + +## Create a compartment + +Create a compartment for PBM backup resources: + +```bash +oci iam compartment create \ + --region "$HOME_REGION" \ --compartment-id "$TENANCY_OCID" \ + --name "$COMPARTMENT_NAME" \ + --description "PBM OCI Object Storage" +``` +Export the compartment OCID: + +```bash +export COMPARTMENT_OCID=$(oci iam compartment list \ + --region "$HOME_REGION" \ + --compartment-id "$TENANCY_OCID" \ + --compartment-id-in-subtree true \ + --all \ + --query "data[?name=='$COMPARTMENT_NAME' && \"lifecycle-state\"=='ACTIVE'].id | [0]" \ + --raw-output) +``` +## Create an Object Storage bucket + +Create the bucket: + +```bash +oci os bucket create \ + --region "$BUCKET_REGION" \ + --namespace-name "$NAMESPACE" \ + --compartment-id "$COMPARTMENT_OCID" \ + --name "$BUCKET_NAME" +``` + +Verify the bucket: + +```bash +oci os bucket get \ + --region "$BUCKET_REGION" \ + --namespace-name "$NAMESPACE" \ + --bucket-name "$BUCKET_NAME" +``` + +## Configure IAM policies + +PBM must be able to create, read, overwrite, and delete backup objects. + +Create a policy that allows the PBM user group to manage objects in the bucket: + +Allow group `` to manage object-family in compartment `` + +PBM also uses OCI native server-side copy operations. Add a policy for the regional Object Storage service: + +```bash +Allow service objectstorage- to manage object-family in compartment where any { + request.permission='OBJECT_READ', + request.permission='OBJECT_INSPECT', + request.permission='OBJECT_CREATE', + request.permission='OBJECT_OVERWRITE', + request.permission='OBJECT_DELETE' +} +``` + +Allow a few minutes for IAM policy changes to propagate. + +## Configure PBM with a user principal + +Use user principal authentication when PBM runs outside OCI or when you want to authenticate with OCI API signing keys. + +```yaml +storage: + type: oci + oci: + region: + namespace: + bucket: + prefix: pbm + credentials: + type: userPrincipal + userPrincipal: + tenancy: + user: + fingerprint: + privateKey: | + -----BEGIN PRIVATE KEY----- + ... + -----END PRIVATE KEY----- +``` + +!!! tip + Indent the private key correctly before adding it to the configuration: + + ```sh + sed 's/^/ /' "$KEY_FILE" + ``` + +## Configure PBM with an instance principal + +Use instance principal authentication when PBM runs on an OCI Compute instance. This method avoids storing API signing keys in the PBM configuration. + +Create a dynamic group that includes the compute instance: + +```sh +ANY {instance.id = ''} +``` + +Create a policy that allows the dynamic group to access the bucket: + +```sh +Allow dynamic-group to manage objects in compartment where target.bucket.name = '' +``` + +Then configure PBM: + +```yaml +storage: + type: oci + oci: + region: + namespace: + bucket: + prefix: pbm + credentials: + type: instancePrincipal +``` +Wait for few minutes for IAM policy propagation before testing the configuration. + +## Apply the PBM configuration + +Apply the configuration: + +```bash +pbm config --file /path/to/oci-config.yaml +``` + +Force PBM to resync the storage configuration: + +```sh +pbm config --force-resync +``` + +## Verify the configuration + +Run a backup: + +```bash +pbm backup +``` + +Check that PBM created objects under the configured prefix: + +```bash +oci os object list \ + --bucket-name \ + --prefix pbm/ +``` + +You should see backup metadata and backup files stored under the configured prefix. \ No newline at end of file From 6780b884e8cbcafaae2c519b1c64c231ba2d9ed8 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 11:35:30 +0530 Subject: [PATCH 053/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index d1aced83..1bd8f98f 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -62,7 +62,7 @@ export BUCKET_NAME= export PBM_PREFIX=pbm ``` -Get the `tenancy OCID`, user `OCID`, `API key fingerprint`, `private key path`, and O`bject Storage namespace`: +Get the `tenancy OCID`, user `OCID`, `API key fingerprint`, `private key path`, and `Object Storage namespace`: ```bash export TENANCY_OCID=$(oci iam tenancy get \ From b6defbd1cab51b4311fbae0cae3134ae30bb483e Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 11:35:53 +0530 Subject: [PATCH 054/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 1bd8f98f..95e6da1d 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -11,7 +11,7 @@ Before configuring PBM, ensure that you have: - An Oracle Cloud Infrastructure account - An Object Storage bucket - A user with access to the bucket -- Customer Secret Keys generated for the user +- An OCI API signing key pair (private key + uploaded public key) for the user - Bucket permissions that allow reading and writing objects From 434ac3f5271337823c0c33c3e788f2d81a601d11 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 11:36:36 +0530 Subject: [PATCH 055/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 95e6da1d..9dd4cb61 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -44,7 +44,9 @@ In the OCI Console, go to **User settings → Tokens and keys → API keys → A Check the regions available to your tenancy: ```bash -oci iam region-subscription list \ --region \ --output table +oci iam region-subscription list \ + --region \ + --output table ``` !!! note From 71732c0283a44149f634bafcaf995e491855ff2f Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 11:37:01 +0530 Subject: [PATCH 056/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 9dd4cb61..3eded983 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -67,18 +67,24 @@ export PBM_PREFIX=pbm Get the `tenancy OCID`, user `OCID`, `API key fingerprint`, `private key path`, and `Object Storage namespace`: ```bash -export TENANCY_OCID=$(oci iam tenancy get \ ---tenancy-id "$(awk -F= '/^tenancy=/{print $2}' ~/.oci/config)" \ ---region "$HOME_REGION" \ --query 'data.id' \ ---raw-output) - -export USER_OCID=$(awk -F= '/^user=/{print $2}' ~/.oci/config) -export FINGERPRINT=$(awk -F= '/^fingerprint=/{print $2}' ~/.oci/config) +export TENANCY_OCID=$( + oci iam tenancy get \ + --tenancy-id "$(awk -F= '/^tenancy=/{print $2}' ~/.oci/config)" \ + --region "$HOME_REGION" \ + --query 'data.id' \ + --raw-output +) + +export USER_OCID=$(awk -F= '/^user=/{print $2}' ~/.oci/config) +export FINGERPRINT=$(awk -F= '/^fingerprint=/{print $2}' ~/.oci/config) export KEY_FILE=$(awk -F= '/^key_file=/{print $2}' ~/.oci/config) -export NAMESPACE=$(oci os ns get \ ---region "$BUCKET_REGION" \ --query 'data' \ ---raw-output) +export NAMESPACE=$( + oci os ns get \ + --region "$BUCKET_REGION" \ + --query 'data' \ + --raw-output +) ``` ## Create a compartment From 47d828d8e619c0c07583087d39b707b6af90bfeb Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 11:37:23 +0530 Subject: [PATCH 057/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 3eded983..45b5ed9c 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -92,9 +92,10 @@ export NAMESPACE=$( Create a compartment for PBM backup resources: ```bash -oci iam compartment create \ - --region "$HOME_REGION" \ --compartment-id "$TENANCY_OCID" \ - --name "$COMPARTMENT_NAME" \ +oci iam compartment create \ + --region "$HOME_REGION" \ + --compartment-id "$TENANCY_OCID" \ + --name "$COMPARTMENT_NAME" \ --description "PBM OCI Object Storage" ``` Export the compartment OCID: From 826abd42e205d9492224d8c1ba8789a2d2fcd985 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 11:37:33 +0530 Subject: [PATCH 058/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 45b5ed9c..6a7823a3 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -114,10 +114,10 @@ export COMPARTMENT_OCID=$(oci iam compartment list \ Create the bucket: ```bash -oci os bucket create \ - --region "$BUCKET_REGION" \ - --namespace-name "$NAMESPACE" \ - --compartment-id "$COMPARTMENT_OCID" \ +oci os bucket create \ + --region "$BUCKET_REGION" \ + --namespace-name "$NAMESPACE" \ + --compartment-id "$COMPARTMENT_OCID" \ --name "$BUCKET_NAME" ``` From 2bc680b531562843d37ed84ee05bd89d37a51561 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 11:37:46 +0530 Subject: [PATCH 059/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 6a7823a3..e889ccb5 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -124,9 +124,9 @@ oci os bucket create \ Verify the bucket: ```bash -oci os bucket get \ - --region "$BUCKET_REGION" \ - --namespace-name "$NAMESPACE" \ +oci os bucket get \ + --region "$BUCKET_REGION" \ + --namespace-name "$NAMESPACE" \ --bucket-name "$BUCKET_NAME" ``` From 7b0c1f26dd1d3308cf63e4785881a13bac87ec51 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 11:38:09 +0530 Subject: [PATCH 060/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index e889ccb5..84f48cab 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -180,7 +180,7 @@ storage: Indent the private key correctly before adding it to the configuration: ```sh - sed 's/^/ /' "$KEY_FILE" + sed 's/^/ /' "$KEY_FILE" ``` ## Configure PBM with an instance principal From ecd613e7eed4fb1e7506ca2af3cc90d88773ce1f Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 11:38:25 +0530 Subject: [PATCH 061/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 84f48cab..5fec8752 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -212,7 +212,7 @@ storage: credentials: type: instancePrincipal ``` -Wait for few minutes for IAM policy propagation before testing the configuration. +Wait for a few minutes for IAM policy propagation before testing the configuration. ## Apply the PBM configuration From 3a571eafd820c4e23bc4ac84ccab3bbb9f99137f Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 11:38:34 +0530 Subject: [PATCH 062/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 5fec8752..6922f7a3 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -239,8 +239,8 @@ pbm backup Check that PBM created objects under the configured prefix: ```bash -oci os object list \ - --bucket-name \ +oci os object list \ + --bucket-name \ --prefix pbm/ ``` From 9306047ec749d8ab67a6f03754c14f1a50a83abe Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 11:54:27 +0530 Subject: [PATCH 063/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 6922f7a3..c26a9c4f 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -101,13 +101,15 @@ oci iam compartment create \ Export the compartment OCID: ```bash -export COMPARTMENT_OCID=$(oci iam compartment list \ - --region "$HOME_REGION" \ - --compartment-id "$TENANCY_OCID" \ - --compartment-id-in-subtree true \ - --all \ - --query "data[?name=='$COMPARTMENT_NAME' && \"lifecycle-state\"=='ACTIVE'].id | [0]" \ - --raw-output) +export COMPARTMENT_OCID=$( + oci iam compartment list \ + --region "$HOME_REGION" \ + --compartment-id "$TENANCY_OCID" \ + --compartment-id-in-subtree true \ + --all \ + --query "data[?name=='$COMPARTMENT_NAME' && \"lifecycle-state\"=='ACTIVE'].id | [0]" \ + --raw-output +) ``` ## Create an Object Storage bucket From 26df0f5053eb6cca8b2dbcef8adb34c9ee3c2255 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 11:54:57 +0530 Subject: [PATCH 064/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index c26a9c4f..4f01cbba 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -138,8 +138,7 @@ PBM must be able to create, read, overwrite, and delete backup objects. Create a policy that allows the PBM user group to manage objects in the bucket: -Allow group `` to manage object-family in compartment `` - + Allow group to manage object-family in compartment PBM also uses OCI native server-side copy operations. Add a policy for the regional Object Storage service: ```bash From 168ac45bb5925797e1fc12a8ef3a0114e6813c9c Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 11:56:36 +0530 Subject: [PATCH 065/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 4f01cbba..9168b0e7 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -61,8 +61,6 @@ export HOME_REGION= export BUCKET_REGION= export COMPARTMENT_NAME= export BUCKET_NAME= -export PBM_PREFIX=pbm -``` Get the `tenancy OCID`, user `OCID`, `API key fingerprint`, `private key path`, and `Object Storage namespace`: From fd77dbd40f64f08f8e2b8c598bafa4200fd35f10 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 12 Jun 2026 06:29:38 +0000 Subject: [PATCH 066/212] Add OCI storage page to docs navigation --- .cache/plugin/git-committers/page-authors.json | 1 + mkdocs-base.yml | 1 + 2 files changed, 2 insertions(+) create mode 100644 .cache/plugin/git-committers/page-authors.json diff --git a/.cache/plugin/git-committers/page-authors.json b/.cache/plugin/git-committers/page-authors.json new file mode 100644 index 00000000..ff6efed6 --- /dev/null +++ b/.cache/plugin/git-committers/page-authors.json @@ -0,0 +1 @@ +{"cache_date": "2026-06-12", "page_authors": {"docs/index.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/404.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/CODE_OF_CONDUCT.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/about-docs.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/copyright.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/get-help.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/installation.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/intro.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/pmm.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/system-requirements.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/trademark-policy.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/architecture.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/authentication.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/azure.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/cli.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/control-collections.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/deployments.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/endpoint-map.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/filesystem-storage.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/gcs.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/minio.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/oci-storage.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/oss.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/pbm-agent.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/s3-storage.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/storage-configuration.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/versions.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/workload-identity-auth.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/backup-sharding.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/backup-types.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/comparison.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/incremental-backup.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/known-limitations.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/logical.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/multi-storage.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/physical.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/point-in-time-recovery.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/restore-new-env.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/restore-remapping.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/selective-backup.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/snapshots.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/split-merge-backup.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/install/backup-storage.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/install/configure-authentication.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/install/docker.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/install/initial-setup.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/install/repos.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/install/secure-credentials-systemd.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/install/source.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/install/start-pbm-agent.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/install/tarball.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/manage/automate-s3-access.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/manage/change-nodes.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/manage/configure-remotely.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/manage/logpath.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/manage/overview.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/manage/start-agent-with-config.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/manage/uninstalling.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/manage/upgrading.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/reference/backup-options.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/reference/config.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/reference/configuration-options.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/reference/glossary.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/reference/logging-options.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/reference/pbm-agent-config-options.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/reference/pbm-commands.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/reference/pitr-options.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/reference/restore-options.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/0.5.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.0.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.1.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.1.1.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.1.3.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.2.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.2.1.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.3.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.3.1.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.3.2.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.3.3.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.3.4.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.4.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.4.1.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.5.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.6.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.6.1.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.7.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.8.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.8.1.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.0.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.0.1.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.0.2.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.0.3.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.0.4.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.0.5.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.1.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.10.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.11.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.12.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.13.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.14.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.2.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.2.1.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.3.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.3.1.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.4.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.4.1.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.5.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.6.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.7.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.8.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.9.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.9.1.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/troubleshoot/index.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/troubleshoot/faq.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/troubleshoot/pbm-pmm.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/troubleshoot/pbm-report.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/troubleshoot/restore-partial.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/troubleshoot/status.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/troubleshoot/troubleshooting.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/backup-external.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/backup-incremental.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/backup-physical.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/backup-priority.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/backup-selective.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/cancel-backup.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/compression.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/delete-backup.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/describe-backup.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/list-backup.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/logs.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/oplog-replay.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/pitr-physical.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/pitr-selective.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/pitr-tutorial.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/restore-external-agent-restart.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/restore-external.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/restore-incremental.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/restore-physical.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/restore-progress.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/restore-selective.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/restore.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/schedule-backup.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/start-backup.md": {"last_commit_date": "2026-06-12", "authors": []}}} \ No newline at end of file diff --git a/mkdocs-base.yml b/mkdocs-base.yml index b5fde611..efc238f5 100644 --- a/mkdocs-base.yml +++ b/mkdocs-base.yml @@ -246,6 +246,7 @@ nav: - details/gcs.md - Workload Identity authentication: details/workload-identity-auth.md - details/azure.md + - OCI Object Storage: details/oci-storage.md - details/oss.md - details/filesystem-storage.md - details/endpoint-map.md From 5b4d5487c57fbc149084f57a86b965f4d91dd0da Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 12:00:53 +0530 Subject: [PATCH 067/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 9168b0e7..44dedc0d 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -62,9 +62,7 @@ export BUCKET_REGION= export COMPARTMENT_NAME= export BUCKET_NAME= -Get the `tenancy OCID`, user `OCID`, `API key fingerprint`, `private key path`, and `Object Storage namespace`: - -```bash +# Get the `tenancy OCID`, user `OCID`, `API key fingerprint`, `private key path`, and `Object Storage namespace`: export TENANCY_OCID=$( oci iam tenancy get \ --tenancy-id "$(awk -F= '/^tenancy=/{print $2}' ~/.oci/config)" \ From 9be198f2760f466330f9bc45daaa24f4530f43cc Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 12:01:22 +0530 Subject: [PATCH 068/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 44dedc0d..37c0a3dd 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -132,9 +132,10 @@ oci os bucket get \ PBM must be able to create, read, overwrite, and delete backup objects. -Create a policy that allows the PBM user group to manage objects in the bucket: +Create a policy that allows the PBM user group to manage objects in the compartment: Allow group to manage object-family in compartment + PBM also uses OCI native server-side copy operations. Add a policy for the regional Object Storage service: ```bash From 996f477427b8aac53723a7e98a01aba67c20b7e7 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 12:01:45 +0530 Subject: [PATCH 069/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 37c0a3dd..c5f5aae5 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -238,6 +238,8 @@ Check that PBM created objects under the configured prefix: ```bash oci os object list \ + --region \ + --namespace-name \ --bucket-name \ --prefix pbm/ ``` From f52f73944c2f3e64f35b67c38d1c6b24b3d7f558 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 12 Jun 2026 06:30:44 +0000 Subject: [PATCH 070/212] Document OCI config options in reference docs --- docs/details/storage-configuration.md | 1 + docs/reference/configuration-options.md | 88 ++++++++++++++++++++++++- 2 files changed, 88 insertions(+), 1 deletion(-) diff --git a/docs/details/storage-configuration.md b/docs/details/storage-configuration.md index 5f49941f..d06bedab 100644 --- a/docs/details/storage-configuration.md +++ b/docs/details/storage-configuration.md @@ -17,6 +17,7 @@ Percona Backup for MongoDB supports the following storage types: * [MinIO and S3-compatible storage](minio.md) * [Filesystem server storage](filesystem-storage.md) * [Microsoft Azure Blob storage](azure.md) +* [Oracle Cloud Infrastructure Object Storage](oci-storage.md) * [Alibaba Cloud OSS storage](oss.md) ### Considerations for choosing a backup storage type for s3-compatible storages diff --git a/docs/reference/configuration-options.md b/docs/reference/configuration-options.md index 7a18330c..f8bef242 100644 --- a/docs/reference/configuration-options.md +++ b/docs/reference/configuration-options.md @@ -7,7 +7,7 @@ *Type*: string
*Required*: YES -Remote backup storage type. Supported values: `s3`, `minio`, `gcs`, `filesystem`, `azure`. +Remote backup storage type. Supported values: `s3`, `minio`, `gcs`, `filesystem`, `azure`, `oci`, `oss`. ## AWS S3 storage options @@ -679,6 +679,92 @@ The minimum time to wait before the next retry, specified as a `time.Duration`. The maximum time to wait before the next retry, specified as a `time.Duration`. Units like ms, s, etc., are supported. Defaults to nanoseconds if no unit is provided. +## OCI Object Storage options + +```yaml +storage: + type: oci + oci: + region: + namespace: + bucket: + prefix: + credentials: + type: userPrincipal + userPrincipal: + tenancy: + user: + fingerprint: + privateKey: | + -----BEGIN PRIVATE KEY----- + ... + -----END PRIVATE KEY----- +``` + +### storage.oci.region + +*Type*: string
+*Required*: YES + +The OCI region where your Object Storage bucket is located. + +### storage.oci.namespace + +*Type*: string
+*Required*: YES + +The Object Storage namespace for your OCI tenancy. + +### storage.oci.bucket + +*Type*: string
+*Required*: YES + +The name of the Object Storage bucket where PBM stores backups. + +### storage.oci.prefix + +*Type*: string
+*Required*: NO + +The path prefix in the bucket. If undefined, backups are stored in the bucket root. + +### storage.oci.credentials.type + +*Type*: string
+*Required*: NO
+*Default*: `userPrincipal` + +Authentication type for OCI access. Supported values: `userPrincipal`, `instancePrincipal`. + +### storage.oci.credentials.userPrincipal.tenancy + +*Type*: string
+*Required*: YES (when `storage.oci.credentials.type=userPrincipal`) + +The tenancy OCID for OCI API signing key authentication. + +### storage.oci.credentials.userPrincipal.user + +*Type*: string
+*Required*: YES (when `storage.oci.credentials.type=userPrincipal`) + +The user OCID for OCI API signing key authentication. + +### storage.oci.credentials.userPrincipal.fingerprint + +*Type*: string
+*Required*: YES (when `storage.oci.credentials.type=userPrincipal`) + +The fingerprint of the uploaded OCI API signing public key. + +### storage.oci.credentials.userPrincipal.privateKey + +*Type*: string
+*Required*: YES (when `storage.oci.credentials.type=userPrincipal`) + +The private key in PEM format that pairs with the uploaded OCI API signing public key. + ## Alibaba Cloud OSS storage options ```yaml From ece2f50ad75f9193b503fd68359e96a8852b3282 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 12:32:25 +0530 Subject: [PATCH 071/212] Update oci-storage.md --- docs/details/oci-storage.md | 222 +++++++++++++++++++++++++----------- 1 file changed, 153 insertions(+), 69 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index c5f5aae5..c5da97b9 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -1,29 +1,48 @@ # Oracle Cloud Infrastructure Object Storage -Percona Backup for MongoDB (PBM) supports [OCI Object Storage](https://docs.oracle.com/en-us/iaas/Content/Object/Concepts/objectstorageoverview.htm) as a remote backup destination through a dedicated OCI native driver, allowing you to store and manage MongoDB backups directly in OCI buckets. +Percona Backup for MongoDB (PBM) supports [OCI Object Storage] +(https://docs.oracle.com/en-us/iaas/Content/Object/Concepts/objectstorageoverview.htm) +as a remote backup destination through a dedicated OCI native +driver. PBM connects to OCI Object Storage using one of three +authentication types: + +|**Authentication type**| **Use when**| +|---------------------|-------------| +| `userPrincipal`|PBM runs anywhere; authenticates with OCI API signing keys| | +| `instancePrincipal`|PBM runs on an OCI Compute instance| | +| `okeWorkloadIdentity`|PBM runs inside an OKE enhanced cluster| -PBM connects to OCI Object Storage using the `userPrincipal` authentication type by default, which uses OCI API signing keys. For keyless authentication, PBM also supports `instancePrincipal` for PBM running on OCI Compute instances. ## Prerequisites Before configuring PBM, ensure that you have: -- An Oracle Cloud Infrastructure account -- An Object Storage bucket -- A user with access to the bucket -- An OCI API signing key pair (private key + uploaded public key) for the user -- Bucket permissions that allow reading and writing objects - +- An active OCI tenancy with at least one subscribed region +- The OCI CLI installed and configured (`oci setup config`). + See the [OCI CLI documentation](https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/cliinstall.htm) + for installation instructions +- An OCI user with permission to create compartments, buckets, + dynamic groups, and IAM policies in your tenancy +- An OCI API signing key pair: private key on the host running + PBM, public key uploaded to the OCI user -## Configure OCI CLI -Initialize the OCI CLI configuration: +Initialize the OCI CLI configuration if you have not done so already: ```sh oci setup config ``` -Use your tenancy home region as the default CLI region. +Use your tenancy home region as the default CLI region. If the setup generated a new API key, upload the public key +to your OCI user: + +```sh +cat ~/.oci/oci_api_key_public.pem +``` + +In the OCI Console, go to **User settings → Tokens and keys → +API keys → Add API key**, paste the public key, and confirm +the fingerprint matches `~/.oci/config`. If needed, update local file permissions: @@ -31,13 +50,6 @@ If needed, update local file permissions: oci setup repair-file-permissions --file ~/.oci/config oci setup repair-file-permissions --file ~/.oci/oci_api_key.pem ``` -If the setup generated a new API key, upload the public key to your OCI user: - -```bash -cat ~/.oci/oci_api_key_public.pem -``` - -In the OCI Console, go to **User settings → Tokens and keys → API keys → Add API key**, and paste the public key. ## Verify region access @@ -52,17 +64,22 @@ oci iam region-subscription list \ !!! note The region specified in the configuration must be enabled and subscribed to in your OCI tenancy. -## Get required OCI values +## Set up OCI resources -Export the values required for the PBM configuration: +### Export variables -```bash -export HOME_REGION= -export BUCKET_REGION= -export COMPARTMENT_NAME= -export BUCKET_NAME= +Set the following variables before running any commands in this +section. All subsequent commands reference them. + +```sh +export HOME_REGION= # e.g. us-ashburn-1 +export BUCKET_REGION= # e.g. eu-frankfurt-1 +export COMPARTMENT_NAME=pbm-backup +export BUCKET_NAME= +``` +Retrieve and export the values PBM requires: -# Get the `tenancy OCID`, user `OCID`, `API key fingerprint`, `private key path`, and `Object Storage namespace`: +```sh export TENANCY_OCID=$( oci iam tenancy get \ --tenancy-id "$(awk -F= '/^tenancy=/{print $2}' ~/.oci/config)" \ @@ -81,22 +98,31 @@ export NAMESPACE=$( --query 'data' \ --raw-output ) + +echo "TENANCY_OCID: $TENANCY_OCID" +echo "USER_OCID: $USER_OCID" +echo "FINGERPRINT: $FINGERPRINT" +echo "NAMESPACE: $NAMESPACE" ``` +Verify all five values are populated before continuing. An empty +value means the OCI CLI is not authenticated or the variable +was not set correctly. ## Create a compartment Create a compartment for PBM backup resources: -```bash +```sh oci iam compartment create \ --region "$HOME_REGION" \ --compartment-id "$TENANCY_OCID" \ --name "$COMPARTMENT_NAME" \ - --description "PBM OCI Object Storage" + --description "PBM OCI Object Storage backup" ``` -Export the compartment OCID: +Wait until the compartment is active, then export its OCID: -```bash + +```sh export COMPARTMENT_OCID=$( oci iam compartment list \ --region "$HOME_REGION" \ @@ -106,12 +132,15 @@ export COMPARTMENT_OCID=$( --query "data[?name=='$COMPARTMENT_NAME' && \"lifecycle-state\"=='ACTIVE'].id | [0]" \ --raw-output ) + +echo "COMPARTMENT_OCID: $COMPARTMENT_OCID" ``` -## Create an Object Storage bucket + +### Create an Object Storage bucket Create the bucket: -```bash +```sh oci os bucket create \ --region "$BUCKET_REGION" \ --namespace-name "$NAMESPACE" \ @@ -119,40 +148,75 @@ oci os bucket create \ --name "$BUCKET_NAME" ``` -Verify the bucket: +Verify the bucket was created: -```bash +```sh oci os bucket get \ --region "$BUCKET_REGION" \ --namespace-name "$NAMESPACE" \ - --bucket-name "$BUCKET_NAME" + --bucket-name "$BUCKET_NAME" \ + --query 'data.{name:name,namespace:namespace}' \ + --output table ``` -## Configure IAM policies +### Create IAM policies PBM must be able to create, read, overwrite, and delete backup objects. -Create a policy that allows the PBM user group to manage objects in the compartment: +Two policies are required: - Allow group to manage object-family in compartment +**User access policy** — grants your OCI user group permission +to manage objects in the PBM compartment. Replace +`` with the name of the group containing +your PBM user: -PBM also uses OCI native server-side copy operations. Add a policy for the regional Object Storage service: +```sh +oci iam policy create \ + --region "$HOME_REGION" \ + --compartment-id "$TENANCY_OCID" \ + --name pbm-user-access \ + --description "Allow PBM user group to manage backup objects" \ + --statements '["Allow group to manage object-family in compartment pbm-backup"]' +``` -```bash -Allow service objectstorage- to manage object-family in compartment where any { - request.permission='OBJECT_READ', - request.permission='OBJECT_INSPECT', - request.permission='OBJECT_CREATE', - request.permission='OBJECT_OVERWRITE', - request.permission='OBJECT_DELETE' -} +**Native copy policy** — grants the OCI Object Storage service +permission to copy objects internally. PBM requires this for +server-side copy operations: + +```sh +oci iam policy create \ + --region "$HOME_REGION" \ + --compartment-id "$TENANCY_OCID" \ + --name "pbm-native-copy-$BUCKET_REGION" \ + --description "Allow Object Storage service to copy PBM objects" \ + --statements "[\"Allow service objectstorage-$BUCKET_REGION to manage object-family \ + in compartment $COMPARTMENT_NAME where any { \ + request.permission='OBJECT_READ', \ + request.permission='OBJECT_INSPECT', \ + request.permission='OBJECT_CREATE', \ + request.permission='OBJECT_OVERWRITE', \ + request.permission='OBJECT_DELETE'}\"]" ``` -Allow a few minutes for IAM policy changes to propagate. +!!! note + IAM policy changes can take up to 2 minutes to propagate. + If PBM reports an authorization error immediately after + creating the policies, wait 2 minutes and retry. + +## Configure PBM + +### userPrincipal -## Configure PBM with a user principal +Use this when PBM runs outside OCI, or when you want to +authenticate with OCI API signing keys. -Use user principal authentication when PBM runs outside OCI or when you want to authenticate with OCI API signing keys. +Generate the correctly indented private key before creating +the config file: + +```sh +sed 's/^/ /' "$KEY_FILE" +``` +Create the configuration file: ```yaml storage: @@ -173,6 +237,10 @@ storage: ... -----END PRIVATE KEY----- ``` +!!! warning + The `user` value must be a user OCID starting with + `ocid1.user.oc1`. A bucket or compartment OCID causes + a 401 authentication failure. !!! tip Indent the private key correctly before adding it to the configuration: @@ -181,23 +249,34 @@ storage: sed 's/^/ /' "$KEY_FILE" ``` -## Configure PBM with an instance principal +### instancePrincipal -Use instance principal authentication when PBM runs on an OCI Compute instance. This method avoids storing API signing keys in the PBM configuration. +Use this when PBM runs on an OCI Compute instance. No API +keys are required in the configuration file. -Create a dynamic group that includes the compute instance: +1. Create a dynamic group that includes the compute instance: ```sh -ANY {instance.id = ''} + oci iam dynamic-group create \ + --region "$HOME_REGION" \ + --compartment-id "$TENANCY_OCID" \ + --name pbm-instance-group \ + --description "PBM Compute instance principal" \ + --matching-rule "ANY {instance.id = ''}" ``` - -Create a policy that allows the dynamic group to access the bucket: +2. Create a policy granting the dynamic group access to the bucket: ```sh -Allow dynamic-group to manage objects in compartment where target.bucket.name = '' + oci iam policy create \ + --region "$HOME_REGION" \ + --compartment-id "$TENANCY_OCID" \ + --name pbm-instance-policy \ + --description "Allow PBM instance to access backup bucket" \ + --statements '["Allow dynamic-group pbm-instance-group to manage objects \ + in compartment pbm-backup where target.bucket.name = '"'"''"'"'"]' ``` -Then configure PBM: +3. Configure PBM: ```yaml storage: @@ -212,6 +291,13 @@ storage: ``` Wait for a few minutes for IAM policy propagation before testing the configuration. + +!!! note + IAM changes for dynamic groups can take 5 to 10 minutes + to propagate. The native copy policy from the previous + section is still required alongside the instance + principal policy. + ## Apply the PBM configuration Apply the configuration: @@ -228,20 +314,18 @@ pbm config --force-resync ## Verify the configuration -Run a backup: +Verify all agents connected and storage initialized successfully: -```bash -pbm backup +```sh +pbm status ``` +Every node must show `pbm-agent` as `OK` and storage as `ok`. -Check that PBM created objects under the configured prefix: +Run a test backup to confirm end-to-end functionality: -```bash -oci os object list \ - --region \ - --namespace-name \ - --bucket-name \ - --prefix pbm/ +```sh +pbm backup +pbm list ``` -You should see backup metadata and backup files stored under the configured prefix. \ No newline at end of file +A backup with status `done` confirms the setup is complete. From 373ceeb5486dd12256650b7930f4429f633d92d9 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 12:42:33 +0530 Subject: [PATCH 072/212] added example --- docs/details/oci-storage.md | 53 +++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index c5da97b9..e605cfde 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -319,6 +319,42 @@ Verify all agents connected and storage initialized successfully: ```sh pbm status ``` + +??? example "Output" + + ```sh + $ pbm status + Cluster: + ======== + rs1: + - rs101:27017 [S]: pbm-agent [v2.15.0] OK + - rs102:27017 [S]: pbm-agent [v2.15.0] OK + - rs103:27017 [P]: pbm-agent [v2.15.0] OK + + PITR incremental backup: + ======================== + Status [OFF] + + Currently running: + ================== + (none) + + Backups: + ======== + Main storage: + Type: OCI + Region: us-ashburn-1 + Path: oci://idvufsl0apl6/rasika-bucket/pbm + Snapshots: + NAME SIZE TYPE PROFILE SEL BASE RESTORE TIME STATUS + ------------------------------------------------------------------------------------------------------------------ + 2026-06-11T13:14:51Z 435.75KB logical no no 2026-06-11T13:15:07 done + [user@b0157cd96911 pbm]$ pbm backup + Starting backup "2026-06-12T07:04:27Z"...... + Backup "2026-06-12T07:04:27Z" saved to remote store (path: "oci://idvufsl0apl6/rasika-bucket/pbm") + ``` + + Every node must show `pbm-agent` as `OK` and storage as `ok`. Run a test backup to confirm end-to-end functionality: @@ -328,4 +364,21 @@ pbm backup pbm list ``` +??? example "Output" + + ```sh + $ pbm list + Backup snapshots: + NAME TYPE PROFILE SELECTIVE BASE RESTORE TIME + ----------------------------------------------------------------------------------------------------- + 2026-06-11T13:14:51Z logical no no 2026-06-11T13:15:07 + 2026-06-12T07:04:27Z logical no no 2026-06-12T07:04:42 + ``` + + ```sh + $ pbm backup + Starting backup "2026-06-12T07:11:31Z"..... + Backup "2026-06-12T07:11:31Z" saved to remote store (path: "oci://idvufsl0apl6/rasika-bucket/pbm") + ``` + A backup with status `done` confirms the setup is complete. From 6a6c63db1eb496da32105a62b64e884da44c9927 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 12:44:46 +0530 Subject: [PATCH 073/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index e605cfde..69f61fd5 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -6,11 +6,11 @@ as a remote backup destination through a dedicated OCI native driver. PBM connects to OCI Object Storage using one of three authentication types: -|**Authentication type**| **Use when**| -|---------------------|-------------| -| `userPrincipal`|PBM runs anywhere; authenticates with OCI API signing keys| | -| `instancePrincipal`|PBM runs on an OCI Compute instance| | -| `okeWorkloadIdentity`|PBM runs inside an OKE enhanced cluster| +| **Authentication type** | **Use when** | +| --- | --- | +| `userPrincipal` | PBM runs anywhere; authenticates with OCI API signing keys | +| `instancePrincipal` | PBM runs on an OCI Compute instance | +| `okeWorkloadIdentity` | PBM runs inside an OKE enhanced cluster | ## Prerequisites From e503805eeed2b8e2987f49d74c81aeccbb966fc2 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 12:45:52 +0530 Subject: [PATCH 074/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 69f61fd5..7beae2a2 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -1,7 +1,6 @@ # Oracle Cloud Infrastructure Object Storage -Percona Backup for MongoDB (PBM) supports [OCI Object Storage] -(https://docs.oracle.com/en-us/iaas/Content/Object/Concepts/objectstorageoverview.htm) +Percona Backup for MongoDB (PBM) supports [OCI Object Storage](https://docs.oracle.com/en-us/iaas/Content/Object/Concepts/objectstorageoverview.htm) as a remote backup destination through a dedicated OCI native driver. PBM connects to OCI Object Storage using one of three authentication types: From 897a91eb2f1b6fe1dd7723a020d67e5cb0d8179b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 12 Jun 2026 07:18:41 +0000 Subject: [PATCH 075/212] Remove generated git-committers cache artifact --- .cache/plugin/git-committers/page-authors.json | 1 - .gitignore | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) delete mode 100644 .cache/plugin/git-committers/page-authors.json diff --git a/.cache/plugin/git-committers/page-authors.json b/.cache/plugin/git-committers/page-authors.json deleted file mode 100644 index ff6efed6..00000000 --- a/.cache/plugin/git-committers/page-authors.json +++ /dev/null @@ -1 +0,0 @@ -{"cache_date": "2026-06-12", "page_authors": {"docs/index.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/404.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/CODE_OF_CONDUCT.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/about-docs.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/copyright.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/get-help.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/installation.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/intro.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/pmm.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/system-requirements.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/trademark-policy.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/architecture.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/authentication.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/azure.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/cli.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/control-collections.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/deployments.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/endpoint-map.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/filesystem-storage.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/gcs.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/minio.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/oci-storage.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/oss.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/pbm-agent.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/s3-storage.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/storage-configuration.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/versions.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/details/workload-identity-auth.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/backup-sharding.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/backup-types.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/comparison.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/incremental-backup.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/known-limitations.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/logical.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/multi-storage.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/physical.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/point-in-time-recovery.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/restore-new-env.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/restore-remapping.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/selective-backup.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/snapshots.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/features/split-merge-backup.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/install/backup-storage.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/install/configure-authentication.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/install/docker.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/install/initial-setup.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/install/repos.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/install/secure-credentials-systemd.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/install/source.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/install/start-pbm-agent.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/install/tarball.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/manage/automate-s3-access.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/manage/change-nodes.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/manage/configure-remotely.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/manage/logpath.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/manage/overview.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/manage/start-agent-with-config.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/manage/uninstalling.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/manage/upgrading.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/reference/backup-options.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/reference/config.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/reference/configuration-options.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/reference/glossary.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/reference/logging-options.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/reference/pbm-agent-config-options.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/reference/pbm-commands.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/reference/pitr-options.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/reference/restore-options.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/0.5.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.0.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.1.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.1.1.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.1.3.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.2.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.2.1.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.3.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.3.1.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.3.2.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.3.3.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.3.4.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.4.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.4.1.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.5.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.6.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.6.1.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.7.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.8.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/1.8.1.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.0.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.0.1.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.0.2.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.0.3.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.0.4.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.0.5.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.1.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.10.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.11.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.12.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.13.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.14.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.2.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.2.1.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.3.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.3.1.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.4.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.4.1.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.5.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.6.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.7.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.8.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.9.0.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/release-notes/2.9.1.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/troubleshoot/index.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/troubleshoot/faq.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/troubleshoot/pbm-pmm.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/troubleshoot/pbm-report.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/troubleshoot/restore-partial.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/troubleshoot/status.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/troubleshoot/troubleshooting.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/backup-external.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/backup-incremental.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/backup-physical.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/backup-priority.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/backup-selective.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/cancel-backup.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/compression.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/delete-backup.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/describe-backup.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/list-backup.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/logs.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/oplog-replay.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/pitr-physical.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/pitr-selective.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/pitr-tutorial.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/restore-external-agent-restart.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/restore-external.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/restore-incremental.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/restore-physical.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/restore-progress.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/restore-selective.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/restore.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/schedule-backup.md": {"last_commit_date": "2026-06-12", "authors": []}, "docs/usage/start-backup.md": {"last_commit_date": "2026-06-12", "authors": []}}} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 4da6fc20..3cb6b65e 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,6 @@ styles/ # Allow !styles/config/vocabularies/Percona/** + +# Generated plugin cache +.cache/plugin/git-committers/ From 4fdda27a05ab9954002f21674cc694fde6fb8f48 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 12:49:40 +0530 Subject: [PATCH 076/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 7beae2a2..38f38b52 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -9,7 +9,6 @@ authentication types: | --- | --- | | `userPrincipal` | PBM runs anywhere; authenticates with OCI API signing keys | | `instancePrincipal` | PBM runs on an OCI Compute instance | -| `okeWorkloadIdentity` | PBM runs inside an OKE enhanced cluster | ## Prerequisites From 7faa675ffadbee4ae85c07202539642781231187 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 12 Jun 2026 07:19:20 +0000 Subject: [PATCH 077/212] Align OCI auth list with documented methods --- docs/details/oci-storage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 38f38b52..faa71711 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -2,7 +2,7 @@ Percona Backup for MongoDB (PBM) supports [OCI Object Storage](https://docs.oracle.com/en-us/iaas/Content/Object/Concepts/objectstorageoverview.htm) as a remote backup destination through a dedicated OCI native -driver. PBM connects to OCI Object Storage using one of three +driver. PBM connects to OCI Object Storage using one of two authentication types: | **Authentication type** | **Use when** | From 125e38c2bdfa586dd0c51bd68c420876e590ffa5 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 12:52:25 +0530 Subject: [PATCH 078/212] Update oci-storage.md --- docs/details/oci-storage.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index faa71711..4d1beac8 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -352,7 +352,6 @@ pbm status Backup "2026-06-12T07:04:27Z" saved to remote store (path: "oci://idvufsl0apl6/rasika-bucket/pbm") ``` - Every node must show `pbm-agent` as `OK` and storage as `ok`. Run a test backup to confirm end-to-end functionality: From 19b7fe5d26dbbf0b7d90aff0c8adb7e46420a737 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 12:53:31 +0530 Subject: [PATCH 079/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 4d1beac8..62a1ab9e 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -100,6 +100,7 @@ export NAMESPACE=$( echo "TENANCY_OCID: $TENANCY_OCID" echo "USER_OCID: $USER_OCID" echo "FINGERPRINT: $FINGERPRINT" +echo "KEY_FILE: $KEY_FILE" echo "NAMESPACE: $NAMESPACE" ``` Verify all five values are populated before continuing. An empty From 25cebef4339c06177e6f83784f501cbca1f51cc9 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 12:53:55 +0530 Subject: [PATCH 080/212] Update oci-storage.md --- docs/details/oci-storage.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 4d1beac8..3216baa1 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -10,7 +10,6 @@ authentication types: | `userPrincipal` | PBM runs anywhere; authenticates with OCI API signing keys | | `instancePrincipal` | PBM runs on an OCI Compute instance | - ## Prerequisites Before configuring PBM, ensure that you have: From ea2d70b108f1fe5bd301c09a65dac40c15cb254f Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 14:55:52 +0530 Subject: [PATCH 081/212] Create oci-WIF.md --- docs/details/oci-WIF.md | 170 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 docs/details/oci-WIF.md diff --git a/docs/details/oci-WIF.md b/docs/details/oci-WIF.md new file mode 100644 index 00000000..7bd6b835 --- /dev/null +++ b/docs/details/oci-WIF.md @@ -0,0 +1,170 @@ +# Oracle Cloud Infrastructure (OCI) Object Storage with Workload Identity Authentication + +Percona Backup for MongoDB (PBM) supports Workload Identity authentication for Oracle Cloud Infrastructure (OCI) Object Storage. With Workload Identity, PBM can access OCI resources without storing or managing API keys, reducing operational overhead and improving security. + +Percona Backup for MongoDB (PBM) supports two Workload Identity authentication types for OCI Object Storage, in addition to the default `userPrincipal`: + +| Auth type | When to use | +|---|---| +|`userPrincipal`|PBM is running anywhere — on-premises, on other clouds, or on OCI| +| `instancePrincipal`| PBM is running on a virtual machine inside OCI | +| `okeWorkloadIdentity`| PBM is running inside an OKE enhanced cluster| + +## userPrincipal + +Choose `userPrincipal` when PBM runs outside OCI, or when you want a single authentication approach that works in any environment. PBM authenticates using an OCI user account and an API signing key. + +### Before you begin + +You need: + +- An OCI user account with access to the target bucket +- An [API signing key pair :octicons-link-external-16:](https://docs.oracle.com/en-us/iaas/Content/API/Concepts/apisigningkey.htm){:target="_blank"} (private key file and its fingerprint) +- The [Oracle Cloud Identifier (OCID) :octicons-link-external-16:](https://docs.oracle.com/en-us/iaas/Content/General/Concepts/identifiers.htm#Oracle){:target="_blank"} of the user and tenancy +- The name of the OCI bucket PBM will use for backups + +### Procedure + +1. Create an IAM policy + Grant the user permission to manage objects in the target bucket: + ```sh + oci iam policy create \ + --region "$HOME_REGION" \ + --compartment-id "$TENANCY_OCID" \ + --name "$USER_POLICY_NAME" \ + --description "Allow PBM user to access $BUCKET_NAME" \ + --statements "[\"Allow group $USER_GROUP_NAME to manage objects in compartment $COMPARTMENT_NAME where target.bucket.name = '$BUCKET_NAME'\"]" + ``` + +Replace the following variables: + +| Variable | Description | +|---|---| +| `HOME_REGION` | Your tenancy's home region (e.g. `us-ashburn-1`) | +| `TENANCY_OCID` | OCID of your OCI tenancy | +| `USER_POLICY_NAME` | A name for the policy (e.g. `pbm-user-policy`) | +| `USER_GROUP_NAME` | The IAM group the PBM user belongs to | +| `COMPARTMENT_NAME` | Name of the compartment containing the bucket | +| `BUCKET_NAME` | Name of the OCI Object Storage bucket | + +2. Configure PBM authentication + + In your PBM configuration, set the storage type to `oci` and the credentials type to `userPrincipal`. Provide the path to the private key file and its passphrase if one was set during key generation. + + ```yaml + storage: + type: oci + oci: + region: + namespace: + bucket: + prefix: + credentials: + type: userPrincipal + userPrincipal: + tenancy: + user: + fingerprint: + key: + passphrase: + ``` + +## instancePrincipal + +Choose `instancePrincipal` when PBM runs directly on an OCI Compute instance. PBM automatically obtains OCI credentials from the instance, eliminating the need for credential files or API keys. + +### Before you begin + +You need: + +- The [Oracle Cloud Identifier (OCID) :octicons-link-external-16:](https://docs.oracle.com/en-us/iaas/Content/General/Concepts/identifiers.htm#Oracle){:target="_blank"} of the OCI Compute instance running PBM +- The name of the OCI bucket PBM will use for backups. + +### Procedure + +Follow these steps to set up OCI using **`instancePrincipal`:** + +1. **Create a dynamic group for the instance** + + OCI IAM policies cannot target individual instances directly. You must first add the instance to a dynamic group, then write a policy against that group. + + ```sh + oci iam dynamic-group create \ + --region "$HOME_REGION" \ + --compartment-id "$TENANCY_OCID" \ + --name "$INSTANCE_DYNAMIC_GROUP_NAME" \ + --description "PBM VM instance principal" \ + --matching-rule "ANY {instance.id = '$INSTANCE_OCID'}" + ``` + + Replace the following variables: + + | Variable | Description | + |---|---| + | `HOME_REGION` | Your tenancy's home region (e.g. `us-ashburn-1`) | + | `TENANCY_OCID` | OCID of your OCI tenancy | + | `INSTANCE_DYNAMIC_GROUP_NAME` | A name for the dynamic group (e.g. `pbm-vm-group`) | + | `INSTANCE_OCID` | OCID of the Compute instance running PBM | + +2. **Create an IAM policy** + + Grant the dynamic group permission to manage objects in the target bucket: + + ```sh + export INSTANCE_POLICY_STATEMENT="Allow dynamic-group $INSTANCE_DYNAMIC_GROUP_NAME \ + to manage objects in compartment $COMPARTMENT_NAME \ + where target.bucket.name = '$BUCKET_NAME'" + + oci iam policy create \ + --region "$HOME_REGION" \ + --compartment-id "$TENANCY_OCID" \ + --name "$INSTANCE_POLICY_NAME" \ + --description "Allow PBM VM instance principal to access $BUCKET_NAME" \ + --statements "[\"$INSTANCE_POLICY_STATEMENT\"]" + ``` + + Replace the following additional variables: + + | Variable | Description | + |---|---| + | `COMPARTMENT_NAME` | Name of the compartment containing the bucket | + | `BUCKET_NAME` | Name of the OCI Object Storage bucket | + | `INSTANCE_POLICY_NAME` | A name for the policy (e.g. `pbm-vm-policy`) | + +3. **Configure PBM authentication** + + In your PBM configuration, set the storage type to `oci` and the credentials type to `instancePrincipal`. No key file or passphrase is needed. + + ```yaml + storage: + type: oci + oci: + region: + namespace: + bucket: + prefix: + credentials: + type: instancePrincipal + ``` + +## okeWorkloadIdentity + +Choose `okeWorkloadIdentity` when PBM runs as a workload in an Oracle Kubernetes Engine (OKE) enhanced cluster. The Kubernetes service account token is exchanged for OCI credentials automatically by the OKE Workload Identity service. + +!!! note + Your OKE cluster must be an **enhanced cluster** with Workload Identity enabled. Basic clusters do not support this feature. + +In your PBM configuration, set the storage type to `oci` and the credentials type to `okeWorkloadIdentity`: + +```yaml +storage: + type: oci + oci: + region: + namespace: + bucket: + prefix: + credentials: + type: okeWorkloadIdentity +``` +For setup instructions, see [Configure OKE Workload Identity for workloads :octicons-link-external-16:](https://docs.oracle.com/en-us/iaas/Content/ContEng/Tasks/contenggrantingworkloadaccesstoresources.htm){:target="_blank"}. \ No newline at end of file From 493dd3b6bfaaa8126dc46f120420a3558bd6cd96 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 14:56:43 +0530 Subject: [PATCH 082/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index f53a6821..08989ba1 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -88,7 +88,7 @@ export TENANCY_OCID=$( export USER_OCID=$(awk -F= '/^user=/{print $2}' ~/.oci/config) export FINGERPRINT=$(awk -F= '/^fingerprint=/{print $2}' ~/.oci/config) export KEY_FILE=$(awk -F= '/^key_file=/{print $2}' ~/.oci/config) - +export KEY_FILE="${KEY_FILE/#\~/$HOME}" export NAMESPACE=$( oci os ns get \ --region "$BUCKET_REGION" \ From 9c958745884c27fda425f94761897c3368eb3879 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 14:57:00 +0530 Subject: [PATCH 083/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 08989ba1..9a684553 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -276,18 +276,19 @@ keys are required in the configuration file. 3. Configure PBM: -```yaml -storage: - type: oci - oci: - region: - namespace: - bucket: - prefix: pbm - credentials: - type: instancePrincipal -``` -Wait for a few minutes for IAM policy propagation before testing the configuration. + ```yaml + storage: + type: oci + oci: + region: + namespace: + bucket: + prefix: pbm + credentials: + type: instancePrincipal + ``` + + Wait for a few minutes for IAM policy propagation before testing the configuration. !!! note From f6b89f62e21a0bbeda765ae32778efedf4fd1f4c Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 14:57:18 +0530 Subject: [PATCH 084/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 9a684553..68b29e05 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -254,25 +254,26 @@ keys are required in the configuration file. 1. Create a dynamic group that includes the compute instance: -```sh - oci iam dynamic-group create \ - --region "$HOME_REGION" \ - --compartment-id "$TENANCY_OCID" \ - --name pbm-instance-group \ - --description "PBM Compute instance principal" \ - --matching-rule "ANY {instance.id = ''}" -``` + ```sh + oci iam dynamic-group create \ + --region "$HOME_REGION" \ + --compartment-id "$TENANCY_OCID" \ + --name pbm-instance-group \ + --description "PBM Compute instance principal" \ + --matching-rule "ANY {instance.id = ''}" + ``` + 2. Create a policy granting the dynamic group access to the bucket: -```sh - oci iam policy create \ - --region "$HOME_REGION" \ - --compartment-id "$TENANCY_OCID" \ - --name pbm-instance-policy \ - --description "Allow PBM instance to access backup bucket" \ - --statements '["Allow dynamic-group pbm-instance-group to manage objects \ - in compartment pbm-backup where target.bucket.name = '"'"''"'"'"]' -``` + ```sh + oci iam policy create \ + --region "$HOME_REGION" \ + --compartment-id "$TENANCY_OCID" \ + --name pbm-instance-policy \ + --description "Allow PBM instance to access backup bucket" \ + --statements "[\"Allow dynamic-group pbm-instance-group to manage objects \ + in compartment pbm-backup where target.bucket.name = ''\"]" + ``` 3. Configure PBM: From c9e33701735b572fb7eae2a654e013a569d1e2ce Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 15:00:45 +0530 Subject: [PATCH 085/212] Added OCI with WIF section --- mkdocs-base.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mkdocs-base.yml b/mkdocs-base.yml index efc238f5..aa4e3717 100644 --- a/mkdocs-base.yml +++ b/mkdocs-base.yml @@ -242,11 +242,12 @@ nav: - Storage: - Remote backup storage overview: details/storage-configuration.md - AWS S3 storage: details/s3-storage.md + - Oracle Cloud Storage: details/oci-storage.md + - OCI with Workload Identity Authentication: /details/oci-WIF.md - details/minio.md - details/gcs.md - Workload Identity authentication: details/workload-identity-auth.md - details/azure.md - - OCI Object Storage: details/oci-storage.md - details/oss.md - details/filesystem-storage.md - details/endpoint-map.md From 919ba1cd4f2fe56f162e570fe5efa744d6dabc6b Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 15:02:12 +0530 Subject: [PATCH 086/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 68b29e05..d710aaed 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -174,7 +174,7 @@ oci iam policy create \ --compartment-id "$TENANCY_OCID" \ --name pbm-user-access \ --description "Allow PBM user group to manage backup objects" \ - --statements '["Allow group to manage object-family in compartment pbm-backup"]' + --statements "[\"Allow group to manage object-family in compartment $COMPARTMENT_NAME\"]" ``` **Native copy policy** — grants the OCI Object Storage service From c174fdf79a6740e96eeb2a0cf57e1d9a37172de4 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 15:02:49 +0530 Subject: [PATCH 087/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-WIF.md | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/docs/details/oci-WIF.md b/docs/details/oci-WIF.md index 7bd6b835..cd135cc3 100644 --- a/docs/details/oci-WIF.md +++ b/docs/details/oci-WIF.md @@ -49,24 +49,26 @@ Replace the following variables: 2. Configure PBM authentication - In your PBM configuration, set the storage type to `oci` and the credentials type to `userPrincipal`. Provide the path to the private key file and its passphrase if one was set during key generation. + In your PBM configuration, set the storage type to `oci` and the credentials type to `userPrincipal`. Provide the API signing key private key in PEM format. ```yaml storage: - type: oci - oci: - region: - namespace: - bucket: - prefix: - credentials: - type: userPrincipal - userPrincipal: - tenancy: - user: - fingerprint: - key: - passphrase: + type: oci + oci: + region: + namespace: + bucket: + prefix: + credentials: + type: userPrincipal + userPrincipal: + tenancy: + user: + fingerprint: + privateKey: | + -----BEGIN PRIVATE KEY----- + ... + -----END PRIVATE KEY----- ``` ## instancePrincipal From d051e2a099f95582d80dac387d43bceb347fd482 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 12 Jun 2026 09:34:16 +0000 Subject: [PATCH 088/212] docs: include okeWorkloadIdentity in OCI credentials type options --- docs/reference/configuration-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/configuration-options.md b/docs/reference/configuration-options.md index f8bef242..761e98c3 100644 --- a/docs/reference/configuration-options.md +++ b/docs/reference/configuration-options.md @@ -735,7 +735,7 @@ The path prefix in the bucket. If undefined, backups are stored in the bucket ro *Required*: NO
*Default*: `userPrincipal` -Authentication type for OCI access. Supported values: `userPrincipal`, `instancePrincipal`. +Authentication type for OCI access. Supported values: `userPrincipal`, `instancePrincipal`, `okeWorkloadIdentity`. ### storage.oci.credentials.userPrincipal.tenancy From 799a81d4073e40ae3f22d78715216a89460489fd Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 12 Jun 2026 09:36:20 +0000 Subject: [PATCH 089/212] Rename OCI WIF doc filename to lowercase --- docs/details/{oci-WIF.md => oci-wif.md} | 0 mkdocs-base.yml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename docs/details/{oci-WIF.md => oci-wif.md} (100%) diff --git a/docs/details/oci-WIF.md b/docs/details/oci-wif.md similarity index 100% rename from docs/details/oci-WIF.md rename to docs/details/oci-wif.md diff --git a/mkdocs-base.yml b/mkdocs-base.yml index aa4e3717..6dfffdbf 100644 --- a/mkdocs-base.yml +++ b/mkdocs-base.yml @@ -243,7 +243,7 @@ nav: - Remote backup storage overview: details/storage-configuration.md - AWS S3 storage: details/s3-storage.md - Oracle Cloud Storage: details/oci-storage.md - - OCI with Workload Identity Authentication: /details/oci-WIF.md + - OCI with Workload Identity Authentication: /details/oci-wif.md - details/minio.md - details/gcs.md - Workload Identity authentication: details/workload-identity-auth.md From 61a506592879dcdd40c29a71ba634842e3726c01 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 15:06:51 +0530 Subject: [PATCH 090/212] Update mkdocs-base.yml --- mkdocs-base.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs-base.yml b/mkdocs-base.yml index aa4e3717..6dfffdbf 100644 --- a/mkdocs-base.yml +++ b/mkdocs-base.yml @@ -243,7 +243,7 @@ nav: - Remote backup storage overview: details/storage-configuration.md - AWS S3 storage: details/s3-storage.md - Oracle Cloud Storage: details/oci-storage.md - - OCI with Workload Identity Authentication: /details/oci-WIF.md + - OCI with Workload Identity Authentication: /details/oci-wif.md - details/minio.md - details/gcs.md - Workload Identity authentication: details/workload-identity-auth.md From 33a709f5c52250bcf9428e689cd26d297dc9c74f Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 15:10:22 +0530 Subject: [PATCH 091/212] Update oci-storage.md --- docs/details/oci-storage.md | 41 +++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index d710aaed..52bd8bec 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -119,7 +119,6 @@ oci iam compartment create \ ``` Wait until the compartment is active, then export its OCID: - ```sh export COMPARTMENT_OCID=$( oci iam compartment list \ @@ -254,26 +253,26 @@ keys are required in the configuration file. 1. Create a dynamic group that includes the compute instance: - ```sh - oci iam dynamic-group create \ - --region "$HOME_REGION" \ - --compartment-id "$TENANCY_OCID" \ - --name pbm-instance-group \ - --description "PBM Compute instance principal" \ - --matching-rule "ANY {instance.id = ''}" - ``` + ```sh + oci iam dynamic-group create \ + --region "$HOME_REGION" \ + --compartment-id "$TENANCY_OCID" \ + --name pbm-instance-group \ + --description "PBM Compute instance principal" \ + --matching-rule "ANY {instance.id = ''}" + ``` 2. Create a policy granting the dynamic group access to the bucket: - ```sh - oci iam policy create \ - --region "$HOME_REGION" \ - --compartment-id "$TENANCY_OCID" \ - --name pbm-instance-policy \ - --description "Allow PBM instance to access backup bucket" \ - --statements "[\"Allow dynamic-group pbm-instance-group to manage objects \ - in compartment pbm-backup where target.bucket.name = ''\"]" - ``` + ```sh + oci iam policy create \ + --region "$HOME_REGION" \ + --compartment-id "$TENANCY_OCID" \ + --name pbm-instance-policy \ + --description "Allow PBM instance to access backup bucket" \ + --statements "[\"Allow dynamic-group pbm-instance-group to manage objects \ + in compartment pbm-backup where target.bucket.name = ''\"]" + ``` 3. Configure PBM: @@ -292,10 +291,8 @@ keys are required in the configuration file. Wait for a few minutes for IAM policy propagation before testing the configuration. -!!! note - IAM changes for dynamic groups can take 5 to 10 minutes - to propagate. The native copy policy from the previous - section is still required alongside the instance + !!! note + IAM changes for dynamic groups can take 5 to 10 minutes to propagate. The native copy policy from the previous section is still required alongside the instance principal policy. ## Apply the PBM configuration From a054489e4cd8786122b1993ef8a4f10bf98b39bc Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 15:18:05 +0530 Subject: [PATCH 092/212] Update oci-storage.md --- docs/details/oci-storage.md | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 52bd8bec..0bcfc3bc 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -342,13 +342,7 @@ pbm status Type: OCI Region: us-ashburn-1 Path: oci://idvufsl0apl6/rasika-bucket/pbm - Snapshots: - NAME SIZE TYPE PROFILE SEL BASE RESTORE TIME STATUS - ------------------------------------------------------------------------------------------------------------------ - 2026-06-11T13:14:51Z 435.75KB logical no no 2026-06-11T13:15:07 done - [user@b0157cd96911 pbm]$ pbm backup - Starting backup "2026-06-12T07:04:27Z"...... - Backup "2026-06-12T07:04:27Z" saved to remote store (path: "oci://idvufsl0apl6/rasika-bucket/pbm") + (no snapshots or PITR chunks) ``` Every node must show `pbm-agent` as `OK` and storage as `ok`. @@ -363,18 +357,21 @@ pbm list ??? example "Output" ```sh - $ pbm list - Backup snapshots: - NAME TYPE PROFILE SELECTIVE BASE RESTORE TIME - ----------------------------------------------------------------------------------------------------- - 2026-06-11T13:14:51Z logical no no 2026-06-11T13:15:07 - 2026-06-12T07:04:27Z logical no no 2026-06-12T07:04:42 + $ pbm backup + Starting backup "2026-06-12T07:11:31Z"..... + Backup "2026-06-12T07:11:31Z" saved to remote store (path: "oci://idvufsl0apl6/rasika-bucket/pbm") ``` ```sh - $ pbm backup - Starting backup "2026-06-12T07:11:31Z"..... - Backup "2026-06-12T07:11:31Z" saved to remote store (path: "oci://idvufsl0apl6/rasika-bucket/pbm") + $ pbm list + Backup snapshots: + NAME TYPE PROFILE SELECTIVE BASE RESTORE TIME + ----------------------------------------------------------------------------------------------------- + 2026-06-11T13:14:51Z logical no no 2026-06-11T13:15:07 + 2026-06-12T07:04:27Z logical no no 2026-06-12T07:04:42 + 2026-06-12T07:11:31Z logical no no 2026-06-12T07:11:46 + +PITR : ``` A backup with status `done` confirms the setup is complete. From 6c49d62db8683c31a6c8be985d56cbde4669f242 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 15:24:38 +0530 Subject: [PATCH 093/212] Update mkdocs-base.yml --- mkdocs-base.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mkdocs-base.yml b/mkdocs-base.yml index 6dfffdbf..f30d55e1 100644 --- a/mkdocs-base.yml +++ b/mkdocs-base.yml @@ -242,8 +242,9 @@ nav: - Storage: - Remote backup storage overview: details/storage-configuration.md - AWS S3 storage: details/s3-storage.md - - Oracle Cloud Storage: details/oci-storage.md - - OCI with Workload Identity Authentication: /details/oci-wif.md + - Oracle Cloud Storage: + - Overview: details/oci-storage.md + - Workload Identity authentication: details/oci-wif.md - details/minio.md - details/gcs.md - Workload Identity authentication: details/workload-identity-auth.md From cf2755e2f170c051802df8c0b6c8b76f73f9ed7a Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 15:32:34 +0530 Subject: [PATCH 094/212] Update oci-storage.md --- docs/details/oci-storage.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 0bcfc3bc..1cdc150f 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -363,15 +363,16 @@ pbm list ``` ```sh + $ pbm list Backup snapshots: NAME TYPE PROFILE SELECTIVE BASE RESTORE TIME - ----------------------------------------------------------------------------------------------------- - 2026-06-11T13:14:51Z logical no no 2026-06-11T13:15:07 - 2026-06-12T07:04:27Z logical no no 2026-06-12T07:04:42 - 2026-06-12T07:11:31Z logical no no 2026-06-12T07:11:46 + ----------------------------------------------------- + 2026-06-11T13:14:51Z logical no no 2026-06-11T13:15:07 + 2026-06-12T07:04:27Z logical no no 2026-06-12T07:04:42 + 2026-06-12T07:11:31Z logical no no 2026-06-12T07:11:46 -PITR : + PITR : ``` A backup with status `done` confirms the setup is complete. From ca573834f07514fc8ac7ee1331f7117b4bec17bd Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 15:34:49 +0530 Subject: [PATCH 095/212] Update oci-wif.md --- docs/details/oci-wif.md | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/docs/details/oci-wif.md b/docs/details/oci-wif.md index cd135cc3..a5c30308 100644 --- a/docs/details/oci-wif.md +++ b/docs/details/oci-wif.md @@ -25,7 +25,8 @@ You need: ### Procedure -1. Create an IAM policy +1. **Create an IAM policy** + Grant the user permission to manage objects in the target bucket: ```sh oci iam policy create \ @@ -36,18 +37,18 @@ You need: --statements "[\"Allow group $USER_GROUP_NAME to manage objects in compartment $COMPARTMENT_NAME where target.bucket.name = '$BUCKET_NAME'\"]" ``` -Replace the following variables: + Replace the following variables: -| Variable | Description | -|---|---| -| `HOME_REGION` | Your tenancy's home region (e.g. `us-ashburn-1`) | -| `TENANCY_OCID` | OCID of your OCI tenancy | -| `USER_POLICY_NAME` | A name for the policy (e.g. `pbm-user-policy`) | -| `USER_GROUP_NAME` | The IAM group the PBM user belongs to | -| `COMPARTMENT_NAME` | Name of the compartment containing the bucket | -| `BUCKET_NAME` | Name of the OCI Object Storage bucket | - -2. Configure PBM authentication + | Variable | Description | + |---|---| + | `HOME_REGION` | Your tenancy's home region (e.g. `us-ashburn-1`) | + | `TENANCY_OCID` | OCID of your OCI tenancy | + | `USER_POLICY_NAME` | A name for the policy (e.g. `pbm-user-policy`) | + | `USER_GROUP_NAME` | The IAM group the PBM user belongs to | + | `COMPARTMENT_NAME` | Name of the compartment containing the bucket | + | `BUCKET_NAME` | Name of the OCI Object Storage bucket | + +2. **Configure PBM authentication** In your PBM configuration, set the storage type to `oci` and the credentials type to `userPrincipal`. Provide the API signing key private key in PEM format. From 1e7ab2cd62d363929f0d675a847f79601aae87b3 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 15:37:54 +0530 Subject: [PATCH 096/212] Update oci-wif.md --- docs/details/oci-wif.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/details/oci-wif.md b/docs/details/oci-wif.md index a5c30308..f83d7911 100644 --- a/docs/details/oci-wif.md +++ b/docs/details/oci-wif.md @@ -170,4 +170,5 @@ storage: credentials: type: okeWorkloadIdentity ``` + For setup instructions, see [Configure OKE Workload Identity for workloads :octicons-link-external-16:](https://docs.oracle.com/en-us/iaas/Content/ContEng/Tasks/contenggrantingworkloadaccesstoresources.htm){:target="_blank"}. \ No newline at end of file From dede9070941442bd68a5b2a8eca8b346b7b3dc55 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 15:47:19 +0530 Subject: [PATCH 097/212] Update oci-storage.md --- docs/details/oci-storage.md | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 1cdc150f..a19bb0a8 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -356,23 +356,42 @@ pbm list ??? example "Output" - ```sh - $ pbm backup - Starting backup "2026-06-12T07:11:31Z"..... - Backup "2026-06-12T07:11:31Z" saved to remote store (path: "oci://idvufsl0apl6/rasika-bucket/pbm") - ``` - - ```sh +```sh + $ pbm backup + Starting backup "2026-06-12T07:11:31Z"..... + Backup "2026-06-12T07:11:31Z" saved to remote store (path: "oci://idvufsl0apl6/rasika-bucket/pbm") +``` +```sh $ pbm list Backup snapshots: NAME TYPE PROFILE SELECTIVE BASE RESTORE TIME ----------------------------------------------------- 2026-06-11T13:14:51Z logical no no 2026-06-11T13:15:07 2026-06-12T07:04:27Z logical no no 2026-06-12T07:04:42 - 2026-06-12T07:11:31Z logical no no 2026-06-12T07:11:46 + 2026-06-12T07:11:31Z logical no no 2026-06-12T07:11:46 PITR : - ``` +``` + +??? example "Output" + + ```sh + $ pbm backup + Starting backup "2026-06-12T07:11:31Z"..... + Backup "2026-06-12T07:11:31Z" saved to remote store (path: "oci://idvufsl0apl6/rasika-bucket/pbm") + ``` + + ```sh + $ pbm list + Backup snapshots: + NAME TYPE PROFILE SELECTIVE BASE RESTORE TIME + ----------------------------------------------------- + 2026-06-11T13:14:51Z logical no no 2026-06-11T13:15:07 + 2026-06-12T07:04:27Z logical no no 2026-06-12T07:04:42 + 2026-06-12T07:11:31Z logical no no 2026-06-12T07:11:46 + + PITR : + ``` A backup with status `done` confirms the setup is complete. From 022a45b9cbcbf2526f3f54cad82c8b28a05aaf9b Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 15:50:55 +0530 Subject: [PATCH 098/212] Update oci-storage.md --- docs/details/oci-storage.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index a19bb0a8..97c2acd0 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -356,23 +356,23 @@ pbm list ??? example "Output" -```sh - $ pbm backup - Starting backup "2026-06-12T07:11:31Z"..... - Backup "2026-06-12T07:11:31Z" saved to remote store (path: "oci://idvufsl0apl6/rasika-bucket/pbm") -``` + ```sh + $ pbm backup + Starting backup "2026-06-12T07:11:31Z"..... + Backup "2026-06-12T07:11:31Z" saved to remote store (path: "oci://idvufsl0apl6/rasika-bucket/pbm") + ``` -```sh - $ pbm list - Backup snapshots: - NAME TYPE PROFILE SELECTIVE BASE RESTORE TIME - ----------------------------------------------------- - 2026-06-11T13:14:51Z logical no no 2026-06-11T13:15:07 - 2026-06-12T07:04:27Z logical no no 2026-06-12T07:04:42 - 2026-06-12T07:11:31Z logical no no 2026-06-12T07:11:46 - - PITR : -``` + ```sh + $ pbm list + Backup snapshots: + NAME TYPE PROFILE SELECTIVE BASE RESTORE TIME + ----------------------------------------------------- + 2026-06-11T13:14:51Z logical no no 2026-06-11T13:15:07 + 2026-06-12T07:04:27Z logical no no 2026-06-12T07:04:42 + 2026-06-12T07:11:31Z logical no no 2026-06-12T07:11:46 + + PITR : + ``` ??? example "Output" From c6322b864f91342d1d12f54f7ed4d6358d47f443 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 15:59:06 +0530 Subject: [PATCH 099/212] Update oci-storage.md --- docs/details/oci-storage.md | 31 +++---------------------------- 1 file changed, 3 insertions(+), 28 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 97c2acd0..6572cdef 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -102,9 +102,7 @@ echo "FINGERPRINT: $FINGERPRINT" echo "KEY_FILE: $KEY_FILE" echo "NAMESPACE: $NAMESPACE" ``` -Verify all five values are populated before continuing. An empty -value means the OCI CLI is not authenticated or the variable -was not set correctly. +Verify all five values are populated before continuing. An empty value means the OCI CLI is not authenticated or the variable was not set correctly. ## Create a compartment @@ -196,9 +194,7 @@ oci iam policy create \ ``` !!! note - IAM policy changes can take up to 2 minutes to propagate. - If PBM reports an authorization error immediately after - creating the policies, wait 2 minutes and retry. + IAM policy changes can take up to 2 minutes to propagate. If PBM reports an authorization error immediately after creating the policies, wait 2 minutes and retry. ## Configure PBM @@ -290,8 +286,7 @@ keys are required in the configuration file. Wait for a few minutes for IAM policy propagation before testing the configuration. - - !!! note + !!! note IAM changes for dynamic groups can take 5 to 10 minutes to propagate. The native copy policy from the previous section is still required alongside the instance principal policy. @@ -374,24 +369,4 @@ pbm list PITR : ``` -??? example "Output" - - ```sh - $ pbm backup - Starting backup "2026-06-12T07:11:31Z"..... - Backup "2026-06-12T07:11:31Z" saved to remote store (path: "oci://idvufsl0apl6/rasika-bucket/pbm") - ``` - - ```sh - $ pbm list - Backup snapshots: - NAME TYPE PROFILE SELECTIVE BASE RESTORE TIME - ----------------------------------------------------- - 2026-06-11T13:14:51Z logical no no 2026-06-11T13:15:07 - 2026-06-12T07:04:27Z logical no no 2026-06-12T07:04:42 - 2026-06-12T07:11:31Z logical no no 2026-06-12T07:11:46 - - PITR : - ``` - A backup with status `done` confirms the setup is complete. From 96ba9e1fca1996a07f169068693c7897763b8b8e Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 16:01:38 +0530 Subject: [PATCH 100/212] Update oci-storage.md --- docs/details/oci-storage.md | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 6572cdef..80e566a8 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -130,7 +130,6 @@ export COMPARTMENT_OCID=$( echo "COMPARTMENT_OCID: $COMPARTMENT_OCID" ``` - ### Create an Object Storage bucket Create the bucket: @@ -272,17 +271,17 @@ keys are required in the configuration file. 3. Configure PBM: - ```yaml - storage: - type: oci - oci: - region: - namespace: - bucket: - prefix: pbm - credentials: - type: instancePrincipal - ``` + ```yaml + storage: + type: oci + oci: + region: + namespace: + bucket: + prefix: pbm + credentials: + type: instancePrincipal + ``` Wait for a few minutes for IAM policy propagation before testing the configuration. From bc0f74e8c64f2baf61a2c8f0f0b8c5a19557a729 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 16:08:17 +0530 Subject: [PATCH 101/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 80e566a8..f9fdde1b 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -1,15 +1,15 @@ # Oracle Cloud Infrastructure Object Storage Percona Backup for MongoDB (PBM) supports [OCI Object Storage](https://docs.oracle.com/en-us/iaas/Content/Object/Concepts/objectstorageoverview.htm) -as a remote backup destination through a dedicated OCI native -driver. PBM connects to OCI Object Storage using one of two +as a remote backup destination through a dedicated OCI native +driver. PBM connects to OCI Object Storage using one of the following authentication types: | **Authentication type** | **Use when** | | --- | --- | | `userPrincipal` | PBM runs anywhere; authenticates with OCI API signing keys | | `instancePrincipal` | PBM runs on an OCI Compute instance | - +| `okeWorkloadIdentity` | PBM runs inside an OKE enhanced cluster (see [Workload Identity authentication](oci-wif.md)) | ## Prerequisites Before configuring PBM, ensure that you have: From 320974680cec8c0341ddcb99a2667f75eb7ee33f Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 16:08:38 +0530 Subject: [PATCH 102/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index f9fdde1b..89e2e96d 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -273,14 +273,14 @@ keys are required in the configuration file. ```yaml storage: - type: oci - oci: + type: oci + oci: region: namespace: bucket: prefix: pbm credentials: - type: instancePrincipal + type: instancePrincipal ``` Wait for a few minutes for IAM policy propagation before testing the configuration. From a8b30d712e25f187bdc7a4a6091602e0c413bddc Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 16:08:58 +0530 Subject: [PATCH 103/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 89e2e96d..879fa14d 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -286,8 +286,7 @@ keys are required in the configuration file. Wait for a few minutes for IAM policy propagation before testing the configuration. !!! note - IAM changes for dynamic groups can take 5 to 10 minutes to propagate. The native copy policy from the previous section is still required alongside the instance - principal policy. + IAM changes for dynamic groups can take 5 to 10 minutes to propagate. The native copy policy from the previous section is still required alongside the instance principal policy. ## Apply the PBM configuration From f0eb95f9a1b1840093ff8ce8edfc629b62b8c0f4 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 16:09:23 +0530 Subject: [PATCH 104/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-wif.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/details/oci-wif.md b/docs/details/oci-wif.md index f83d7911..622fa95e 100644 --- a/docs/details/oci-wif.md +++ b/docs/details/oci-wif.md @@ -1,9 +1,8 @@ # Oracle Cloud Infrastructure (OCI) Object Storage with Workload Identity Authentication -Percona Backup for MongoDB (PBM) supports Workload Identity authentication for Oracle Cloud Infrastructure (OCI) Object Storage. With Workload Identity, PBM can access OCI resources without storing or managing API keys, reducing operational overhead and improving security. - -Percona Backup for MongoDB (PBM) supports two Workload Identity authentication types for OCI Object Storage, in addition to the default `userPrincipal`: +Percona Backup for MongoDB (PBM) supports multiple authentication methods for Oracle Cloud Infrastructure (OCI) Object Storage, including Workload Identity. With Workload Identity, PBM can access OCI resources without storing or managing API keys, reducing operational overhead and improving security. +Percona Backup for MongoDB (PBM) supports the default `userPrincipal` authentication method as well as the following Workload Identity options: | Auth type | When to use | |---|---| |`userPrincipal`|PBM is running anywhere — on-premises, on other clouds, or on OCI| From 3484bf78dcff3c379c61bfe11675adabdf60a901 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 16:09:41 +0530 Subject: [PATCH 105/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- mkdocs-base.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs-base.yml b/mkdocs-base.yml index f30d55e1..7b63fed5 100644 --- a/mkdocs-base.yml +++ b/mkdocs-base.yml @@ -242,7 +242,7 @@ nav: - Storage: - Remote backup storage overview: details/storage-configuration.md - AWS S3 storage: details/s3-storage.md - - Oracle Cloud Storage: + - Oracle Cloud Storage: - Overview: details/oci-storage.md - Workload Identity authentication: details/oci-wif.md - details/minio.md From 0bae2c9ea77b8f2fc4af25029cc10adfca8a673d Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 16:17:33 +0530 Subject: [PATCH 106/212] Update oci-wif.md --- docs/details/oci-wif.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/docs/details/oci-wif.md b/docs/details/oci-wif.md index 622fa95e..62676c68 100644 --- a/docs/details/oci-wif.md +++ b/docs/details/oci-wif.md @@ -3,6 +3,7 @@ Percona Backup for MongoDB (PBM) supports multiple authentication methods for Oracle Cloud Infrastructure (OCI) Object Storage, including Workload Identity. With Workload Identity, PBM can access OCI resources without storing or managing API keys, reducing operational overhead and improving security. Percona Backup for MongoDB (PBM) supports the default `userPrincipal` authentication method as well as the following Workload Identity options: + | Auth type | When to use | |---|---| |`userPrincipal`|PBM is running anywhere — on-premises, on other clouds, or on OCI| @@ -26,15 +27,15 @@ You need: 1. **Create an IAM policy** - Grant the user permission to manage objects in the target bucket: - ```sh - oci iam policy create \ - --region "$HOME_REGION" \ - --compartment-id "$TENANCY_OCID" \ - --name "$USER_POLICY_NAME" \ - --description "Allow PBM user to access $BUCKET_NAME" \ - --statements "[\"Allow group $USER_GROUP_NAME to manage objects in compartment $COMPARTMENT_NAME where target.bucket.name = '$BUCKET_NAME'\"]" - ``` + Grant the user permission to manage objects in the target bucket: + ```sh + oci iam policy create \ + --region "$HOME_REGION" \ + --compartment-id "$TENANCY_OCID" \ + --name "$USER_POLICY_NAME" \ + --description "Allow PBM user to access $BUCKET_NAME" \ + --statements "[\"Allow group $USER_GROUP_NAME to manage objects in compartment $COMPARTMENT_NAME where target.bucket.name = '$BUCKET_NAME'\"]" + ``` Replace the following variables: From d58d3077d2c131838b91427517a1ade57c20ee85 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 16:21:23 +0530 Subject: [PATCH 107/212] Update oci-wif.md --- docs/details/oci-wif.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/details/oci-wif.md b/docs/details/oci-wif.md index 62676c68..5b376af1 100644 --- a/docs/details/oci-wif.md +++ b/docs/details/oci-wif.md @@ -28,6 +28,7 @@ You need: 1. **Create an IAM policy** Grant the user permission to manage objects in the target bucket: + ```sh oci iam policy create \ --region "$HOME_REGION" \ @@ -35,7 +36,7 @@ You need: --name "$USER_POLICY_NAME" \ --description "Allow PBM user to access $BUCKET_NAME" \ --statements "[\"Allow group $USER_GROUP_NAME to manage objects in compartment $COMPARTMENT_NAME where target.bucket.name = '$BUCKET_NAME'\"]" - ``` + ``` Replace the following variables: From 5de65e61bfc5e795e601c7615bb191e5f9354ac6 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 16:24:17 +0530 Subject: [PATCH 108/212] Update oci-storage.md --- docs/details/oci-storage.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 879fa14d..951c3e8a 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -10,6 +10,7 @@ authentication types: | `userPrincipal` | PBM runs anywhere; authenticates with OCI API signing keys | | `instancePrincipal` | PBM runs on an OCI Compute instance | | `okeWorkloadIdentity` | PBM runs inside an OKE enhanced cluster (see [Workload Identity authentication](oci-wif.md)) | + ## Prerequisites Before configuring PBM, ensure that you have: @@ -283,9 +284,9 @@ keys are required in the configuration file. type: instancePrincipal ``` - Wait for a few minutes for IAM policy propagation before testing the configuration. + Wait for a few minutes for IAM policy propagation before testing the configuration. - !!! note + !!! note IAM changes for dynamic groups can take 5 to 10 minutes to propagate. The native copy policy from the previous section is still required alongside the instance principal policy. ## Apply the PBM configuration From c07cad84a458b58cc034578414b9fa0467621d6e Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 16:26:44 +0530 Subject: [PATCH 109/212] Update oci-storage.md --- docs/details/oci-storage.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 951c3e8a..ddfbe047 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -2,8 +2,7 @@ Percona Backup for MongoDB (PBM) supports [OCI Object Storage](https://docs.oracle.com/en-us/iaas/Content/Object/Concepts/objectstorageoverview.htm) as a remote backup destination through a dedicated OCI native -driver. PBM connects to OCI Object Storage using one of the following -authentication types: +driver. PBM connects to OCI Object Storage using one of the following authentication types: | **Authentication type** | **Use when** | | --- | --- | @@ -11,6 +10,7 @@ authentication types: | `instancePrincipal` | PBM runs on an OCI Compute instance | | `okeWorkloadIdentity` | PBM runs inside an OKE enhanced cluster (see [Workload Identity authentication](oci-wif.md)) | + ## Prerequisites Before configuring PBM, ensure that you have: From eae84da6e952c072e9eaadc3114361a854a5441f Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 16:29:36 +0530 Subject: [PATCH 110/212] Update oci-storage.md --- docs/details/oci-storage.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index ddfbe047..651f7ca7 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -366,6 +366,4 @@ pbm list 2026-06-12T07:11:31Z logical no no 2026-06-12T07:11:46 PITR : - ``` - -A backup with status `done` confirms the setup is complete. + ``` \ No newline at end of file From 5faabd46ecde6d3a437f2e9bfebbc19e47a65d5f Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 17:00:17 +0530 Subject: [PATCH 111/212] Releaae-notes-2.15.0 --- docs/release-notes/2.15.0.md | 10 ++++++++++ variables.yml | 6 +++--- 2 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 docs/release-notes/2.15.0.md diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md new file mode 100644 index 00000000..8ef6debe --- /dev/null +++ b/docs/release-notes/2.15.0.md @@ -0,0 +1,10 @@ +# Percona Backup for MongoDB 2.15.0 ({{date.2_15_0}}) + +[Installation](../installation.md){.md-button} + + +Percona Backup for MongoDB (PBM) is a distributed, low-impact solution for creating consistent backups of MongoDB sharded clusters and replica sets, and restoring them to a specific point in time. + +## Release Highlights + + diff --git a/variables.yml b/variables.yml index bbb63ab1..3eddb20b 100644 --- a/variables.yml +++ b/variables.yml @@ -1,14 +1,14 @@ # PBM Variables set for HTML output # See also mkdocs.yml plugins.with-pdf.cover_subtitle and output_path -release: '2.14.0' -version: '2.14' +release: '2.15.0' +version: '2.15' year: '2026' pbm: full_name: 'Percona Backup for MongoDB' date: - 2_14_0: 2026-04-29 + 2_15_0: 2026-06-17 2_13_0: 2026-03-03 2_12_0: 2025-11-04 2_11_0: 2025-09-25 From 6e4c0f63a1e31b0d50c6fbc8f124653b0f591c6d Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 17:23:34 +0530 Subject: [PATCH 112/212] Update 2.15.0.md --- docs/release-notes/2.15.0.md | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index 8ef6debe..19650d7c 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -2,9 +2,36 @@ [Installation](../installation.md){.md-button} - Percona Backup for MongoDB (PBM) is a distributed, low-impact solution for creating consistent backups of MongoDB sharded clusters and replica sets, and restoring them to a specific point in time. -## Release Highlights +## Release highlights + +### Oracle Cloud Infrastructure Object Storage + +Percona Backup for MongoDB (PBM) now supports OCI Object Storage as a remote backup destination through a dedicated OCI native driver. PBM can authenticate with OCI Object Storage using multiple authentication methods, allowing seamless deployment across different OCI environments. + +### OCI Object Storage Workload Identity Authentication + +Percona Backup for MongoDB (PBM) now supports multiple authentication methods for Oracle Cloud Infrastructure (OCI) Object Storage, including Workload Identity. This enables PBM to securely access OCI resources without storing or managing API signing keys, reducing operational overhead and improving security. + +PBM supports the following OCI authentication methods: + +- **User Principal** – for PBM deployments running anywhere, including on-premises, other cloud providers, or OCI. +- **Instance Principal** – for PBM deployments running on OCI Compute instances. +- **OKE Workload Identity** – for PBM deployments running inside Oracle Kubernetes Engine (OKE) enhanced clusters. + +These options provide greater flexibility for OCI-based backup deployments while aligning with OCI-native authentication and security best practices. + +### Software Bill of Materials (SBOM) + +Percona Backup for MongoDB (PBM) now provides Software Bills of Materials (SBOMs) for every release. SBOMs improve software supply chain transparency by documenting the components and dependencies included in a build. They are generated automatically as part of the release pipeline in the industry standard `CycloneDX 1.6` format. + +SBOMs are distributed through the following channels: + +- **GitHub:** The latest SBOM is placed in the root of the [percona/percona-clustersync-mongodb](https://github.com/percona/percona-backup-mongodb) main branch. + +- **Binaries/Tarballs:** An SBOM file is included in the root directory of the release archive. +- **Packages:** For `.deb` and `.rpm` packages, the SBOM file is installed in a standard documentation directory such as `/usr/share/doc/percona-backup-mongodb/`. +- **Docker:** The SBOM is attached directly to the Docker image as metadata. From a0b73a4a345d3fb2c3df39d2fbcd6117ed3467a3 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Fri, 12 Jun 2026 17:30:40 +0530 Subject: [PATCH 113/212] Update 2.15.0.md --- docs/release-notes/2.15.0.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index 19650d7c..31e39b19 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -35,3 +35,23 @@ SBOMs are distributed through the following channels: - **Packages:** For `.deb` and `.rpm` packages, the SBOM file is installed in a standard documentation directory such as `/usr/share/doc/percona-backup-mongodb/`. - **Docker:** The SBOM is attached directly to the Docker image as metadata. + +## Changelog + +### New features + +- [PBM-1727](https://perconadev.atlassian.net/browse/PBM-1727): +- [PBM-1728](https://perconadev.atlassian.net/browse/PBM-1728): +- [PBM-1710](https://perconadev.atlassian.net/browse/PBM-1710): + +## Improvements + +- [PBM-1370](https://perconadev.atlassian.net/browse/PBM-1370): Add information reated to cleanup --older-than parameter in the log +- [PBM-1668](https://perconadev.atlassian.net/browse/PBM-1668): Add configurable commitQuorum option for index creation during logical restore +- [PBM-1715](https://perconadev.atlassian.net/browse/PBM-1715): Physical backup / restore from filesystem/NFS is limited by sequential single-threaded file copy +- [PBM-1754](https://perconadev.atlassian.net/browse/PBM-1754): Adjustable buffer size for physical backup/restore + +### Fixed bugs + +- [PBM-1675](https://perconadev.atlassian.net/browse/PBM-1675) Backups are shown as incompatible if wrong MONGODB_URI is set +- [PBM-1687]https://perconadev.atlassian.net/browse/PBM-1687) PITR block in case when two backup commands are executed simultaneously \ No newline at end of file From 8057f27f02cf6c58e2bed94cc511183874d0321f Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 09:34:51 +0530 Subject: [PATCH 114/212] Update 2.15.0.md --- docs/release-notes/2.15.0.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index 31e39b19..a9964e5c 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -40,18 +40,19 @@ SBOMs are distributed through the following channels: ### New features -- [PBM-1727](https://perconadev.atlassian.net/browse/PBM-1727): -- [PBM-1728](https://perconadev.atlassian.net/browse/PBM-1728): -- [PBM-1710](https://perconadev.atlassian.net/browse/PBM-1710): +- [PBM-1727](https://perconadev.atlassian.net/browse/PBM-1727): Percona Backup for MongoDB (PBM) now supports OCI Object Storage as a remote backup destination through a dedicated OCI native driver. +- [PBM-1728](https://perconadev.atlassian.net/browse/PBM-1728): Percona Backup for MongoDB (PBM) now supports multiple authentication methods for Oracle Cloud Infrastructure (OCI) Object Storage, including Workload Identity. +- [PBM-1710](https://perconadev.atlassian.net/browse/PBM-1710): Percona Backup for MongoDB (PBM) now provides Software Bills of Materials (SBOMs) for every release. ## Improvements -- [PBM-1370](https://perconadev.atlassian.net/browse/PBM-1370): Add information reated to cleanup --older-than parameter in the log -- [PBM-1668](https://perconadev.atlassian.net/browse/PBM-1668): Add configurable commitQuorum option for index creation during logical restore -- [PBM-1715](https://perconadev.atlassian.net/browse/PBM-1715): Physical backup / restore from filesystem/NFS is limited by sequential single-threaded file copy -- [PBM-1754](https://perconadev.atlassian.net/browse/PBM-1754): Adjustable buffer size for physical backup/restore +- [PBM-1370](https://perconadev.atlassian.net/browse/PBM-1370): The agent logs now include the reference date or interval supplied to the cleanup command. Previously, only the command receipt and epoch timestamp were recorded. +- [PBM-1668](https://perconadev.atlassian.net/browse/PBM-1668): The restore command now accepts a `commitQuorum` option that controls when the primary commits an index during a restore operation. You can set this to `majority`, `votingMembers`, or a specific number of nodes. + Without this option, MongoDB defaults to `votingMembers`, which requires all data-bearing voting members to complete index building before the index is committed. In large replica sets, this can significantly delay restore operations if index creation is slow on even a subset of nodes. +- [PBM-1715](https://perconadev.atlassian.net/browse/PBM-1715): Physical backups and restore now support a `numParallelFiles` option that controls how many files PBM copies simultaneously during a backup operation. Increasing this value can improve backup performance on systems with high disk throughput. +- [PBM-1754](https://perconadev.atlassian.net/browse/PBM-1754): PBM now allows configuring the buffer size used during physical backup and restore operations. This enhancement provides greater flexibility for tuning memory usage and data transfer performance, enabling you to optimize backup and restore throughput based on their environment and workload requirements. ### Fixed bugs - [PBM-1675](https://perconadev.atlassian.net/browse/PBM-1675) Backups are shown as incompatible if wrong MONGODB_URI is set -- [PBM-1687]https://perconadev.atlassian.net/browse/PBM-1687) PITR block in case when two backup commands are executed simultaneously \ No newline at end of file +- [PBM-1687](https://perconadev.atlassian.net/browse/PBM-1687) PITR block in case when two backup commands are executed simultaneously \ No newline at end of file From 99489f2cc4080ea096046839467da475859718c5 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 09:36:13 +0530 Subject: [PATCH 115/212] Update 2.15.0.md --- docs/release-notes/2.15.0.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index a9964e5c..8fa4d405 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -54,5 +54,5 @@ SBOMs are distributed through the following channels: ### Fixed bugs -- [PBM-1675](https://perconadev.atlassian.net/browse/PBM-1675) Backups are shown as incompatible if wrong MONGODB_URI is set -- [PBM-1687](https://perconadev.atlassian.net/browse/PBM-1687) PITR block in case when two backup commands are executed simultaneously \ No newline at end of file +- [PBM-1675](https://perconadev.atlassian.net/browse/PBM-1675): Fixed an issue where backups were incorrectly marked as incompatible when an invalid MONGODB_URI was configured. +- [PBM-1687](https://perconadev.atlassian.net/browse/PBM-1687): Fixed an issue where backups were incorrectly marked as incompatible when an invalid MONGODB_URI was configured. \ No newline at end of file From a36b38fa2eb849fcf3ecdd8d1e97a8861834a8c0 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 09:37:35 +0530 Subject: [PATCH 116/212] Update 2.15.0.md --- docs/release-notes/2.15.0.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index 8fa4d405..38544c4c 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -54,5 +54,5 @@ SBOMs are distributed through the following channels: ### Fixed bugs -- [PBM-1675](https://perconadev.atlassian.net/browse/PBM-1675): Fixed an issue where backups were incorrectly marked as incompatible when an invalid MONGODB_URI was configured. -- [PBM-1687](https://perconadev.atlassian.net/browse/PBM-1687): Fixed an issue where backups were incorrectly marked as incompatible when an invalid MONGODB_URI was configured. \ No newline at end of file +- [PBM-1675](https://perconadev.atlassian.net/browse/PBM-1675): Fixed an issue where backups were incorrectly marked as incompatible when an invalid `MONGODB_URI` was configured. +- [PBM-1687](https://perconadev.atlassian.net/browse/PBM-1687): Fixed an issue where point-in-time recovery (PITR) was blocked when two backup commands were executed simultaneously. \ No newline at end of file From a324d19f45ee9233fd80c3a32cc1c46d1d0df12e Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 09:50:44 +0530 Subject: [PATCH 117/212] Update 2.15.0.md --- docs/release-notes/2.15.0.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index 38544c4c..d869f3a6 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -8,17 +8,19 @@ Percona Backup for MongoDB (PBM) is a distributed, low-impact solution for creat ### Oracle Cloud Infrastructure Object Storage -Percona Backup for MongoDB (PBM) now supports OCI Object Storage as a remote backup destination through a dedicated OCI native driver. PBM can authenticate with OCI Object Storage using multiple authentication methods, allowing seamless deployment across different OCI environments. +PBM now supports Oracle Cloud Infrastructure (OCI) Object Storage as a remote backup destination through a dedicated OCI native driver. This integration enables backup and restore operations using OCI Object Storage across OCI environments. ### OCI Object Storage Workload Identity Authentication -Percona Backup for MongoDB (PBM) now supports multiple authentication methods for Oracle Cloud Infrastructure (OCI) Object Storage, including Workload Identity. This enables PBM to securely access OCI resources without storing or managing API signing keys, reducing operational overhead and improving security. +PBM now supports multiple authentication methods for Oracle Cloud Infrastructure (OCI) Object Storage, including **Workload Identity authentication**. This enables secure access to OCI resources without requiring API signing keys, reducing operational overhead and improving security. PBM supports the following OCI authentication methods: -- **User Principal** – for PBM deployments running anywhere, including on-premises, other cloud providers, or OCI. -- **Instance Principal** – for PBM deployments running on OCI Compute instances. -- **OKE Workload Identity** – for PBM deployments running inside Oracle Kubernetes Engine (OKE) enhanced clusters. +- **User Principal** for PBM deployments running on premises, on OCI, or in other cloud environments. +- **Instance Principal **for PBM deployments running on OCI Compute instances. +- **OKE Workload Identity** for PBM deployments running in Oracle Kubernetes Engine (OKE) enhanced clusters. + +These options provide deployment flexibility while aligning with OCI security best practices. These options provide greater flexibility for OCI-based backup deployments while aligning with OCI-native authentication and security best practices. From 6dc9042edaf2e8d0ba2a19ebda409df04a23a83e Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 09:57:25 +0530 Subject: [PATCH 118/212] Update 2.15.0.md --- docs/release-notes/2.15.0.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index d869f3a6..b7140ad9 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -26,7 +26,7 @@ These options provide greater flexibility for OCI-based backup deployments while ### Software Bill of Materials (SBOM) -Percona Backup for MongoDB (PBM) now provides Software Bills of Materials (SBOMs) for every release. SBOMs improve software supply chain transparency by documenting the components and dependencies included in a build. They are generated automatically as part of the release pipeline in the industry standard `CycloneDX 1.6` format. +Percona Backup for MongoDB (PBM) now provides Software Bills of Materials (SBOMs) for every release. SBOMs improve transparency in the software supply chain by documenting the components and dependencies in a build. They are generated automatically as part of the release pipeline in the industry standard `CycloneDX 1.6` format. SBOMs are distributed through the following channels: @@ -48,11 +48,11 @@ SBOMs are distributed through the following channels: ## Improvements -- [PBM-1370](https://perconadev.atlassian.net/browse/PBM-1370): The agent logs now include the reference date or interval supplied to the cleanup command. Previously, only the command receipt and epoch timestamp were recorded. +- [PBM-1370](https://perconadev.atlassian.net/browse/PBM-1370): Agent logs now include the reference date or interval supplied to cleanup commands. Previously, only the command receipt and epoch timestamp were recorded, making it difficult to determine which cleanup criteria were applied during troubleshooting and audit investigations. - [PBM-1668](https://perconadev.atlassian.net/browse/PBM-1668): The restore command now accepts a `commitQuorum` option that controls when the primary commits an index during a restore operation. You can set this to `majority`, `votingMembers`, or a specific number of nodes. Without this option, MongoDB defaults to `votingMembers`, which requires all data-bearing voting members to complete index building before the index is committed. In large replica sets, this can significantly delay restore operations if index creation is slow on even a subset of nodes. - [PBM-1715](https://perconadev.atlassian.net/browse/PBM-1715): Physical backups and restore now support a `numParallelFiles` option that controls how many files PBM copies simultaneously during a backup operation. Increasing this value can improve backup performance on systems with high disk throughput. -- [PBM-1754](https://perconadev.atlassian.net/browse/PBM-1754): PBM now allows configuring the buffer size used during physical backup and restore operations. This enhancement provides greater flexibility for tuning memory usage and data transfer performance, enabling you to optimize backup and restore throughput based on their environment and workload requirements. +- [PBM-1754](https://perconadev.atlassian.net/browse/PBM-1754): PBM now allows configuring the buffer size used during physical backup and restore operations. This enhancement provides greater flexibility for tuning memory usage and data transfer performance, enabling you to optimize backup and restore throughput based on your environment and workload requirements. ### Fixed bugs From 9d06aaebbe3aee2dd8cb0276b9ac80ad02aedbbc Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 10:10:57 +0530 Subject: [PATCH 119/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/release-notes/2.15.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index b7140ad9..983fda28 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -17,7 +17,7 @@ PBM now supports multiple authentication methods for Oracle Cloud Infrastructure PBM supports the following OCI authentication methods: - **User Principal** for PBM deployments running on premises, on OCI, or in other cloud environments. -- **Instance Principal **for PBM deployments running on OCI Compute instances. +- **Instance Principal** for PBM deployments running on OCI Compute instances. - **OKE Workload Identity** for PBM deployments running in Oracle Kubernetes Engine (OKE) enhanced clusters. These options provide deployment flexibility while aligning with OCI security best practices. From dad3dcf4a5088f1c65fb41a31535db6d23cae055 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 10:11:22 +0530 Subject: [PATCH 120/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/release-notes/2.15.0.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index 983fda28..635ab0ae 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -22,8 +22,6 @@ PBM supports the following OCI authentication methods: These options provide deployment flexibility while aligning with OCI security best practices. -These options provide greater flexibility for OCI-based backup deployments while aligning with OCI-native authentication and security best practices. - ### Software Bill of Materials (SBOM) Percona Backup for MongoDB (PBM) now provides Software Bills of Materials (SBOMs) for every release. SBOMs improve transparency in the software supply chain by documenting the components and dependencies in a build. They are generated automatically as part of the release pipeline in the industry standard `CycloneDX 1.6` format. From 98cd65d754aa588abbc4f7dcaf2ed01ba1846756 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 10:11:59 +0530 Subject: [PATCH 121/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/release-notes/2.15.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index 635ab0ae..4d838002 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -28,7 +28,7 @@ Percona Backup for MongoDB (PBM) now provides Software Bills of Materials (SBOMs SBOMs are distributed through the following channels: -- **GitHub:** The latest SBOM is placed in the root of the [percona/percona-clustersync-mongodb](https://github.com/percona/percona-backup-mongodb) main branch. +- **GitHub:** The latest SBOM is placed in the root of the [percona/percona-backup-mongodb](https://github.com/percona/percona-backup-mongodb) main branch. - **Binaries/Tarballs:** An SBOM file is included in the root directory of the release archive. From 8ef5f82276d318426cbc3eabc7cb9880a209c116 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 10:12:19 +0530 Subject: [PATCH 122/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/release-notes/2.15.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index 4d838002..e02e6ab4 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -44,7 +44,7 @@ SBOMs are distributed through the following channels: - [PBM-1728](https://perconadev.atlassian.net/browse/PBM-1728): Percona Backup for MongoDB (PBM) now supports multiple authentication methods for Oracle Cloud Infrastructure (OCI) Object Storage, including Workload Identity. - [PBM-1710](https://perconadev.atlassian.net/browse/PBM-1710): Percona Backup for MongoDB (PBM) now provides Software Bills of Materials (SBOMs) for every release. -## Improvements +### Improvements - [PBM-1370](https://perconadev.atlassian.net/browse/PBM-1370): Agent logs now include the reference date or interval supplied to cleanup commands. Previously, only the command receipt and epoch timestamp were recorded, making it difficult to determine which cleanup criteria were applied during troubleshooting and audit investigations. - [PBM-1668](https://perconadev.atlassian.net/browse/PBM-1668): The restore command now accepts a `commitQuorum` option that controls when the primary commits an index during a restore operation. You can set this to `majority`, `votingMembers`, or a specific number of nodes. From 687c0be2afb298b107809fdfb2b445145f3981b3 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 10:12:33 +0530 Subject: [PATCH 123/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/release-notes/2.15.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index e02e6ab4..272324c8 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -49,7 +49,7 @@ SBOMs are distributed through the following channels: - [PBM-1370](https://perconadev.atlassian.net/browse/PBM-1370): Agent logs now include the reference date or interval supplied to cleanup commands. Previously, only the command receipt and epoch timestamp were recorded, making it difficult to determine which cleanup criteria were applied during troubleshooting and audit investigations. - [PBM-1668](https://perconadev.atlassian.net/browse/PBM-1668): The restore command now accepts a `commitQuorum` option that controls when the primary commits an index during a restore operation. You can set this to `majority`, `votingMembers`, or a specific number of nodes. Without this option, MongoDB defaults to `votingMembers`, which requires all data-bearing voting members to complete index building before the index is committed. In large replica sets, this can significantly delay restore operations if index creation is slow on even a subset of nodes. -- [PBM-1715](https://perconadev.atlassian.net/browse/PBM-1715): Physical backups and restore now support a `numParallelFiles` option that controls how many files PBM copies simultaneously during a backup operation. Increasing this value can improve backup performance on systems with high disk throughput. +- [PBM-1715](https://perconadev.atlassian.net/browse/PBM-1715): Physical backups and restores now support a `numParallelFiles` option that controls how many files PBM copies simultaneously during a backup operation. Increasing this value can improve backup performance on systems with high disk throughput. - [PBM-1754](https://perconadev.atlassian.net/browse/PBM-1754): PBM now allows configuring the buffer size used during physical backup and restore operations. This enhancement provides greater flexibility for tuning memory usage and data transfer performance, enabling you to optimize backup and restore throughput based on your environment and workload requirements. ### Fixed bugs From 7da081a3dced38910a982fe2df6c551c5a25be76 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 15 Jun 2026 04:44:12 +0000 Subject: [PATCH 124/212] Restore missing 2.14.0 release date key --- variables.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/variables.yml b/variables.yml index 3eddb20b..87282f08 100644 --- a/variables.yml +++ b/variables.yml @@ -9,6 +9,7 @@ pbm: full_name: 'Percona Backup for MongoDB' date: 2_15_0: 2026-06-17 + 2_14_0: 2026-04-29 2_13_0: 2026-03-03 2_12_0: 2025-11-04 2_11_0: 2025-09-25 From e089f860c8fbdb22abe9918546b3418cd05604f5 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 10:18:57 +0530 Subject: [PATCH 125/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/release-notes/2.15.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index 272324c8..4ae371da 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -48,7 +48,7 @@ SBOMs are distributed through the following channels: - [PBM-1370](https://perconadev.atlassian.net/browse/PBM-1370): Agent logs now include the reference date or interval supplied to cleanup commands. Previously, only the command receipt and epoch timestamp were recorded, making it difficult to determine which cleanup criteria were applied during troubleshooting and audit investigations. - [PBM-1668](https://perconadev.atlassian.net/browse/PBM-1668): The restore command now accepts a `commitQuorum` option that controls when the primary commits an index during a restore operation. You can set this to `majority`, `votingMembers`, or a specific number of nodes. - Without this option, MongoDB defaults to `votingMembers`, which requires all data-bearing voting members to complete index building before the index is committed. In large replica sets, this can significantly delay restore operations if index creation is slow on even a subset of nodes. + Without this option, MongoDB defaults to `votingMembers`, which requires all data-bearing voting members to complete index building before the index is committed. In large replica sets, this can significantly delay restore operations if index creation is slow on even a subset of nodes. - [PBM-1715](https://perconadev.atlassian.net/browse/PBM-1715): Physical backups and restores now support a `numParallelFiles` option that controls how many files PBM copies simultaneously during a backup operation. Increasing this value can improve backup performance on systems with high disk throughput. - [PBM-1754](https://perconadev.atlassian.net/browse/PBM-1754): PBM now allows configuring the buffer size used during physical backup and restore operations. This enhancement provides greater flexibility for tuning memory usage and data transfer performance, enabling you to optimize backup and restore throughput based on your environment and workload requirements. From 53f152c96a649a81dec18ca9a5f4ccaaf23f21af Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 15 Jun 2026 04:51:12 +0000 Subject: [PATCH 126/212] Add PBM 2.15.0 to release notes navigation and index --- docs/release-notes.md | 1 + mkdocs-base.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/docs/release-notes.md b/docs/release-notes.md index 16d13361..43d70c14 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -1,4 +1,5 @@ # {{pbm.full_name}} release notes +* [{{pbm.full_name}} 2.15.0](release-notes/2.15.0.md) * [{{pbm.full_name}} 2.14.0](release-notes/2.14.0.md) * [{{pbm.full_name}} 2.13.0](release-notes/2.13.0.md) * [{{pbm.full_name}} 2.12.0](release-notes/2.12.0.md) diff --git a/mkdocs-base.yml b/mkdocs-base.yml index b5fde611..28dc3ef6 100644 --- a/mkdocs-base.yml +++ b/mkdocs-base.yml @@ -291,6 +291,7 @@ nav: - Release notes: - release-notes.md - PBM 2.x: + - "{{pbm.full_name}} 2.15.0 ({{date.2_15_0}})": release-notes/2.15.0.md - "{{pbm.full_name}} 2.14.0 ({{date.2_14_0}})": release-notes/2.14.0.md - release-notes/2.13.0.md - release-notes/2.12.0.md From 374d207bc5b2491a6290d32e6e35ba0511483637 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 10:27:23 +0530 Subject: [PATCH 127/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/release-notes/2.15.0.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index 4ae371da..05297e2b 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -22,9 +22,9 @@ PBM supports the following OCI authentication methods: These options provide deployment flexibility while aligning with OCI security best practices. -### Software Bill of Materials (SBOM) +### Software Bills of Materials (SBOMs) -Percona Backup for MongoDB (PBM) now provides Software Bills of Materials (SBOMs) for every release. SBOMs improve transparency in the software supply chain by documenting the components and dependencies in a build. They are generated automatically as part of the release pipeline in the industry standard `CycloneDX 1.6` format. +Percona Backup for MongoDB (PBM) now provides Software Bills of Materials (SBOMs) for every release. SBOMs improve transparency in the software supply chain by documenting the components and dependencies in a build. They are generated automatically as part of the release pipeline in the industry-standard `CycloneDX 1.6` format. SBOMs are distributed through the following channels: From 032c1c7d1d7c457fe8218bd4563d2ac6472162fd Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 10:32:03 +0530 Subject: [PATCH 128/212] Update release-notes.md --- docs/release-notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes.md b/docs/release-notes.md index 16d13361..4f88d99e 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -1,5 +1,5 @@ # {{pbm.full_name}} release notes -* [{{pbm.full_name}} 2.14.0](release-notes/2.14.0.md) +* [{{pbm.full_name}} 2.15.0](release-notes/2.15.0.md) * [{{pbm.full_name}} 2.13.0](release-notes/2.13.0.md) * [{{pbm.full_name}} 2.12.0](release-notes/2.12.0.md) * [{{pbm.full_name}} 2.11.0](release-notes/2.11.0.md) From b2b53a9c626c26d0c999059c6f9944c7c7896a78 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 10:33:37 +0530 Subject: [PATCH 129/212] Update mkdocs-base.yml --- mkdocs-base.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/mkdocs-base.yml b/mkdocs-base.yml index 28dc3ef6..450f22c1 100644 --- a/mkdocs-base.yml +++ b/mkdocs-base.yml @@ -292,7 +292,6 @@ nav: - release-notes.md - PBM 2.x: - "{{pbm.full_name}} 2.15.0 ({{date.2_15_0}})": release-notes/2.15.0.md - - "{{pbm.full_name}} 2.14.0 ({{date.2_14_0}})": release-notes/2.14.0.md - release-notes/2.13.0.md - release-notes/2.12.0.md - release-notes/2.11.0.md From 61d5e9cc1425b5bfc618e637e196a81a3711c768 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 10:45:00 +0530 Subject: [PATCH 130/212] Delete 2.14.0.md --- docs/release-notes/2.14.0.md | 88 ------------------------------------ 1 file changed, 88 deletions(-) delete mode 100644 docs/release-notes/2.14.0.md diff --git a/docs/release-notes/2.14.0.md b/docs/release-notes/2.14.0.md deleted file mode 100644 index 48b16892..00000000 --- a/docs/release-notes/2.14.0.md +++ /dev/null @@ -1,88 +0,0 @@ -# Percona Backup for MongoDB 2.14.0 ({{date.2_14_0}}) - -[Installation](../installation.md){.md-button} - - -Percona Backup for MongoDB (PBM) is a distributed, low-impact solution for creating consistent backups of MongoDB sharded clusters and replica sets, and restoring them to a specific point in time. - -## Release highlights - -### Concurrent streaming for faster uploads to remote storage via MinIO SDK - -This release significantly improves the performance of uploading files to S3-compatible custom storage providers through MinIO SDK. By enabling concurrent part uploads, large file transfers can achieve improved throughput and efficiency. - -To ensure reliability, PBM includes built‑in optimizations and fallbacks: - -* **Small files:** If the file is smaller than the upload part size, concurrent upload is automatically disabled (since it's unnecessary). -* **Empty streams:** If the MinIO library reports an unexpected error for empty streams, PBM will retry the request with ConcurrentStreamParts disabled. - -These safeguards ensure that concurrent uploads deliver performance benefits without compromising stability. - -To learn more and get started, follow [MinIO and S3-compatible storage](../details/minio.md) page. - -### Interactive confirmation for the restore command - -!!! warning "Breaking change" - - Since an interactive prompt is now printed, automation and scripts must use the `-y` or `--yes` flag to bypass this confirmation. - -The `pbm restore` operation includes now an interactive confirmation prompt to reduce the risk of executing it accidentally. The command now requires explicit user approval before an operation is executed. With the new confirmation step, restores are safer and less prone to human error. See some examples below: - -```bash -pbm restore --time 2026-03-31T13:23:00 -``` - -??? example "Sample output" - - ```text - Restore: 2026-03-31T13:37:06.852575976Z to point-in-time 2026-03-31T13:23:00 from '2026-03-31T13:22:06Z'  - Are you sure you want to start the restore? [y/N] y  - Starting restore 2026-03-31T13:37:06.852575976Z to point-in-time 2026-03-31T13:23:00 from '2026-03-31T13:22:06Z'................................  - ``` - -For users who are automating PBM operations, PBM CLI introduces the `-y` and `--yes` flags to force the execution of a given command without a confirmation prompt. See details in [`pbm` commands](../reference/pbm-commands.md#pbm-restore) reference. - -## Changelog - -### New features - -- [PBM-1598](https://perconadev.atlassian.net/browse/PBM-1598): Added a new configuration file setting for restore - `backup.timeouts.balancerStop` that defines a timeout value in seconds, to control how long PBM waits for the MongoDB balancer to stop when executing the admin command `_configsvrBalancerStop`. This change prevents backup and restore operations from hanging indefinitely due to extended chunk migrations. - -- [PBM-1600](https://perconadev.atlassian.net/browse/PBM-1600): We have added an interactive confirmation prompt to the `pbm restore` command. Before the restore starts, you will now have to explicitly confirm the action. This change is intended to reduce the risk of unintentionally running a restore operation. - -- [PBM-1730](https://perconadev.atlassian.net/browse/PBM-1730): Previously, if the balancer was not stopped before initiating a restore, PBM would only log an error followed by a warning from the subsequent balancer status check. While this behavior was generally acceptable for physical restores (since `mongod` is shut down later in the process), it could lead to issues during logical restores. PBM now provides clearer handling of balancer state during restore operations, reducing the risk of restore inconsistencies and improving reliability for logical restore workflows. - -### Improvement - -- [PBM-1167](https://perconadev.atlassian.net/browse/PBM-1167): Physical restore with Point-in-Time Recovery (PITR) has been enhanced to provide more consistent and flexible recovery behavior across replica set nodes. PITR oplog entries are now applied to all nodes, not just the former Primary, ensuring that all nodes have identical data files and oplog history after restore. - -- [PBM-1638](https://perconadev.atlassian.net/browse/PBM-1638): Percona Backup for MongoDB (PBM) now provides enhanced support for a backup of database with data-at-rest encryption enabled and using external KMS providers, such as KMIP or Vault. During backup operations, PBM automatically captures and stores the master encryption key identifier (for example, `security.kmip.keyIdentifier`) in the backup metadata. This enables seamless and automated restore workflows without requiring users to manually track or store the encryption key identifier externally. - -- [PBM-1639](https://perconadev.atlassian.net/browse/PBM-1639): Previously, physical restore operations were stuck if Percona Backup for MongoDB (PBM) ignored a shutdown command failure during restore. This issue has been addressed, and PBM now properly handles shutdown command failures, ensuring that restore workflows complete as expected without hanging. - -- [PBM-1653](https://perconadev.atlassian.net/browse/PBM-1653): Improved file upload performance for MinIO-compatible storage by enabling the MinIO SDK `ConcurrentStreamParts` option for parallel uploads. - -- [PBM-1703](https://perconadev.atlassian.net/browse/PBM-1703): Previously, PBM generated repeated 404 error messages in S3 storage related to `.pbm.init.pbmpart.1` objects. While these messages did not affect backup integrity, they cluttered logs and consumed storage space. PBM now suppresses these redundant error messages, resulting in cleaner S3 logs and more efficient storage usage during backup initialization. - -- [PBM-1721](https://perconadev.atlassian.net/browse/PBM-1721): Improved physical restores behavior when a restore would hang indefinitely if PBM encountered an "Unauthorized" error while attempting to shut down a `mongod` node via a non-localhost connection interface. The restore process now correctly detects this error and terminates with a descriptive message, clarifying that localhost connections are required for node shutdown when running MongoDB without authentication. This use case was added to [Known limitations for backups and restores](../features/known-limitations.md). - -## Fixed bugs - -- [PBM-1345](https://perconadev.atlassian.net/browse/PBM-1345): Fixed an issue where a PITR slicer failure on one replica set did not stop the overall PITR process. PBM now correctly stops the PITR operation when a slicer fails on any replica set, preventing incomplete or inconsistent PITR execution. - -- [PBM-1472](https://perconadev.atlassian.net/browse/PBM-1472): Fixed an issue where an extra slash in the bucket or prefix configuration caused PBM to fail to save or locate backups in storage. PBM now correctly handles such paths, ensuring reliable backup storage and discovery. - -- [PBM-1586](https://perconadev.atlassian.net/browse/PBM-1586): During backup operations, if the PBM agent crashed, the CLI process continued to wait indefinitely without returning control to the user. This behavior caused stalled sessions and required manual intervention. The issue has now been resolved. - -- [PBM-1599](https://perconadev.atlassian.net/browse/PBM-1599): Fixed an issue where the `pbm-agent` took longer to start a backup, causing `pbm-cli` to timeout and exit prematurely. Now, `pbm-cli` correctly waits for the agent to begin the backup process before proceeding. - -- [PBM-1609](https://perconadev.atlassian.net/browse/PBM-1609): Resolved an issue in restores with PITR enabled where the log incorrectly displayed “**oplog slicer disabled**” while PBM continued attempting to upload oplog slices. The restore process now correctly reflects the PITR state and avoids unnecessary oplog slice uploads. - -- [PBM-1629](https://perconadev.atlassian.net/browse/PBM-1629): Resolved an issue where backups failed because PBM miscalculated collection size when `backup.compression` was set to `none`. Backups now complete successfully with compression disabled. - -- [PBM-1648](https://perconadev.atlassian.net/browse/PBM-1648): Resolved an issue with `pbm backup --wait` where the command continued waiting even after the backup had failed, and did not return a non-zero error code. The command now correctly exits with a non-zero code when a backup failure is detected. - -- [PBM-1657](https://perconadev.atlassian.net/browse/PBM-1657): Resolved an issue in the PBM CLI that prevented the correct parsing of `mongodb+srv` URIs and returned an inaccurate error message stating “**unescaped colon in password**”, although no colon was present. The CLI now properly parses `mongodb+srv` URIs and provides an accurate error message. - -- [PBM-1683](https://perconadev.atlassian.net/browse/PBM-1683): Fixed an issue where `pbm describe-backup` reported an incorrect, inflated value for `size_uncompressed_h` on non-base incremental backups. This field now accurately reflects the uncompressed size of the incremental data rather than cumulative or bloated values. - From d6e19380f13df3e3c42204a9ee3ef4c8baacf335 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 12:44:11 +0530 Subject: [PATCH 131/212] PBM-1668-configurable commitQuorum-option --- docs/reference/restore-options.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 6747acbe..e65e0b10 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -99,4 +99,20 @@ This is useful when you want to: - Prevent restore operations from waiting indefinitely - Enforce time limits in automated workflows -- Fail fast if the balancer cannot be stopped \ No newline at end of file +- Fail fast if the balancer cannot be stopped + +### restore.indexCommitQuorum + +Specifies how many data-bearing voting nodes must complete an index build before the primary node commits the index during a restore operation. + +By default, Percona Backup for MongoDB waits for all voting members (`votingMembers`) to complete index building. In large replica sets, this can introduce significant delays if some nodes build indexes slower than others, blocking the entire restore process. + +Aligning with the MongoDB `[setIndexCommitQuorum](https://www.mongodb.com/docs/manual/reference/command/setIndexCommitQuorum/)` command specifications, you can optimize restore performance by setting this option to a lower quorum threshold. + +The following values are supported: + +`votingMembers` (Default): The primary waits for all data-bearing voting members to complete the index build. + +`majority`: The primary commits the index as soon as a simple majority of data-bearing voting members have completed the build. This is recommended for large replica sets to prevent lagging nodes from delaying the restore process. + +: A specific number of data-bearing voting nodes (e.g., 3) that must complete the index build. The integer value must be greater than or equal to 0. \ No newline at end of file From 79febd66d588d3974776b84ffc129c5de6b2a98a Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 13:46:56 +0530 Subject: [PATCH 132/212] Update restore-options.md --- docs/reference/restore-options.md | 64 ++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 2 deletions(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index e65e0b10..9274d5ed 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -103,7 +103,9 @@ This is useful when you want to: ### restore.indexCommitQuorum -Specifies how many data-bearing voting nodes must complete an index build before the primary node commits the index during a restore operation. +*Type:* int + +Specifies how many data-bearing voting nodes must complete an index build before the primary node commits the index during a **logical restore** operation. By default, Percona Backup for MongoDB waits for all voting members (`votingMembers`) to complete index building. In large replica sets, this can introduce significant delays if some nodes build indexes slower than others, blocking the entire restore process. @@ -115,4 +117,62 @@ The following values are supported: `majority`: The primary commits the index as soon as a simple majority of data-bearing voting members have completed the build. This is recommended for large replica sets to prevent lagging nodes from delaying the restore process. -: A specific number of data-bearing voting nodes (e.g., 3) that must complete the index build. The integer value must be greater than or equal to 0. \ No newline at end of file +``: A specific number of data-bearing voting nodes (e.g., 3) that must complete the index build. The integer value must be greater than or equal to 0. + +```sh +pbm config --set restore.indexCommitQuorum=majority –wait +``` + +??? example "Example" + + 1. Run the folllowing command: + + ```sh + pbm config --set restore.indexCommitQuorum=majority –wait + ``` + + 2. Confirm command was successful: + + ```sh + pbm config --set restore.indexCommitQuorum=majority –wait + [restore.indexCommitQuorum=majority] + ``` + + 3. Confirm `CommitQuorum` appears in pbm config with the `pbm config` command: + + ```yaml + [root@rs101 log]# pbm config  + storage:  +   type: s3  +   s3:  +     region: us-east-1  +     endpointUrl: http://minio:9000  +     forcePathStyle: true  +     bucket: bcp  +     prefix: pbme2etest  +     credentials:  +       access-key-id: '***'  +       secret-access-key: '***'  +     maxUploadParts: 10000  +     storageClass: STANDARD  +     insecureSkipTLSVerify: false  + pitr:  +   enabled: false  +   compression: s2  + backup:  +   oplogSpanMin: 0  +   compression: s2  + restore:  +   indexCommitQuorum: majority  + ``` + + 4. Initiate and wait for pbm restore to complete with `pbm restore pbm restore 2026-05-12T13:28:07Z` + + + 5. Confirm commit is reflected on mongodb's logs: + + ```bash + {"t":{"$date":"2026-05-12T14:46:13.877+00:00"},"s":"I", "c":"INDEX", "id":20438, "ctx":"conn73","msg":"Index build: registering","attr":{"buildUUID":{"uuid":{"$uuid":"86a30d2b-182d-4f84-9520-02620719f6b6"}},"namespace":"test.col2","collectionUUID":{"uuid":{"$uuid":"a62f0ccb-beb4-4d70-91bb-aed73caa7cc5"}},"indexes":1,"firstIndex":{"name":"test_index"},"command":{"createIndexes":"col2","v":2,"indexes":[{"key":{"field":1},"name":"test_index","unique":true,"ns":"test.col2"}],"ignoreUnknownIndexOptions":true,"commitQuorum":"majority"}}} + + {"t":{"$date":"2026-05-12T14:46:13.924+00:00"},"s":"I", "c":"STORAGE", "id":3856201, "ctx":"conn490","msg":"Index build: commit quorum satisfied","attr":{"indexBuildEntry":{"_id":{"$uuid":"86a30d2b-182d-4f84-9520-02620719f6b6"},"collectionUUID":{"$uuid":"a62f0ccb-beb4-4d70-91bb-aed73caa7cc5"},"commitQuorum":"majority","indexNames":["test_index"],"commitReadyMembers":["rs101:27017","rs103:27017"]}}} + ``` \ No newline at end of file From 7b8d0f5f92411aa8dd4b2c124e4bd6d57b36a742 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 13:52:31 +0530 Subject: [PATCH 133/212] Update restore-options.md --- docs/reference/restore-options.md | 58 +++++++++++++++---------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 9274d5ed..20ced4ef 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -133,38 +133,38 @@ pbm config --set restore.indexCommitQuorum=majority –wait 2. Confirm command was successful: - ```sh - pbm config --set restore.indexCommitQuorum=majority –wait - [restore.indexCommitQuorum=majority] - ``` + ```sh + pbm config --set restore.indexCommitQuorum=majority –wait + [restore.indexCommitQuorum=majority] + ``` 3. Confirm `CommitQuorum` appears in pbm config with the `pbm config` command: - ```yaml - [root@rs101 log]# pbm config  - storage:  -   type: s3  -   s3:  -     region: us-east-1  -     endpointUrl: http://minio:9000  -     forcePathStyle: true  -     bucket: bcp  -     prefix: pbme2etest  -     credentials:  -       access-key-id: '***'  -       secret-access-key: '***'  -     maxUploadParts: 10000  -     storageClass: STANDARD  -     insecureSkipTLSVerify: false  - pitr:  -   enabled: false  -   compression: s2  - backup:  -   oplogSpanMin: 0  -   compression: s2  - restore:  -   indexCommitQuorum: majority  - ``` + ```yaml + [root@rs101 log]# pbm config  + storage:  +   type: s3  +   s3:  +     region: us-east-1  +     endpointUrl: http://minio:9000  +     forcePathStyle: true  +     bucket: bcp  +     prefix: pbme2etest  +     credentials:  +       access-key-id: '***'  +       secret-access-key: '***'  +     maxUploadParts: 10000  +     storageClass: STANDARD  +     insecureSkipTLSVerify: false  + pitr:  +   enabled: false  +   compression: s2  + backup:  +   oplogSpanMin: 0  +   compression: s2  + restore:  +   indexCommitQuorum: majority  + ``` 4. Initiate and wait for pbm restore to complete with `pbm restore pbm restore 2026-05-12T13:28:07Z` From 94f2f1b7e606f7a6c8e55b965a66711b445823e5 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 13:57:24 +0530 Subject: [PATCH 134/212] Updated PBM commands file as well --- docs/reference/pbm-commands.md | 3 +-- docs/reference/restore-options.md | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/reference/pbm-commands.md b/docs/reference/pbm-commands.md index f1c54b23..9e8930a6 100644 --- a/docs/reference/pbm-commands.md +++ b/docs/reference/pbm-commands.md @@ -112,6 +112,7 @@ The command accepts the following flags: | `-w`, `--wait` | Wait for resync of the backup list with the storage to finish. You can only use this flag together with the `--force-resync` flag.| | `--wait-time` | The time to wait for PBM to report the status of the resync execution. Use this flag together with the `--wait` flag. You can specify the duration in minutes or hours (for example 5m, 1h).

When not set, PBM waits till the command executes.

If it takes longer than the defined waiting time to execute the command, PBM prints the `Operation is in progress. Check pbm status and logs` error message and unblocks the shell session. The `pbm-agent` continues to execute the command enabling you to track its progress via the `pbm status` command. Available starting with version 2.6.0.| | `--include-restores`| Resync the full restore metadata history from the storage. Use this flag together with the `--force-resync` flag. Note that retrieving the full restore history may affect resync performance. Available starting with version 2.10.0. | +| `--set restore.indexCommitQuorum`| Specifies how many data-bearing voting nodes must complete an index build before the primary node commits the index during a **logical restore** operation.| ??? "PBM configuration output" @@ -1119,8 +1120,6 @@ The command accepts the following flags: } ``` - - ## pbm version Shows the version of Percona Backup for MongoDB. diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 20ced4ef..3c4c0346 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -168,7 +168,6 @@ pbm config --set restore.indexCommitQuorum=majority –wait 4. Initiate and wait for pbm restore to complete with `pbm restore pbm restore 2026-05-12T13:28:07Z` - 5. Confirm commit is reflected on mongodb's logs: ```bash From aa143bf2900f7be2a42cf41d84bba1ad6595b972 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 14:45:11 +0530 Subject: [PATCH 135/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 3c4c0346..0333945a 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -103,7 +103,7 @@ This is useful when you want to: ### restore.indexCommitQuorum -*Type:* int +*Type*: string or int Specifies how many data-bearing voting nodes must complete an index build before the primary node commits the index during a **logical restore** operation. From a95db43a50a8f5d84925836289f319b2fac314c7 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 14:45:38 +0530 Subject: [PATCH 136/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 0333945a..6d80a4d4 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -134,7 +134,7 @@ pbm config --set restore.indexCommitQuorum=majority –wait 2. Confirm command was successful: ```sh - pbm config --set restore.indexCommitQuorum=majority –wait + pbm config --set restore.indexCommitQuorum=majority [restore.indexCommitQuorum=majority] ``` From 38c2b7089b04359a917d0d603436bb37e6ef6765 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 14:45:57 +0530 Subject: [PATCH 137/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 6d80a4d4..12d7d709 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -138,8 +138,7 @@ pbm config --set restore.indexCommitQuorum=majority –wait [restore.indexCommitQuorum=majority] ``` - 3. Confirm `CommitQuorum` appears in pbm config with the `pbm config` command: - + 3. Confirm `indexCommitQuorum` appears in PBM config with the `pbm config` command: ```yaml [root@rs101 log]# pbm config  storage:  From 6f555261951df8a753c6e881fda65504936c99ed Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 14:46:14 +0530 Subject: [PATCH 138/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 12d7d709..23027f30 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -165,8 +165,7 @@ pbm config --set restore.indexCommitQuorum=majority –wait   indexCommitQuorum: majority  ``` - 4. Initiate and wait for pbm restore to complete with `pbm restore pbm restore 2026-05-12T13:28:07Z` - + 4. Initiate and wait for PBM restore to complete with `pbm restore -w 2026-05-12T13:28:07Z` 5. Confirm commit is reflected on mongodb's logs: ```bash From 558a42eb54163c4bd96d24bf166dd49cbd0844d2 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 14:46:39 +0530 Subject: [PATCH 139/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/pbm-commands.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/reference/pbm-commands.md b/docs/reference/pbm-commands.md index 9e8930a6..3ecc7380 100644 --- a/docs/reference/pbm-commands.md +++ b/docs/reference/pbm-commands.md @@ -112,7 +112,6 @@ The command accepts the following flags: | `-w`, `--wait` | Wait for resync of the backup list with the storage to finish. You can only use this flag together with the `--force-resync` flag.| | `--wait-time` | The time to wait for PBM to report the status of the resync execution. Use this flag together with the `--wait` flag. You can specify the duration in minutes or hours (for example 5m, 1h).

When not set, PBM waits till the command executes.

If it takes longer than the defined waiting time to execute the command, PBM prints the `Operation is in progress. Check pbm status and logs` error message and unblocks the shell session. The `pbm-agent` continues to execute the command enabling you to track its progress via the `pbm status` command. Available starting with version 2.6.0.| | `--include-restores`| Resync the full restore metadata history from the storage. Use this flag together with the `--force-resync` flag. Note that retrieving the full restore history may affect resync performance. Available starting with version 2.10.0. | -| `--set restore.indexCommitQuorum`| Specifies how many data-bearing voting nodes must complete an index build before the primary node commits the index during a **logical restore** operation.| ??? "PBM configuration output" From 721ac4c6337b558494918f947a91c2004e22f699 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 14:47:01 +0530 Subject: [PATCH 140/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 23027f30..99eea04f 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -120,7 +120,7 @@ The following values are supported: ``: A specific number of data-bearing voting nodes (e.g., 3) that must complete the index build. The integer value must be greater than or equal to 0. ```sh -pbm config --set restore.indexCommitQuorum=majority –wait +pbm config --set restore.indexCommitQuorum=majority ``` ??? example "Example" From ec538e7d0d41d57ef87bb5dddeea26c8a6398e73 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 14:47:15 +0530 Subject: [PATCH 141/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 99eea04f..477218e7 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -109,7 +109,7 @@ Specifies how many data-bearing voting nodes must complete an index build before By default, Percona Backup for MongoDB waits for all voting members (`votingMembers`) to complete index building. In large replica sets, this can introduce significant delays if some nodes build indexes slower than others, blocking the entire restore process. -Aligning with the MongoDB `[setIndexCommitQuorum](https://www.mongodb.com/docs/manual/reference/command/setIndexCommitQuorum/)` command specifications, you can optimize restore performance by setting this option to a lower quorum threshold. +Aligning with the MongoDB [setIndexCommitQuorum](https://www.mongodb.com/docs/manual/reference/command/setIndexCommitQuorum/) command specifications, you can optimize restore performance by setting this option to a lower quorum threshold. The following values are supported: From 522c56e7c2db75fedde644933f413e3172887664 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 14:47:26 +0530 Subject: [PATCH 142/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 477218e7..0233a7d7 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -125,7 +125,7 @@ pbm config --set restore.indexCommitQuorum=majority ??? example "Example" - 1. Run the folllowing command: + 1. Run the following command: ```sh pbm config --set restore.indexCommitQuorum=majority –wait From 8aba453ef17b8a6d160ca30d56681c65961a980a Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 14:47:44 +0530 Subject: [PATCH 143/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 0233a7d7..fd92fc3e 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -140,7 +140,7 @@ pbm config --set restore.indexCommitQuorum=majority 3. Confirm `indexCommitQuorum` appears in PBM config with the `pbm config` command: ```yaml - [root@rs101 log]# pbm config  + [root@rs101 log]# pbm config storage:    type: s3    s3:  From 4fbc4385c501ff7a38c32917abb667966b59fddc Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 14:47:56 +0530 Subject: [PATCH 144/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index fd92fc3e..75ad446f 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -128,7 +128,7 @@ pbm config --set restore.indexCommitQuorum=majority 1. Run the following command: ```sh - pbm config --set restore.indexCommitQuorum=majority –wait + pbm config --set restore.indexCommitQuorum=majority ``` 2. Confirm command was successful: From 9cacdf60617fa07c5a48f699e20464ade0b59471 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 15:09:22 +0530 Subject: [PATCH 145/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 75ad446f..8c6ce527 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -109,7 +109,7 @@ Specifies how many data-bearing voting nodes must complete an index build before By default, Percona Backup for MongoDB waits for all voting members (`votingMembers`) to complete index building. In large replica sets, this can introduce significant delays if some nodes build indexes slower than others, blocking the entire restore process. -Aligning with the MongoDB [setIndexCommitQuorum](https://www.mongodb.com/docs/manual/reference/command/setIndexCommitQuorum/) command specifications, you can optimize restore performance by setting this option to a lower quorum threshold. +Following MongoDB index build commit quorum semantics, you can optimize restore performance by setting this option to a lower quorum threshold. The following values are supported: From 070aa1fff667f8021fc62b9de6ba52b912d0d01d Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 15:09:42 +0530 Subject: [PATCH 146/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 8c6ce527..ddfb2b81 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -103,7 +103,8 @@ This is useful when you want to: ### restore.indexCommitQuorum -*Type*: string or int +*Type*: string or int
+*Default*: votingMembers Specifies how many data-bearing voting nodes must complete an index build before the primary node commits the index during a **logical restore** operation. From 959eb5cd2ba1070e1462c1dc4574362c1f1a2d4a Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 15:09:58 +0530 Subject: [PATCH 147/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index ddfb2b81..63948fb1 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -128,9 +128,9 @@ pbm config --set restore.indexCommitQuorum=majority 1. Run the following command: - ```sh - pbm config --set restore.indexCommitQuorum=majority - ``` + ```sh + pbm config --set restore.indexCommitQuorum=majority + ``` 2. Confirm command was successful: From 64268bcf29d19bb1e4a4a129aa30e32a1d0683e7 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 15:10:13 +0530 Subject: [PATCH 148/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 50 +++++++++++++++---------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 63948fb1..fbc36fec 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -140,31 +140,31 @@ pbm config --set restore.indexCommitQuorum=majority ``` 3. Confirm `indexCommitQuorum` appears in PBM config with the `pbm config` command: - ```yaml - [root@rs101 log]# pbm config - storage:  -   type: s3  -   s3:  -     region: us-east-1  -     endpointUrl: http://minio:9000  -     forcePathStyle: true  -     bucket: bcp  -     prefix: pbme2etest  -     credentials:  -       access-key-id: '***'  -       secret-access-key: '***'  -     maxUploadParts: 10000  -     storageClass: STANDARD  -     insecureSkipTLSVerify: false  - pitr:  -   enabled: false  -   compression: s2  - backup:  -   oplogSpanMin: 0  -   compression: s2  - restore:  -   indexCommitQuorum: majority  - ``` + ```text + $ pbm config + storage: + type: s3 + s3: + region: us-east-1 + endpointUrl: http://minio:9000 + forcePathStyle: true + bucket: bcp + prefix: pbme2etest + credentials: + access-key-id: '***' + secret-access-key: '***' + maxUploadParts: 10000 + storageClass: STANDARD + insecureSkipTLSVerify: false + pitr: + enabled: false + compression: s2 + backup: + oplogSpanMin: 0 + compression: s2 + restore: + indexCommitQuorum: majority + ``` 4. Initiate and wait for PBM restore to complete with `pbm restore -w 2026-05-12T13:28:07Z` 5. Confirm commit is reflected on mongodb's logs: From 51a6d1bfdff1f6c784d2f474dc514b010b68782f Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 15:10:31 +0530 Subject: [PATCH 149/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index fbc36fec..feab91b3 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -167,7 +167,7 @@ pbm config --set restore.indexCommitQuorum=majority ``` 4. Initiate and wait for PBM restore to complete with `pbm restore -w 2026-05-12T13:28:07Z` - 5. Confirm commit is reflected on mongodb's logs: + 5. Confirm commit is reflected on MongoDB's logs: ```bash {"t":{"$date":"2026-05-12T14:46:13.877+00:00"},"s":"I", "c":"INDEX", "id":20438, "ctx":"conn73","msg":"Index build: registering","attr":{"buildUUID":{"uuid":{"$uuid":"86a30d2b-182d-4f84-9520-02620719f6b6"}},"namespace":"test.col2","collectionUUID":{"uuid":{"$uuid":"a62f0ccb-beb4-4d70-91bb-aed73caa7cc5"}},"indexes":1,"firstIndex":{"name":"test_index"},"command":{"createIndexes":"col2","v":2,"indexes":[{"key":{"field":1},"name":"test_index","unique":true,"ns":"test.col2"}],"ignoreUnknownIndexOptions":true,"commitQuorum":"majority"}}} From 069d9336abb52f0c06a3af43770817eeb9e415a1 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 15:25:34 +0530 Subject: [PATCH 150/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index feab91b3..58701fb9 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -104,7 +104,7 @@ This is useful when you want to: ### restore.indexCommitQuorum *Type*: string or int
-*Default*: votingMembers +*Default*: `votingMembers` Specifies how many data-bearing voting nodes must complete an index build before the primary node commits the index during a **logical restore** operation. From 85f4abbab8d8692b9bc70c212a29ad76757d0993 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 15:25:49 +0530 Subject: [PATCH 151/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 58701fb9..dbe1d97c 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -169,8 +169,8 @@ pbm config --set restore.indexCommitQuorum=majority 4. Initiate and wait for PBM restore to complete with `pbm restore -w 2026-05-12T13:28:07Z` 5. Confirm commit is reflected on MongoDB's logs: - ```bash - {"t":{"$date":"2026-05-12T14:46:13.877+00:00"},"s":"I", "c":"INDEX", "id":20438, "ctx":"conn73","msg":"Index build: registering","attr":{"buildUUID":{"uuid":{"$uuid":"86a30d2b-182d-4f84-9520-02620719f6b6"}},"namespace":"test.col2","collectionUUID":{"uuid":{"$uuid":"a62f0ccb-beb4-4d70-91bb-aed73caa7cc5"}},"indexes":1,"firstIndex":{"name":"test_index"},"command":{"createIndexes":"col2","v":2,"indexes":[{"key":{"field":1},"name":"test_index","unique":true,"ns":"test.col2"}],"ignoreUnknownIndexOptions":true,"commitQuorum":"majority"}}} + ```bash + {"t":{"$date":"2026-05-12T14:46:13.877+00:00"},"s":"I", "c":"INDEX", "id":20438, "ctx":"conn73","msg":"Index build: registering","attr":{"buildUUID":{"uuid":{"$uuid":"86a30d2b-182d-4f84-9520-02620719f6b6"}},"namespace":"test.col2","collectionUUID":{"uuid":{"$uuid":"a62f0ccb-beb4-4d70-91bb-aed73caa7cc5"}},"indexes":1,"firstIndex":{"name":"test_index"},"command":{"createIndexes":"col2","v":2,"indexes":[{"key":{"field":1},"name":"test_index","unique":true,"ns":"test.col2"}],"ignoreUnknownIndexOptions":true,"commitQuorum":"majority"}}} - {"t":{"$date":"2026-05-12T14:46:13.924+00:00"},"s":"I", "c":"STORAGE", "id":3856201, "ctx":"conn490","msg":"Index build: commit quorum satisfied","attr":{"indexBuildEntry":{"_id":{"$uuid":"86a30d2b-182d-4f84-9520-02620719f6b6"},"collectionUUID":{"$uuid":"a62f0ccb-beb4-4d70-91bb-aed73caa7cc5"},"commitQuorum":"majority","indexNames":["test_index"],"commitReadyMembers":["rs101:27017","rs103:27017"]}}} - ``` \ No newline at end of file + {"t":{"$date":"2026-05-12T14:46:13.924+00:00"},"s":"I", "c":"STORAGE", "id":3856201, "ctx":"conn490","msg":"Index build: commit quorum satisfied","attr":{"indexBuildEntry":{"_id":{"$uuid":"86a30d2b-182d-4f84-9520-02620719f6b6"},"collectionUUID":{"$uuid":"a62f0ccb-beb4-4d70-91bb-aed73caa7cc5"},"commitQuorum":"majority","indexNames":["test_index"],"commitReadyMembers":["rs101:27017","rs103:27017"]}}} + ``` \ No newline at end of file From 410450300dd5e405e9eb35a01d27784977aea7b2 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 15:29:34 +0530 Subject: [PATCH 152/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index dbe1d97c..ac924f94 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -132,11 +132,11 @@ pbm config --set restore.indexCommitQuorum=majority pbm config --set restore.indexCommitQuorum=majority ``` - 2. Confirm command was successful: + 2. Confirm the value was set: ```sh - pbm config --set restore.indexCommitQuorum=majority - [restore.indexCommitQuorum=majority] + pbm config restore.indexCommitQuorum + majority ``` 3. Confirm `indexCommitQuorum` appears in PBM config with the `pbm config` command: From e5dae065f9b438c1405c1d7d572f7f0d785123a5 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 15:37:12 +0530 Subject: [PATCH 153/212] Update restore-options.md --- docs/reference/restore-options.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index ac924f94..f8c1f144 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -135,8 +135,9 @@ pbm config --set restore.indexCommitQuorum=majority 2. Confirm the value was set: ```sh - pbm config restore.indexCommitQuorum + pbm config restore.indexCommitQuorum= majority + [restore.indexCommitQuorum=majority] ``` 3. Confirm `indexCommitQuorum` appears in PBM config with the `pbm config` command: From 50931ca59a27f3439fa7f6ace7d48c3545090345 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 15:38:11 +0530 Subject: [PATCH 154/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index f8c1f144..bce5d2a9 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -118,7 +118,7 @@ The following values are supported: `majority`: The primary commits the index as soon as a simple majority of data-bearing voting members have completed the build. This is recommended for large replica sets to prevent lagging nodes from delaying the restore process. -``: A specific number of data-bearing voting nodes (e.g., 3) that must complete the index build. The integer value must be greater than or equal to 0. +``: A specific number of data-bearing voting members (e.g., 3) that must complete the index build. The integer value must be between 0 and the number of data-bearing voting members (0 commits immediately). ```sh pbm config --set restore.indexCommitQuorum=majority From 5d07402dcbc927a57da49748b6d89e2ab17fd629 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 15:38:31 +0530 Subject: [PATCH 155/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index bce5d2a9..4d4bba06 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -141,6 +141,7 @@ pbm config --set restore.indexCommitQuorum=majority ``` 3. Confirm `indexCommitQuorum` appears in PBM config with the `pbm config` command: + ```text $ pbm config storage: From 2e14e608fb08f12466e0348281447c7685848174 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 15:38:46 +0530 Subject: [PATCH 156/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/restore-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 4d4bba06..63d192ba 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -171,7 +171,7 @@ pbm config --set restore.indexCommitQuorum=majority 4. Initiate and wait for PBM restore to complete with `pbm restore -w 2026-05-12T13:28:07Z` 5. Confirm commit is reflected on MongoDB's logs: - ```bash + ```json {"t":{"$date":"2026-05-12T14:46:13.877+00:00"},"s":"I", "c":"INDEX", "id":20438, "ctx":"conn73","msg":"Index build: registering","attr":{"buildUUID":{"uuid":{"$uuid":"86a30d2b-182d-4f84-9520-02620719f6b6"}},"namespace":"test.col2","collectionUUID":{"uuid":{"$uuid":"a62f0ccb-beb4-4d70-91bb-aed73caa7cc5"}},"indexes":1,"firstIndex":{"name":"test_index"},"command":{"createIndexes":"col2","v":2,"indexes":[{"key":{"field":1},"name":"test_index","unique":true,"ns":"test.col2"}],"ignoreUnknownIndexOptions":true,"commitQuorum":"majority"}}} {"t":{"$date":"2026-05-12T14:46:13.924+00:00"},"s":"I", "c":"STORAGE", "id":3856201, "ctx":"conn490","msg":"Index build: commit quorum satisfied","attr":{"indexBuildEntry":{"_id":{"$uuid":"86a30d2b-182d-4f84-9520-02620719f6b6"},"collectionUUID":{"$uuid":"a62f0ccb-beb4-4d70-91bb-aed73caa7cc5"},"commitQuorum":"majority","indexNames":["test_index"],"commitReadyMembers":["rs101:27017","rs103:27017"]}}} From 692b0e92d573f8a2150158a70c306e6c1bcec89d Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 16:35:58 +0530 Subject: [PATCH 157/212] Update restore-options.md --- docs/reference/restore-options.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 63d192ba..d6ab299b 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -169,10 +169,4 @@ pbm config --set restore.indexCommitQuorum=majority ``` 4. Initiate and wait for PBM restore to complete with `pbm restore -w 2026-05-12T13:28:07Z` - 5. Confirm commit is reflected on MongoDB's logs: - - ```json - {"t":{"$date":"2026-05-12T14:46:13.877+00:00"},"s":"I", "c":"INDEX", "id":20438, "ctx":"conn73","msg":"Index build: registering","attr":{"buildUUID":{"uuid":{"$uuid":"86a30d2b-182d-4f84-9520-02620719f6b6"}},"namespace":"test.col2","collectionUUID":{"uuid":{"$uuid":"a62f0ccb-beb4-4d70-91bb-aed73caa7cc5"}},"indexes":1,"firstIndex":{"name":"test_index"},"command":{"createIndexes":"col2","v":2,"indexes":[{"key":{"field":1},"name":"test_index","unique":true,"ns":"test.col2"}],"ignoreUnknownIndexOptions":true,"commitQuorum":"majority"}}} - - {"t":{"$date":"2026-05-12T14:46:13.924+00:00"},"s":"I", "c":"STORAGE", "id":3856201, "ctx":"conn490","msg":"Index build: commit quorum satisfied","attr":{"indexBuildEntry":{"_id":{"$uuid":"86a30d2b-182d-4f84-9520-02620719f6b6"},"collectionUUID":{"$uuid":"a62f0ccb-beb4-4d70-91bb-aed73caa7cc5"},"commitQuorum":"majority","indexNames":["test_index"],"commitReadyMembers":["rs101:27017","rs103:27017"]}}} ``` \ No newline at end of file From 699b05922472f8f6e644ecdc6cbf704ef7c848a5 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 16:46:37 +0530 Subject: [PATCH 158/212] Update restore-options.md --- docs/reference/restore-options.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index d6ab299b..67d54943 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -168,5 +168,4 @@ pbm config --set restore.indexCommitQuorum=majority indexCommitQuorum: majority ``` - 4. Initiate and wait for PBM restore to complete with `pbm restore -w 2026-05-12T13:28:07Z` - ``` \ No newline at end of file + 4. Initiate and wait for PBM restore to complete with `pbm restore -w 2026-05-12T13:28:07Z` \ No newline at end of file From 8d2c78b6f58c3869760bd671c44db83c271aae1a Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 16:48:42 +0530 Subject: [PATCH 159/212] Update restore-options.md --- docs/reference/restore-options.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 67d54943..c94fa252 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -140,7 +140,7 @@ pbm config --set restore.indexCommitQuorum=majority [restore.indexCommitQuorum=majority] ``` - 3. Confirm `indexCommitQuorum` appears in PBM config with the `pbm config` command: + 3. Confirm `indexCommitQuorum` appears in the PBM config with the following command: ```text $ pbm config @@ -168,4 +168,8 @@ pbm config --set restore.indexCommitQuorum=majority indexCommitQuorum: majority ``` - 4. Initiate and wait for PBM restore to complete with `pbm restore -w 2026-05-12T13:28:07Z` \ No newline at end of file + 4. Start the restore and wait for it to complete: + + ```sh + pbm restore -w 2026-05-12T13:28:07Z + ``` \ No newline at end of file From 9476c49ce59d4849dde06240872d28c8ae4cc006 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 16:53:18 +0530 Subject: [PATCH 160/212] Update restore-options.md --- docs/reference/restore-options.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index c94fa252..87ca25c8 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -170,6 +170,6 @@ pbm config --set restore.indexCommitQuorum=majority 4. Start the restore and wait for it to complete: - ```sh - pbm restore -w 2026-05-12T13:28:07Z - ``` \ No newline at end of file + ```sh + pbm restore -w 2026-05-12T13:28:07Z + ``` \ No newline at end of file From 18565b249f5c14437575aaa67852b74277330f9d Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Mon, 15 Jun 2026 17:01:32 +0530 Subject: [PATCH 161/212] Update restore-options.md --- docs/reference/restore-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 87ca25c8..46d01923 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -118,7 +118,7 @@ The following values are supported: `majority`: The primary commits the index as soon as a simple majority of data-bearing voting members have completed the build. This is recommended for large replica sets to prevent lagging nodes from delaying the restore process. -``: A specific number of data-bearing voting members (e.g., 3) that must complete the index build. The integer value must be between 0 and the number of data-bearing voting members (0 commits immediately). +``: A specific number of data-bearing voting members (e.g., 3) that must complete the index build. The integer value must be between 1 and the number of data-bearing voting members. A value of 1 means the primary commits immediately after it finishes. ```sh pbm config --set restore.indexCommitQuorum=majority From a6b5c84e269089ba7388ecc11d053125738a7b3b Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 12:53:21 +0530 Subject: [PATCH 162/212] added SSE and SSE_C sections --- docs/details/oci-storage.md | 127 +++++++++++++++++++++++++++++++++++- 1 file changed, 126 insertions(+), 1 deletion(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 651f7ca7..c8b76125 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -366,4 +366,129 @@ pbm list 2026-06-12T07:11:31Z logical no no 2026-06-12T07:11:46 PITR : - ``` \ No newline at end of file + ``` + +## Server-side encryption + +PBM supports OCI Object Storage server-side encryption using either OCI Key Management Service (KMS) keys or customer-provided encryption keys (SSE-C). These methods are mutually exclusive. Configure only one encryption mode at a time. + +### SSE with OCI KMS + +Use OCI KMS encryption when you want OCI to manage encryption and key lifecycle through OCI Vault and Key Management. + +#### Optional: Configure SSE With KMS + +Use this when testing `PBM OCI serverSideEncryption.kmsKeyID` with `userPrincipal` authentication. Create an OCI Vault key in the same region as the Object Storage bucket, then allow both the PBM user principal and the regional Object Storage service to use the key. + +##### Create a KMS key + +In the OCI Console, navigate to: + +**Identity & Security → Key Management & Secret Management → Vault** + +Open an existing vault or create a new vault in `$BUCKET_REGION`, then select: + +**Master Encryption Keys → Create Key** + +Configure the key with the following settings: + +- Algorithm: AES +- Key length: 256 bits + +Copy the generated key OCID. + +Export the key OCID and OCI IAM group name: + +```sh +export KMS_KEY_OCID="ocid1.key.oc1.eu-frankfurt-1.envbichxaaexg.abtheljs4mzstpe57rdbzhcgy3b2hhbteddpwktrhhtpmsorbm4retjoh33a" +export OCI_GROUP_NAME="Administrators" +export KMS_POLICY_NAME="pbm-oci-kms-$BUCKET_REGION" +``` + +If your tenancy uses identity domains, specify the group name in identity-domain-qualified format: + +```sh +export OCI_GROUP_NAME="'Default'/''" +``` + +##### Create IAM policies for KMS access + +Create a policy that allows both the PBM user group and the regional Object Storage service to use the KMS key. + +The object access statement is only required if the OCI group does not already have Object Storage permissions in the target compartment. + +```sh +export KMS_OBJECT_POLICY_STATEMENT="Allow group $OCI_GROUP_NAME to manage object-family in compartment $COMPARTMENT_NAME" +export KMS_USER_POLICY_STATEMENT="Allow group $OCI_GROUP_NAME to use keys in compartment $COMPARTMENT_NAME" +export KMS_OBJECTSTORAGE_POLICY_STATEMENT="Allow service objectstorage-$BUCKET_REGION to use keys in compartment $COMPARTMENT_NAME" + +oci iam policy create \ + --region "$HOME_REGION" \ + --compartment-id "$TENANCY_OCID" \ + --name "$KMS_POLICY_NAME" \ + --description "Allow PBM user principal and Object Storage to use KMS keys in $BUCKET_REGION" \ + --statements "[\"$KMS_OBJECT_POLICY_STATEMENT\",\"$KMS_USER_POLICY_STATEMENT\",\"$KMS_OBJECTSTORAGE_POLICY_STATEMENT\"]" +``` + +!!! note + Wait 1–2 minutes for OCI IAM policy propagation before applying the PBM configuration. + + Without the Object Storage service policy, PBM uploads fail with `NotAuthorizedOrFoundKmsKey` during `CreateMultipartUpload` operations. + +##### Configure PBM + +Add the following configuration to the OCI storage configuration: + +```yaml +serverSideEncryption: + kmsKeyID: +``` + +!!! warning + Do not configure `sseCustomerKey` together with `kmsKeyID`. + + PBM treats OCI KMS encryption and SSE-C as mutually exclusive options. + +### SSE-C (Customer-Provided Encryption Keys) + +Use Server-Side Encryption with Customer-Provided Keys (SSE-C) when you want full control of the encryption key material used to encrypt backup objects. + +PBM sends the encryption key with every Object Storage request. OCI uses the supplied key to encrypt and decrypt objects but does not persist the key. + +#### Generate an SSE-C key + +Generate a 256-bit AES key and encode it in Base64: + +```sh +openssl rand 32 | base64 +``` + +Store the generated value securely. PBM requires the same key for all future backup, restore, and object access operations. + +#### Configure PBM + +Add the customer-provided key to the storage configuration: + +```yaml +serverSideEncryption: + sseCustomerKey: +``` + +#### Verify encryption + +After a successful backup, verify that uploaded objects are encrypted with SSE-C: + +```sh +oci os object head \ + --region "$BUCKET_REGION" \ + --namespace-name "$NAMESPACE" \ + --bucket-name "$BUCKET_NAME" \ + --name "" +``` + +The response should indicate that the object uses customer-supplied encryption keys. + +!!! warning + OCI does not retain SSE-C keys. + + If the key is lost, encrypted backup objects cannot be decrypted or restored. \ No newline at end of file From eb0c4dfee056f9af942f4e82418a10bf4ca95a12 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 12:56:36 +0530 Subject: [PATCH 163/212] Update oci-storage.md --- docs/details/oci-storage.md | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index c8b76125..0efa6e37 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -376,11 +376,7 @@ PBM supports OCI Object Storage server-side encryption using either OCI Key Mana Use OCI KMS encryption when you want OCI to manage encryption and key lifecycle through OCI Vault and Key Management. -#### Optional: Configure SSE With KMS - -Use this when testing `PBM OCI serverSideEncryption.kmsKeyID` with `userPrincipal` authentication. Create an OCI Vault key in the same region as the Object Storage bucket, then allow both the PBM user principal and the regional Object Storage service to use the key. - -##### Create a KMS key +#### Create a KMS key In the OCI Console, navigate to: @@ -411,7 +407,7 @@ If your tenancy uses identity domains, specify the group name in identity-domain export OCI_GROUP_NAME="'Default'/''" ``` -##### Create IAM policies for KMS access +#### Create IAM policies for KMS access Create a policy that allows both the PBM user group and the regional Object Storage service to use the KMS key. @@ -435,9 +431,9 @@ oci iam policy create \ Without the Object Storage service policy, PBM uploads fail with `NotAuthorizedOrFoundKmsKey` during `CreateMultipartUpload` operations. -##### Configure PBM +#### Configure PBM -Add the following configuration to the OCI storage configuration: +Add the following to the OCI storage configuration: ```yaml serverSideEncryption: @@ -445,15 +441,11 @@ serverSideEncryption: ``` !!! warning - Do not configure `sseCustomerKey` together with `kmsKeyID`. - - PBM treats OCI KMS encryption and SSE-C as mutually exclusive options. + Do not configure `sseCustomerKey` together with `kmsKeyID`. PBM treats OCI KMS encryption and SSE-C as mutually exclusive options. ### SSE-C (Customer-Provided Encryption Keys) -Use Server-Side Encryption with Customer-Provided Keys (SSE-C) when you want full control of the encryption key material used to encrypt backup objects. - -PBM sends the encryption key with every Object Storage request. OCI uses the supplied key to encrypt and decrypt objects but does not persist the key. +Use SSE-C when you want full control of the encryption key material used to encrypt backup objects. PBM sends the encryption key with every Object Storage request. OCI uses the supplied key to encrypt and decrypt objects but does not persist the key. #### Generate an SSE-C key @@ -486,9 +478,7 @@ oci os object head \ --name "" ``` -The response should indicate that the object uses customer-supplied encryption keys. +The response indicates that the object uses customer-supplied encryption keys. !!! warning - OCI does not retain SSE-C keys. - - If the key is lost, encrypted backup objects cannot be decrypted or restored. \ No newline at end of file + OCI does not retain SSE-C keys. If the key is lost, encrypted backup objects cannot be decrypted or restored. \ No newline at end of file From 1c4a07a75ed74cfd6038e0ef2e231177081b1688 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 13:15:41 +0530 Subject: [PATCH 164/212] Update oci-storage.md --- docs/details/oci-storage.md | 49 +------------------------------------ 1 file changed, 1 insertion(+), 48 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 0efa6e37..3e47c1fd 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -7,7 +7,7 @@ driver. PBM connects to OCI Object Storage using one of the following authentica | **Authentication type** | **Use when** | | --- | --- | | `userPrincipal` | PBM runs anywhere; authenticates with OCI API signing keys | -| `instancePrincipal` | PBM runs on an OCI Compute instance | +| `instancePrincipal` | PBM runs on an OCI Compute instance (see [instancePrincipal](oci-wif.md/#instanceprincipal)) | | `okeWorkloadIdentity` | PBM runs inside an OKE enhanced cluster (see [Workload Identity authentication](oci-wif.md)) | @@ -242,53 +242,6 @@ storage: sed 's/^/ /' "$KEY_FILE" ``` -### instancePrincipal - -Use this when PBM runs on an OCI Compute instance. No API -keys are required in the configuration file. - -1. Create a dynamic group that includes the compute instance: - - ```sh - oci iam dynamic-group create \ - --region "$HOME_REGION" \ - --compartment-id "$TENANCY_OCID" \ - --name pbm-instance-group \ - --description "PBM Compute instance principal" \ - --matching-rule "ANY {instance.id = ''}" - ``` - -2. Create a policy granting the dynamic group access to the bucket: - - ```sh - oci iam policy create \ - --region "$HOME_REGION" \ - --compartment-id "$TENANCY_OCID" \ - --name pbm-instance-policy \ - --description "Allow PBM instance to access backup bucket" \ - --statements "[\"Allow dynamic-group pbm-instance-group to manage objects \ - in compartment pbm-backup where target.bucket.name = ''\"]" - ``` - -3. Configure PBM: - - ```yaml - storage: - type: oci - oci: - region: - namespace: - bucket: - prefix: pbm - credentials: - type: instancePrincipal - ``` - - Wait for a few minutes for IAM policy propagation before testing the configuration. - - !!! note - IAM changes for dynamic groups can take 5 to 10 minutes to propagate. The native copy policy from the previous section is still required alongside the instance principal policy. - ## Apply the PBM configuration Apply the configuration: From ad705c59cbc06381d04d5cea9f16a5105d1bce5a Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 13:16:43 +0530 Subject: [PATCH 165/212] Update oci-wif.md --- docs/details/oci-wif.md | 64 ----------------------------------------- 1 file changed, 64 deletions(-) diff --git a/docs/details/oci-wif.md b/docs/details/oci-wif.md index 5b376af1..d041003e 100644 --- a/docs/details/oci-wif.md +++ b/docs/details/oci-wif.md @@ -6,73 +6,9 @@ Percona Backup for MongoDB (PBM) supports the default `userPrincipal` authentica | Auth type | When to use | |---|---| -|`userPrincipal`|PBM is running anywhere — on-premises, on other clouds, or on OCI| | `instancePrincipal`| PBM is running on a virtual machine inside OCI | | `okeWorkloadIdentity`| PBM is running inside an OKE enhanced cluster| -## userPrincipal - -Choose `userPrincipal` when PBM runs outside OCI, or when you want a single authentication approach that works in any environment. PBM authenticates using an OCI user account and an API signing key. - -### Before you begin - -You need: - -- An OCI user account with access to the target bucket -- An [API signing key pair :octicons-link-external-16:](https://docs.oracle.com/en-us/iaas/Content/API/Concepts/apisigningkey.htm){:target="_blank"} (private key file and its fingerprint) -- The [Oracle Cloud Identifier (OCID) :octicons-link-external-16:](https://docs.oracle.com/en-us/iaas/Content/General/Concepts/identifiers.htm#Oracle){:target="_blank"} of the user and tenancy -- The name of the OCI bucket PBM will use for backups - -### Procedure - -1. **Create an IAM policy** - - Grant the user permission to manage objects in the target bucket: - - ```sh - oci iam policy create \ - --region "$HOME_REGION" \ - --compartment-id "$TENANCY_OCID" \ - --name "$USER_POLICY_NAME" \ - --description "Allow PBM user to access $BUCKET_NAME" \ - --statements "[\"Allow group $USER_GROUP_NAME to manage objects in compartment $COMPARTMENT_NAME where target.bucket.name = '$BUCKET_NAME'\"]" - ``` - - Replace the following variables: - - | Variable | Description | - |---|---| - | `HOME_REGION` | Your tenancy's home region (e.g. `us-ashburn-1`) | - | `TENANCY_OCID` | OCID of your OCI tenancy | - | `USER_POLICY_NAME` | A name for the policy (e.g. `pbm-user-policy`) | - | `USER_GROUP_NAME` | The IAM group the PBM user belongs to | - | `COMPARTMENT_NAME` | Name of the compartment containing the bucket | - | `BUCKET_NAME` | Name of the OCI Object Storage bucket | - -2. **Configure PBM authentication** - - In your PBM configuration, set the storage type to `oci` and the credentials type to `userPrincipal`. Provide the API signing key private key in PEM format. - - ```yaml - storage: - type: oci - oci: - region: - namespace: - bucket: - prefix: - credentials: - type: userPrincipal - userPrincipal: - tenancy: - user: - fingerprint: - privateKey: | - -----BEGIN PRIVATE KEY----- - ... - -----END PRIVATE KEY----- - ``` - ## instancePrincipal Choose `instancePrincipal` when PBM runs directly on an OCI Compute instance. PBM automatically obtains OCI credentials from the instance, eliminating the need for credential files or API keys. From 5cb79cff74ccb76ded8edab35d1f23ce53ac2106 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 13:22:27 +0530 Subject: [PATCH 166/212] Update oci-storage.md --- docs/details/oci-storage.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 3e47c1fd..5f9d564b 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -10,6 +10,7 @@ driver. PBM connects to OCI Object Storage using one of the following authentica | `instancePrincipal` | PBM runs on an OCI Compute instance (see [instancePrincipal](oci-wif.md/#instanceprincipal)) | | `okeWorkloadIdentity` | PBM runs inside an OKE enhanced cluster (see [Workload Identity authentication](oci-wif.md)) | +For identity based authentication methods, see the sections ([instancePrincipal](oci-wif.md/#instanceprincipal) and [okeWorkloadIdentity](oci-wif.md#okeworkloadidentity)). ## Prerequisites From e8f2dd1aa8c34b83dae08dc4c89192f020577dc9 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 13:35:07 +0530 Subject: [PATCH 167/212] Update oci-storage.md --- docs/details/oci-storage.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 5f9d564b..c89df8ed 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -17,14 +17,10 @@ For identity based authentication methods, see the sections ([instancePrincipal] Before configuring PBM, ensure that you have: - An active OCI tenancy with at least one subscribed region -- The OCI CLI installed and configured (`oci setup config`). +- The OCI CLI installed and configured (oci setup config) if you intend to use command-line tools. You can also complete the configuration using the OCI Console. See the [OCI CLI documentation](https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/cliinstall.htm) for installation instructions -- An OCI user with permission to create compartments, buckets, - dynamic groups, and IAM policies in your tenancy -- An OCI API signing key pair: private key on the host running - PBM, public key uploaded to the OCI user - +- An OCI user with permission to create compartments, buckets, dynamic groups, and IAM policies in your tenancy Initialize the OCI CLI configuration if you have not done so already: @@ -73,7 +69,7 @@ section. All subsequent commands reference them. ```sh export HOME_REGION= # e.g. us-ashburn-1 export BUCKET_REGION= # e.g. eu-frankfurt-1 -export COMPARTMENT_NAME=pbm-backup +export COMPARTMENT_NAME= export BUCKET_NAME= ``` Retrieve and export the values PBM requires: @@ -108,6 +104,9 @@ Verify all five values are populated before continuing. An empty value means the ## Create a compartment +!!! tip "Important" + While OCI resources always require a compartment, creating a dedicated one for PBM backup resources is optional. You can use the root compartment. However, Percona recommends using a separate compartment for PBM resources to improve organization and simplify IAM policy management. + Create a compartment for PBM backup resources: ```sh From 37563b3acd2633572f5884767f144acc95444037 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 13:38:32 +0530 Subject: [PATCH 168/212] Update oci-wif.md --- docs/details/oci-wif.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/details/oci-wif.md b/docs/details/oci-wif.md index d041003e..523332ca 100644 --- a/docs/details/oci-wif.md +++ b/docs/details/oci-wif.md @@ -2,7 +2,7 @@ Percona Backup for MongoDB (PBM) supports multiple authentication methods for Oracle Cloud Infrastructure (OCI) Object Storage, including Workload Identity. With Workload Identity, PBM can access OCI resources without storing or managing API keys, reducing operational overhead and improving security. -Percona Backup for MongoDB (PBM) supports the default `userPrincipal` authentication method as well as the following Workload Identity options: +Percona Backup for MongoDB (PBM) supports the following Workload Identity options: | Auth type | When to use | |---|---| From 121d68694a9fdbc3f1b1fde10a565ac5b01e8bcd Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 13:48:42 +0530 Subject: [PATCH 169/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index c89df8ed..3c72f326 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -7,10 +7,10 @@ driver. PBM connects to OCI Object Storage using one of the following authentica | **Authentication type** | **Use when** | | --- | --- | | `userPrincipal` | PBM runs anywhere; authenticates with OCI API signing keys | -| `instancePrincipal` | PBM runs on an OCI Compute instance (see [instancePrincipal](oci-wif.md/#instanceprincipal)) | +| `instancePrincipal` | PBM runs on an OCI Compute instance (see [instancePrincipal](oci-wif.md#instanceprincipal)) | | `okeWorkloadIdentity` | PBM runs inside an OKE enhanced cluster (see [Workload Identity authentication](oci-wif.md)) | -For identity based authentication methods, see the sections ([instancePrincipal](oci-wif.md/#instanceprincipal) and [okeWorkloadIdentity](oci-wif.md#okeworkloadidentity)). +For identity-based authentication methods, see the sections ([instancePrincipal](oci-wif.md#instanceprincipal) and [okeWorkloadIdentity](oci-wif.md#okeworkloadidentity)). ## Prerequisites From 095926801a8a122e42b36390ce2577a25f3542c9 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 13:49:06 +0530 Subject: [PATCH 170/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 3c72f326..d67bb924 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -349,7 +349,7 @@ Copy the generated key OCID. Export the key OCID and OCI IAM group name: ```sh -export KMS_KEY_OCID="ocid1.key.oc1.eu-frankfurt-1.envbichxaaexg.abtheljs4mzstpe57rdbzhcgy3b2hhbteddpwktrhhtpmsorbm4retjoh33a" +export KMS_KEY_OCID="" export OCI_GROUP_NAME="Administrators" export KMS_POLICY_NAME="pbm-oci-kms-$BUCKET_REGION" ``` From 8cd7a00df3c3d48c8a0c7021a72c1bd6c4634653 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 13:49:42 +0530 Subject: [PATCH 171/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/configuration-options.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/reference/configuration-options.md b/docs/reference/configuration-options.md index 761e98c3..9cbff874 100644 --- a/docs/reference/configuration-options.md +++ b/docs/reference/configuration-options.md @@ -765,6 +765,20 @@ The fingerprint of the uploaded OCI API signing public key. The private key in PEM format that pairs with the uploaded OCI API signing public key. +### storage.oci.serverSideEncryption.kmsKeyID + +*Type*: string
+*Required*: NO + +OCI KMS key OCID to enable server-side encryption with OCI KMS. + +### storage.oci.serverSideEncryption.sseCustomerKey + +*Type*: string
+*Required*: NO + +Base64-encoded 256-bit key for SSE-C encryption. Do not set this together with `storage.oci.serverSideEncryption.kmsKeyID`. + ## Alibaba Cloud OSS storage options ```yaml From 6f6dc06342c076356adf3847e03a6aab5b329fcb Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 13:54:43 +0530 Subject: [PATCH 172/212] Update oci-storage.md --- docs/details/oci-storage.md | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index c89df8ed..873f9b37 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -10,7 +10,7 @@ driver. PBM connects to OCI Object Storage using one of the following authentica | `instancePrincipal` | PBM runs on an OCI Compute instance (see [instancePrincipal](oci-wif.md/#instanceprincipal)) | | `okeWorkloadIdentity` | PBM runs inside an OKE enhanced cluster (see [Workload Identity authentication](oci-wif.md)) | -For identity based authentication methods, see the sections ([instancePrincipal](oci-wif.md/#instanceprincipal) and [okeWorkloadIdentity](oci-wif.md#okeworkloadidentity)). +For information on identity-based authentication methods, refer to the sections on [Instance Principal](oci-wif.md/#instanceprincipal) and [OKE Workload Identity](oci-wif.md#okeworkloadidentity). ## Prerequisites @@ -160,23 +160,9 @@ PBM must be able to create, read, overwrite, and delete backup objects. Two policies are required: -**User access policy** — grants your OCI user group permission -to manage objects in the PBM compartment. Replace -`` with the name of the group containing -your PBM user: +**User access policy** — grants your OCI user group permission -```sh -oci iam policy create \ - --region "$HOME_REGION" \ - --compartment-id "$TENANCY_OCID" \ - --name pbm-user-access \ - --description "Allow PBM user group to manage backup objects" \ - --statements "[\"Allow group to manage object-family in compartment $COMPARTMENT_NAME\"]" -``` - -**Native copy policy** — grants the OCI Object Storage service -permission to copy objects internally. PBM requires this for -server-side copy operations: +**Native copy policy** — grants the OCI Object Storage service permission to copy objects internally. PBM requires this for server-side copy operations: ```sh oci iam policy create \ From f0ee176653b75354d80df9ef6761b62106118ae8 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 13:56:17 +0530 Subject: [PATCH 173/212] Update oci-storage.md --- docs/details/oci-storage.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index b747ffc8..47bbd336 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -10,7 +10,8 @@ driver. PBM connects to OCI Object Storage using one of the following authentica | `instancePrincipal` | PBM runs on an OCI Compute instance (see [instancePrincipal](oci-wif.md#instanceprincipal)) | | `okeWorkloadIdentity` | PBM runs inside an OKE enhanced cluster (see [Workload Identity authentication](oci-wif.md)) | -For identity-based authentication methods, see the sections ([instancePrincipal](oci-wif.md#instanceprincipal) and [okeWorkloadIdentity](oci-wif.md#okeworkloadidentity)). +For information on identity-based authentication methods, refer to the sections on [Instance Principal](oci-wif.md/#instanceprincipal) and [OKE Workload Identity](oci-wif.md#okeworkloadidentity). + ## Prerequisites From d88bfd87042f9d0cad1b4cafd818ee2a508ca4e5 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 13:58:25 +0530 Subject: [PATCH 174/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- mkdocs-base.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs-base.yml b/mkdocs-base.yml index 7b63fed5..2be770e3 100644 --- a/mkdocs-base.yml +++ b/mkdocs-base.yml @@ -244,7 +244,7 @@ nav: - AWS S3 storage: details/s3-storage.md - Oracle Cloud Storage: - Overview: details/oci-storage.md - - Workload Identity authentication: details/oci-wif.md + - Workload Identity authentication (OCI): details/oci-wif.md - details/minio.md - details/gcs.md - Workload Identity authentication: details/workload-identity-auth.md From 5d2162c2e1dcacad097024f5f16fb3c7be11f78d Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 13:58:50 +0530 Subject: [PATCH 175/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 47bbd336..ebbf7340 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -103,7 +103,7 @@ echo "NAMESPACE: $NAMESPACE" ``` Verify all five values are populated before continuing. An empty value means the OCI CLI is not authenticated or the variable was not set correctly. -## Create a compartment +### Create a compartment !!! tip "Important" While OCI resources always require a compartment, creating a dedicated one for PBM backup resources is optional. You can use the root compartment. However, Percona recommends using a separate compartment for PBM resources to improve organization and simplify IAM policy management. From 8d4c9863d0080d2b78937a91fe97a638864d6336 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 13:59:34 +0530 Subject: [PATCH 176/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index ebbf7340..7d3b4b45 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -275,7 +275,7 @@ pbm status Main storage: Type: OCI Region: us-ashburn-1 - Path: oci://idvufsl0apl6/rasika-bucket/pbm + Path: oci:////pbm (no snapshots or PITR chunks) ``` From 2ac6821574280e3f9ce75622cedade6c3784f4a5 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 13:59:56 +0530 Subject: [PATCH 177/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 7d3b4b45..d10cc526 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -291,9 +291,9 @@ pbm list ??? example "Output" ```sh - $ pbm backup - Starting backup "2026-06-12T07:11:31Z"..... - Backup "2026-06-12T07:11:31Z" saved to remote store (path: "oci://idvufsl0apl6/rasika-bucket/pbm") + $ pbm backup + Starting backup "2026-06-12T07:11:31Z"..... + Backup "2026-06-12T07:11:31Z" saved to remote store (path: "oci:////pbm") ``` ```sh From a136efb67d7fabb8432314c3799e788303d8e579 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 14:00:08 +0530 Subject: [PATCH 178/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index d10cc526..667917bc 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -297,15 +297,15 @@ pbm list ``` ```sh - $ pbm list - Backup snapshots: - NAME TYPE PROFILE SELECTIVE BASE RESTORE TIME - ----------------------------------------------------- - 2026-06-11T13:14:51Z logical no no 2026-06-11T13:15:07 - 2026-06-12T07:04:27Z logical no no 2026-06-12T07:04:42 - 2026-06-12T07:11:31Z logical no no 2026-06-12T07:11:46 - - PITR : + $ pbm list + Backup snapshots: + NAME TYPE PROFILE SELECTIVE BASE RESTORE TIME + ----------------------------------------------------- + 2026-06-11T13:14:51Z logical no no 2026-06-11T13:15:07 + 2026-06-12T07:04:27Z logical no no 2026-06-12T07:04:42 + 2026-06-12T07:11:31Z logical no no 2026-06-12T07:11:46 + + PITR : ``` ## Server-side encryption From 91d8076fb5b77bbdfad4700c43b25ba52683f6fc Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 14:04:10 +0530 Subject: [PATCH 179/212] Update oci-storage.md --- docs/details/oci-storage.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 667917bc..53885f17 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -7,8 +7,8 @@ driver. PBM connects to OCI Object Storage using one of the following authentica | **Authentication type** | **Use when** | | --- | --- | | `userPrincipal` | PBM runs anywhere; authenticates with OCI API signing keys | -| `instancePrincipal` | PBM runs on an OCI Compute instance (see [instancePrincipal](oci-wif.md#instanceprincipal)) | -| `okeWorkloadIdentity` | PBM runs inside an OKE enhanced cluster (see [Workload Identity authentication](oci-wif.md)) | +| `instancePrincipal` | PBM runs on an OCI Compute instance | +| `okeWorkloadIdentity` | PBM runs inside an OKE enhanced cluster | For information on identity-based authentication methods, refer to the sections on [Instance Principal](oci-wif.md/#instanceprincipal) and [OKE Workload Identity](oci-wif.md#okeworkloadidentity). From d4a5fa3500209df8552ba01029cd00758da5b9a4 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 14:04:44 +0530 Subject: [PATCH 180/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index 53885f17..dd2d27c2 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -10,7 +10,7 @@ driver. PBM connects to OCI Object Storage using one of the following authentica | `instancePrincipal` | PBM runs on an OCI Compute instance | | `okeWorkloadIdentity` | PBM runs inside an OKE enhanced cluster | -For information on identity-based authentication methods, refer to the sections on [Instance Principal](oci-wif.md/#instanceprincipal) and [OKE Workload Identity](oci-wif.md#okeworkloadidentity). +For information on identity-based authentication methods, refer to the sections on [Instance Principal](oci-wif.md#instanceprincipal) and [OKE Workload Identity](oci-wif.md#okeworkloadidentity). ## Prerequisites From 5bdee9f3c8f65d90baaea47c386071d64a7f7502 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 14:05:17 +0530 Subject: [PATCH 181/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-storage.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index dd2d27c2..daebee21 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -159,11 +159,9 @@ oci os bucket get \ PBM must be able to create, read, overwrite, and delete backup objects. -Two policies are required: +Ensure your OCI user (or the group it belongs to) has permissions to manage objects in the target bucket/compartment. -**User access policy** — grants your OCI user group permission - -**Native copy policy** — grants the OCI Object Storage service permission to copy objects internally. PBM requires this for server-side copy operations: +Additionally, PBM requires a native copy policy that grants the OCI Object Storage service permission to copy objects internally (for server-side copy operations): ```sh oci iam policy create \ From 9ba5fdddd19a0b23ac6243250c920dd69ea1c3a6 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 14:12:33 +0530 Subject: [PATCH 182/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- mkdocs-base.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs-base.yml b/mkdocs-base.yml index 2be770e3..71e6fdb7 100644 --- a/mkdocs-base.yml +++ b/mkdocs-base.yml @@ -242,7 +242,7 @@ nav: - Storage: - Remote backup storage overview: details/storage-configuration.md - AWS S3 storage: details/s3-storage.md - - Oracle Cloud Storage: + - Oracle Cloud Infrastructure (OCI) Object Storage: - Overview: details/oci-storage.md - Workload Identity authentication (OCI): details/oci-wif.md - details/minio.md From 87bd8d5f2981dd42f20d89e175806001f9975120 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 14:13:05 +0530 Subject: [PATCH 183/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/oci-wif.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/details/oci-wif.md b/docs/details/oci-wif.md index 523332ca..b58d8b1e 100644 --- a/docs/details/oci-wif.md +++ b/docs/details/oci-wif.md @@ -2,7 +2,7 @@ Percona Backup for MongoDB (PBM) supports multiple authentication methods for Oracle Cloud Infrastructure (OCI) Object Storage, including Workload Identity. With Workload Identity, PBM can access OCI resources without storing or managing API keys, reducing operational overhead and improving security. -Percona Backup for MongoDB (PBM) supports the following Workload Identity options: +Percona Backup for MongoDB (PBM) supports the following keyless (identity-based) authentication options: | Auth type | When to use | |---|---| From 8d927e2b475295ee111dc026d61ebf8840d47aad Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 14:31:03 +0530 Subject: [PATCH 184/212] Update docs/release-notes/2.15.0.md Co-authored-by: Radoslaw Szulgo --- docs/release-notes/2.15.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index 05297e2b..2aa77e8a 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -24,7 +24,7 @@ These options provide deployment flexibility while aligning with OCI security be ### Software Bills of Materials (SBOMs) -Percona Backup for MongoDB (PBM) now provides Software Bills of Materials (SBOMs) for every release. SBOMs improve transparency in the software supply chain by documenting the components and dependencies in a build. They are generated automatically as part of the release pipeline in the industry-standard `CycloneDX 1.6` format. +Percona Backup for MongoDB (PBM) now provides Software Bills of Materials (SBOMs). SBOMs improve transparency in the software supply chain by documenting the components and dependencies in a build. They are generated automatically as part of the release pipeline in the industry-standard `CycloneDX 1.6` format. SBOMs are distributed through the following channels: From b48d975e157ad05f0109d2b3ce464e14909d8766 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 14:31:21 +0530 Subject: [PATCH 185/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/release-notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes.md b/docs/release-notes.md index 4f88d99e..5d383c64 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -1,7 +1,7 @@ # {{pbm.full_name}} release notes * [{{pbm.full_name}} 2.15.0](release-notes/2.15.0.md) +* [{{pbm.full_name}} 2.14.0](release-notes/2.14.0.md) * [{{pbm.full_name}} 2.13.0](release-notes/2.13.0.md) -* [{{pbm.full_name}} 2.12.0](release-notes/2.12.0.md) * [{{pbm.full_name}} 2.11.0](release-notes/2.11.0.md) * [{{pbm.full_name}} 2.10.0](release-notes/2.10.0.md) * [{{pbm.full_name}} 2.9.1](release-notes/2.9.1.md) From 32f4242bb2a166c2797264930a140fa70ed39ddf Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 16 Jun 2026 09:05:22 +0000 Subject: [PATCH 186/212] Restore missing PBM 2.14.0 release notes page --- docs/release-notes/2.14.0.md | 87 ++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 docs/release-notes/2.14.0.md diff --git a/docs/release-notes/2.14.0.md b/docs/release-notes/2.14.0.md new file mode 100644 index 00000000..48909390 --- /dev/null +++ b/docs/release-notes/2.14.0.md @@ -0,0 +1,87 @@ +# Percona Backup for MongoDB 2.14.0 ({{date.2_14_0}}) + +[Installation](../installation.md){.md-button} + + +Percona Backup for MongoDB (PBM) is a distributed, low-impact solution for creating consistent backups of MongoDB sharded clusters and replica sets, and restoring them to a specific point in time. + +## Release highlights + +### Concurrent streaming for faster uploads to remote storage via MinIO SDK + +This release significantly improves the performance of uploading files to S3-compatible custom storage providers through MinIO SDK. By enabling concurrent part uploads, large file transfers can achieve improved throughput and efficiency. + +To ensure reliability, PBM includes built‑in optimizations and fallbacks: + +* **Small files:** If the file is smaller than the upload part size, concurrent upload is automatically disabled (since it's unnecessary). +* **Empty streams:** If the MinIO library reports an unexpected error for empty streams, PBM will retry the request with ConcurrentStreamParts disabled. + +These safeguards ensure that concurrent uploads deliver performance benefits without compromising stability. + +To learn more and get started, follow [MinIO and S3-compatible storage](../details/minio.md) page. + +### Interactive confirmation for the restore command + +!!! warning "Breaking change" + + Since an interactive prompt is now printed, automation and scripts must use the `-y` or `--yes` flag to bypass this confirmation. + +The `pbm restore` operation includes now an interactive confirmation prompt to reduce the risk of executing it accidentally. The command now requires explicit user approval before an operation is executed. With the new confirmation step, restores are safer and less prone to human error. See some examples below: + +```bash +pbm restore --time 2026-03-31T13:23:00 +``` + +??? example "Sample output" + + ```text + Restore: 2026-03-31T13:37:06.852575976Z to point-in-time 2026-03-31T13:23:00 from '2026-03-31T13:22:06Z'  + Are you sure you want to start the restore? [y/N] y  + Starting restore 2026-03-31T13:37:06.852575976Z to point-in-time 2026-03-31T13:23:00 from '2026-03-31T13:22:06Z'................................  + ``` + +For users who are automating PBM operations, PBM CLI introduces the `-y` and `--yes` flags to force the execution of a given command without a confirmation prompt. See details in [`pbm` commands](../reference/pbm-commands.md#pbm-restore) reference. + +## Changelog + +### New features + +- [PBM-1598](https://perconadev.atlassian.net/browse/PBM-1598): Added a new configuration file setting for restore - `backup.timeouts.balancerStop` that defines a timeout value in seconds, to control how long PBM waits for the MongoDB balancer to stop when executing the admin command `_configsvrBalancerStop`. This change prevents backup and restore operations from hanging indefinitely due to extended chunk migrations. + +- [PBM-1600](https://perconadev.atlassian.net/browse/PBM-1600): We have added an interactive confirmation prompt to the `pbm restore` command. Before the restore starts, you will now have to explicitly confirm the action. This change is intended to reduce the risk of unintentionally running a restore operation. + +- [PBM-1730](https://perconadev.atlassian.net/browse/PBM-1730): Previously, if the balancer was not stopped before initiating a restore, PBM would only log an error followed by a warning from the subsequent balancer status check. While this behavior was generally acceptable for physical restores (since `mongod` is shut down later in the process), it could lead to issues during logical restores. PBM now provides clearer handling of balancer state during restore operations, reducing the risk of restore inconsistencies and improving reliability for logical restore workflows. + +### Improvement + +- [PBM-1167](https://perconadev.atlassian.net/browse/PBM-1167): Physical restore with Point-in-Time Recovery (PITR) has been enhanced to provide more consistent and flexible recovery behavior across replica set nodes. PITR oplog entries are now applied to all nodes, not just the former Primary, ensuring that all nodes have identical data files and oplog history after restore. + +- [PBM-1638](https://perconadev.atlassian.net/browse/PBM-1638): Percona Backup for MongoDB (PBM) now provides enhanced support for a backup of database with data-at-rest encryption enabled and using external KMS providers, such as KMIP or Vault. During backup operations, PBM automatically captures and stores the master encryption key identifier (for example, `security.kmip.keyIdentifier`) in the backup metadata. This enables seamless and automated restore workflows without requiring users to manually track or store the encryption key identifier externally. + +- [PBM-1639](https://perconadev.atlassian.net/browse/PBM-1639): Previously, physical restore operations were stuck if Percona Backup for MongoDB (PBM) ignored a shutdown command failure during restore. This issue has been addressed, and PBM now properly handles shutdown command failures, ensuring that restore workflows complete as expected without hanging. + +- [PBM-1653](https://perconadev.atlassian.net/browse/PBM-1653): Improved file upload performance for MinIO-compatible storage by enabling the MinIO SDK `ConcurrentStreamParts` option for parallel uploads. + +- [PBM-1703](https://perconadev.atlassian.net/browse/PBM-1703): Previously, PBM generated repeated 404 error messages in S3 storage related to `.pbm.init.pbmpart.1` objects. While these messages did not affect backup integrity, they cluttered logs and consumed storage space. PBM now suppresses these redundant error messages, resulting in cleaner S3 logs and more efficient storage usage during backup initialization. + +- [PBM-1721](https://perconadev.atlassian.net/browse/PBM-1721): Improved physical restores behavior when a restore would hang indefinitely if PBM encountered an "Unauthorized" error while attempting to shut down a `mongod` node via a non-localhost connection interface. The restore process now correctly detects this error and terminates with a descriptive message, clarifying that localhost connections are required for node shutdown when running MongoDB without authentication. This use case was added to [Known limitations for backups and restores](../features/known-limitations.md). + +## Fixed bugs + +- [PBM-1345](https://perconadev.atlassian.net/browse/PBM-1345): Fixed an issue where a PITR slicer failure on one replica set did not stop the overall PITR process. PBM now correctly stops the PITR operation when a slicer fails on any replica set, preventing incomplete or inconsistent PITR execution. + +- [PBM-1472](https://perconadev.atlassian.net/browse/PBM-1472): Fixed an issue where an extra slash in the bucket or prefix configuration caused PBM to fail to save or locate backups in storage. PBM now correctly handles such paths, ensuring reliable backup storage and discovery. + +- [PBM-1586](https://perconadev.atlassian.net/browse/PBM-1586): During backup operations, if the PBM agent crashed, the CLI process continued to wait indefinitely without returning control to the user. This behavior caused stalled sessions and required manual intervention. The issue has now been resolved. + +- [PBM-1599](https://perconadev.atlassian.net/browse/PBM-1599): Fixed an issue where the `pbm-agent` took longer to start a backup, causing `pbm-cli` to timeout and exit prematurely. Now, `pbm-cli` correctly waits for the agent to begin the backup process before proceeding. + +- [PBM-1609](https://perconadev.atlassian.net/browse/PBM-1609): Resolved an issue in restores with PITR enabled where the log incorrectly displayed “**oplog slicer disabled**” while PBM continued attempting to upload oplog slices. The restore process now correctly reflects the PITR state and avoids unnecessary oplog slice uploads. + +- [PBM-1629](https://perconadev.atlassian.net/browse/PBM-1629): Resolved an issue where backups failed because PBM miscalculated collection size when `backup.compression` was set to `none`. Backups now complete successfully with compression disabled. + +- [PBM-1648](https://perconadev.atlassian.net/browse/PBM-1648): Resolved an issue with `pbm backup --wait` where the command continued waiting even after the backup had failed, and did not return a non-zero error code. The command now correctly exits with a non-zero code when a backup failure is detected. + +- [PBM-1657](https://perconadev.atlassian.net/browse/PBM-1657): Resolved an issue in the PBM CLI that prevented the correct parsing of `mongodb+srv` URIs and returned an inaccurate error message stating “**unescaped colon in password**”, although no colon was present. The CLI now properly parses `mongodb+srv` URIs and provides an accurate error message. + +- [PBM-1683](https://perconadev.atlassian.net/browse/PBM-1683): Fixed an issue where `pbm describe-backup` reported an incorrect, inflated value for `size_uncompressed_h` on non-base incremental backups. This field now accurately reflects the uncompressed size of the incremental data rather than cumulative or bloated values. From 5f8802a04155f50d3b65b307bc2ca1dff57ff218 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 15:56:04 +0530 Subject: [PATCH 187/212] Update 2.15.0.md --- docs/release-notes/2.15.0.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index 2aa77e8a..097458a5 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -8,11 +8,7 @@ Percona Backup for MongoDB (PBM) is a distributed, low-impact solution for creat ### Oracle Cloud Infrastructure Object Storage -PBM now supports Oracle Cloud Infrastructure (OCI) Object Storage as a remote backup destination through a dedicated OCI native driver. This integration enables backup and restore operations using OCI Object Storage across OCI environments. - -### OCI Object Storage Workload Identity Authentication - -PBM now supports multiple authentication methods for Oracle Cloud Infrastructure (OCI) Object Storage, including **Workload Identity authentication**. This enables secure access to OCI resources without requiring API signing keys, reducing operational overhead and improving security. +PBM now supports Oracle Cloud Infrastructure (OCI) Object Storage as a remote backup destination through a dedicated OCI native driver. This integration enables backup and restore operations using OCI Object Storage across OCI environments. It supports multiple authentication methods for Oracle Cloud Infrastructure (OCI) Object Storage, including **Workload Identity authentication**. This enables secure access to OCI resources without requiring API signing keys, reducing operational overhead and improving security. PBM supports the following OCI authentication methods: From 5a66e454ea6045eb35a060fdcf7e84032bbfe089 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 16:02:47 +0530 Subject: [PATCH 188/212] Update oci-storage.md --- docs/details/oci-storage.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/details/oci-storage.md b/docs/details/oci-storage.md index daebee21..44ff3156 100644 --- a/docs/details/oci-storage.md +++ b/docs/details/oci-storage.md @@ -10,7 +10,7 @@ driver. PBM connects to OCI Object Storage using one of the following authentica | `instancePrincipal` | PBM runs on an OCI Compute instance | | `okeWorkloadIdentity` | PBM runs inside an OKE enhanced cluster | -For information on identity-based authentication methods, refer to the sections on [Instance Principal](oci-wif.md#instanceprincipal) and [OKE Workload Identity](oci-wif.md#okeworkloadidentity). +For information on workload identity based authentication methods, refer to the sections on [Instance Principal](oci-wif.md#instanceprincipal) and [OKE Workload Identity](oci-wif.md#okeworkloadidentity). ## Prerequisites @@ -310,6 +310,8 @@ pbm list PBM supports OCI Object Storage server-side encryption using either OCI Key Management Service (KMS) keys or customer-provided encryption keys (SSE-C). These methods are mutually exclusive. Configure only one encryption mode at a time. +OCI Object Storage always encrypts data at rest using server-side encryption (SSE). By default, OCI uses Oracle-managed encryption keys and encryption cannot be disabled. The encryption settings described in this section are intended for environments that require greater control over key management, such as using customer-managed keys in OCI Key Management Service (KMS) or customer-provided encryption keys (SSE-C). + ### SSE with OCI KMS Use OCI KMS encryption when you want OCI to manage encryption and key lifecycle through OCI Vault and Key Management. From e2d17baafebdc8dabf83c4ce15873c4ab1ed9b06 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 16:18:47 +0530 Subject: [PATCH 189/212] Update 2.15.0.md --- docs/release-notes/2.15.0.md | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index 097458a5..097f7125 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -8,15 +8,29 @@ Percona Backup for MongoDB (PBM) is a distributed, low-impact solution for creat ### Oracle Cloud Infrastructure Object Storage -PBM now supports Oracle Cloud Infrastructure (OCI) Object Storage as a remote backup destination through a dedicated OCI native driver. This integration enables backup and restore operations using OCI Object Storage across OCI environments. It supports multiple authentication methods for Oracle Cloud Infrastructure (OCI) Object Storage, including **Workload Identity authentication**. This enables secure access to OCI resources without requiring API signing keys, reducing operational overhead and improving security. +PBM now supports Oracle Cloud Infrastructure (OCI) Object Storage as a remote backup destination through a dedicated OCI-native driver. This integration enables seamless backup and restore operations across OCI environments. -PBM supports the following OCI authentication methods: +#### Authentication methods -- **User Principal** for PBM deployments running on premises, on OCI, or in other cloud environments. -- **Instance Principal** for PBM deployments running on OCI Compute instances. -- **OKE Workload Identity** for PBM deployments running in Oracle Kubernetes Engine (OKE) enhanced clusters. +PBM supports multiple authentication mechanisms for OCI Object Storage, including Workload Identity authentication. This approach allows secure access to OCI resources without requiring API signing keys, reducing operational overhead and strengthening security. -These options provide deployment flexibility while aligning with OCI security best practices. +Supported authentication methods: + +**User Principal:** Use when PBM runs on premises, on OCI, or in other cloud environments. + +**Instance Principal:** Use when PBM runs on OCI Compute instances. + +**OKE Workload Identity:** Use when PBM runs in Oracle Kubernetes Engine (OKE) enhanced clusters. + +#### Benefits + +- Secure access with OCI-native identity integration + +- Reduced operational overhead by eliminating manual credential management + +- Deployment flexibility across on-premises, cloud, and Kubernetes environments + +For detailed information on OCI, refer to our comprehensive [documentation](https://docs.percona.com/percona-backup-mongodb/details/oci-storage.html) ### Software Bills of Materials (SBOMs) @@ -32,6 +46,11 @@ SBOMs are distributed through the following channels: - **Docker:** The SBOM is attached directly to the Docker image as metadata. +<<<<<<< Updated upstream +======= +If you want to dig deeper into this topic, refer to our [documentation](https://docs.percona.com/percona-backup-mongodb/reference/sboms-pbm.html) + +>>>>>>> Stashed changes ## Changelog ### New features From cbaf00315e5e750b9a210755d2c8f1c4928ce09b Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 16:19:52 +0530 Subject: [PATCH 190/212] Update 2.15.0.md --- docs/release-notes/2.15.0.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index 097f7125..e84ee7a8 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -46,11 +46,8 @@ SBOMs are distributed through the following channels: - **Docker:** The SBOM is attached directly to the Docker image as metadata. -<<<<<<< Updated upstream -======= If you want to dig deeper into this topic, refer to our [documentation](https://docs.percona.com/percona-backup-mongodb/reference/sboms-pbm.html) ->>>>>>> Stashed changes ## Changelog ### New features From 0eb80f3917077aed42cc33ff306401fc1d66c7e8 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 16:38:10 +0530 Subject: [PATCH 191/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/reference/sboms-pbm.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/sboms-pbm.md b/docs/reference/sboms-pbm.md index 551230e6..47a01528 100644 --- a/docs/reference/sboms-pbm.md +++ b/docs/reference/sboms-pbm.md @@ -100,7 +100,7 @@ You can use the [ORAS CLI :octicons-link-external-16:](https://oras.land/){:targ ```bash # Use the per-architecture tag to resolve directly to the image manifest oras discover --format tree \ - docker.io/percona/percona-backup-mongodb:{{release}}-amd64 + docker.io/percona/percona-backup-mongodb:-amd64 # Pull the SBOM artifact using the digest from the discover output oras pull docker.io/percona/percona-backup-mongodb@sha256: From 26b668faad3226a8ccc97161f866c67e4a473142 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 16:41:16 +0530 Subject: [PATCH 192/212] Update sboms-pbm.md --- docs/reference/sboms-pbm.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/sboms-pbm.md b/docs/reference/sboms-pbm.md index 47a01528..551230e6 100644 --- a/docs/reference/sboms-pbm.md +++ b/docs/reference/sboms-pbm.md @@ -100,7 +100,7 @@ You can use the [ORAS CLI :octicons-link-external-16:](https://oras.land/){:targ ```bash # Use the per-architecture tag to resolve directly to the image manifest oras discover --format tree \ - docker.io/percona/percona-backup-mongodb:-amd64 + docker.io/percona/percona-backup-mongodb:{{release}}-amd64 # Pull the SBOM artifact using the digest from the discover output oras pull docker.io/percona/percona-backup-mongodb@sha256: From d7a33e5707607ea9403cc5f0db9d3f156bec7250 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 16:47:58 +0530 Subject: [PATCH 193/212] Update restore-options.md --- docs/reference/restore-options.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index 02490c64..824e93c1 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -106,10 +106,9 @@ This is useful when you want to: ### restore.numParallelFiles *Type*: int
-*Default*: 1
*Storage*: Filesystem / NFS only
*Restore type:* Physical only The number of files to copy in parallel during a physical restore from filesystem or NFS storage. -The default value is `1`, which copies files sequentially. +This is typically set to 1 (sequential restore). \ No newline at end of file From 417eace4fc3367f805b5cc1f90ea88b2940f4871 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 16 Jun 2026 11:57:19 +0000 Subject: [PATCH 194/212] docs: restore 2.12.0 entry in release notes index --- docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/release-notes.md b/docs/release-notes.md index 5d383c64..43d70c14 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -2,6 +2,7 @@ * [{{pbm.full_name}} 2.15.0](release-notes/2.15.0.md) * [{{pbm.full_name}} 2.14.0](release-notes/2.14.0.md) * [{{pbm.full_name}} 2.13.0](release-notes/2.13.0.md) +* [{{pbm.full_name}} 2.12.0](release-notes/2.12.0.md) * [{{pbm.full_name}} 2.11.0](release-notes/2.11.0.md) * [{{pbm.full_name}} 2.10.0](release-notes/2.10.0.md) * [{{pbm.full_name}} 2.9.1](release-notes/2.9.1.md) From 3c4537bb6bbf38c1d9e0948a8343481ce56daee6 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 17:36:58 +0530 Subject: [PATCH 195/212] Update 2.15.0.md --- docs/release-notes/2.15.0.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index e84ee7a8..57cd1fd1 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -66,5 +66,4 @@ If you want to dig deeper into this topic, refer to our [documentation](https:// ### Fixed bugs -- [PBM-1675](https://perconadev.atlassian.net/browse/PBM-1675): Fixed an issue where backups were incorrectly marked as incompatible when an invalid `MONGODB_URI` was configured. - [PBM-1687](https://perconadev.atlassian.net/browse/PBM-1687): Fixed an issue where point-in-time recovery (PITR) was blocked when two backup commands were executed simultaneously. \ No newline at end of file From 03727a15109df22ce8615ce8fd1a3c0669222554 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 17:37:40 +0530 Subject: [PATCH 196/212] Update 2.15.0.md --- docs/release-notes/2.15.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index 57cd1fd1..29d070ba 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -6,7 +6,7 @@ Percona Backup for MongoDB (PBM) is a distributed, low-impact solution for creat ## Release highlights -### Oracle Cloud Infrastructure Object Storage +### Oracle Cloud Infrastructure support PBM now supports Oracle Cloud Infrastructure (OCI) Object Storage as a remote backup destination through a dedicated OCI-native driver. This integration enables seamless backup and restore operations across OCI environments. From 2009bcd056802933be85f4684ac35f2c7713fa6f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 16 Jun 2026 12:11:07 +0000 Subject: [PATCH 197/212] Restore 2.14.0 in PBM 2.x nav list --- .cache/plugin/git-committers/page-authors.json | 1 + mkdocs-base.yml | 1 + 2 files changed, 2 insertions(+) create mode 100644 .cache/plugin/git-committers/page-authors.json diff --git a/.cache/plugin/git-committers/page-authors.json b/.cache/plugin/git-committers/page-authors.json new file mode 100644 index 00000000..087b397f --- /dev/null +++ b/.cache/plugin/git-committers/page-authors.json @@ -0,0 +1 @@ +{"cache_date": "2026-06-16", "page_authors": {"docs/index.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/404.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/CODE_OF_CONDUCT.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/about-docs.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/copyright.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/get-help.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/installation.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/intro.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/pmm.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/system-requirements.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/trademark-policy.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/architecture.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/authentication.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/azure.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/cli.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/control-collections.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/deployments.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/endpoint-map.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/filesystem-storage.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/gcs.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/minio.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/oss.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/pbm-agent.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/s3-storage.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/storage-configuration.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/versions.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/workload-identity-auth.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/backup-sharding.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/backup-types.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/comparison.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/incremental-backup.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/known-limitations.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/logical.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/multi-storage.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/physical.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/point-in-time-recovery.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/restore-new-env.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/restore-remapping.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/selective-backup.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/snapshots.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/split-merge-backup.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/install/backup-storage.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/install/configure-authentication.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/install/docker.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/install/initial-setup.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/install/repos.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/install/secure-credentials-systemd.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/install/source.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/install/start-pbm-agent.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/install/tarball.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/manage/automate-s3-access.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/manage/change-nodes.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/manage/configure-remotely.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/manage/logpath.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/manage/overview.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/manage/start-agent-with-config.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/manage/uninstalling.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/manage/upgrading.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/reference/backup-options.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/reference/config.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/reference/configuration-options.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/reference/glossary.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/reference/logging-options.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/reference/pbm-agent-config-options.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/reference/pbm-commands.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/reference/pitr-options.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/reference/restore-options.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/0.5.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.0.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.1.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.1.1.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.1.3.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.2.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.2.1.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.3.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.3.1.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.3.2.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.3.3.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.3.4.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.4.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.4.1.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.5.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.6.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.6.1.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.7.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.8.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.8.1.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.0.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.0.1.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.0.2.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.0.3.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.0.4.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.0.5.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.1.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.10.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.11.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.12.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.13.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.14.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.15.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.2.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.2.1.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.3.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.3.1.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.4.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.4.1.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.5.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.6.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.7.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.8.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.9.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.9.1.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/troubleshoot/index.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/troubleshoot/faq.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/troubleshoot/pbm-pmm.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/troubleshoot/pbm-report.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/troubleshoot/restore-partial.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/troubleshoot/status.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/troubleshoot/troubleshooting.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/backup-external.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/backup-incremental.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/backup-physical.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/backup-priority.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/backup-selective.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/cancel-backup.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/compression.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/delete-backup.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/describe-backup.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/list-backup.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/logs.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/oplog-replay.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/pitr-physical.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/pitr-selective.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/pitr-tutorial.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/restore-external-agent-restart.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/restore-external.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/restore-incremental.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/restore-physical.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/restore-progress.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/restore-selective.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/restore.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/schedule-backup.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/start-backup.md": {"last_commit_date": "2026-06-16", "authors": []}}} \ No newline at end of file diff --git a/mkdocs-base.yml b/mkdocs-base.yml index 450f22c1..0d90d518 100644 --- a/mkdocs-base.yml +++ b/mkdocs-base.yml @@ -292,6 +292,7 @@ nav: - release-notes.md - PBM 2.x: - "{{pbm.full_name}} 2.15.0 ({{date.2_15_0}})": release-notes/2.15.0.md + - release-notes/2.14.0.md - release-notes/2.13.0.md - release-notes/2.12.0.md - release-notes/2.11.0.md From 255247cf49400fa940b8d3af43528d8477952ae7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 16 Jun 2026 12:11:27 +0000 Subject: [PATCH 198/212] Remove generated git-committers cache artifact --- .cache/plugin/git-committers/page-authors.json | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .cache/plugin/git-committers/page-authors.json diff --git a/.cache/plugin/git-committers/page-authors.json b/.cache/plugin/git-committers/page-authors.json deleted file mode 100644 index 087b397f..00000000 --- a/.cache/plugin/git-committers/page-authors.json +++ /dev/null @@ -1 +0,0 @@ -{"cache_date": "2026-06-16", "page_authors": {"docs/index.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/404.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/CODE_OF_CONDUCT.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/about-docs.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/copyright.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/get-help.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/installation.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/intro.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/pmm.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/system-requirements.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/trademark-policy.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/architecture.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/authentication.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/azure.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/cli.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/control-collections.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/deployments.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/endpoint-map.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/filesystem-storage.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/gcs.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/minio.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/oss.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/pbm-agent.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/s3-storage.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/storage-configuration.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/versions.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/details/workload-identity-auth.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/backup-sharding.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/backup-types.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/comparison.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/incremental-backup.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/known-limitations.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/logical.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/multi-storage.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/physical.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/point-in-time-recovery.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/restore-new-env.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/restore-remapping.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/selective-backup.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/snapshots.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/features/split-merge-backup.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/install/backup-storage.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/install/configure-authentication.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/install/docker.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/install/initial-setup.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/install/repos.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/install/secure-credentials-systemd.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/install/source.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/install/start-pbm-agent.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/install/tarball.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/manage/automate-s3-access.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/manage/change-nodes.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/manage/configure-remotely.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/manage/logpath.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/manage/overview.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/manage/start-agent-with-config.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/manage/uninstalling.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/manage/upgrading.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/reference/backup-options.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/reference/config.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/reference/configuration-options.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/reference/glossary.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/reference/logging-options.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/reference/pbm-agent-config-options.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/reference/pbm-commands.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/reference/pitr-options.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/reference/restore-options.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/0.5.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.0.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.1.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.1.1.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.1.3.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.2.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.2.1.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.3.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.3.1.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.3.2.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.3.3.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.3.4.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.4.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.4.1.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.5.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.6.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.6.1.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.7.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.8.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/1.8.1.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.0.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.0.1.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.0.2.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.0.3.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.0.4.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.0.5.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.1.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.10.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.11.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.12.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.13.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.14.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.15.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.2.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.2.1.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.3.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.3.1.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.4.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.4.1.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.5.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.6.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.7.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.8.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.9.0.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/release-notes/2.9.1.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/troubleshoot/index.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/troubleshoot/faq.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/troubleshoot/pbm-pmm.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/troubleshoot/pbm-report.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/troubleshoot/restore-partial.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/troubleshoot/status.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/troubleshoot/troubleshooting.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/backup-external.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/backup-incremental.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/backup-physical.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/backup-priority.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/backup-selective.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/cancel-backup.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/compression.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/delete-backup.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/describe-backup.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/list-backup.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/logs.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/oplog-replay.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/pitr-physical.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/pitr-selective.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/pitr-tutorial.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/restore-external-agent-restart.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/restore-external.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/restore-incremental.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/restore-physical.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/restore-progress.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/restore-selective.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/restore.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/schedule-backup.md": {"last_commit_date": "2026-06-16", "authors": []}, "docs/usage/start-backup.md": {"last_commit_date": "2026-06-16", "authors": []}}} \ No newline at end of file From 641fe50547f50875578993983d4098fa42ea4a4f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 16 Jun 2026 12:11:40 +0000 Subject: [PATCH 199/212] docs: hyphenate OCI-native driver wording in 2.15.0 notes --- docs/release-notes/2.15.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index 29d070ba..55d7775f 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -52,7 +52,7 @@ If you want to dig deeper into this topic, refer to our [documentation](https:// ### New features -- [PBM-1727](https://perconadev.atlassian.net/browse/PBM-1727): Percona Backup for MongoDB (PBM) now supports OCI Object Storage as a remote backup destination through a dedicated OCI native driver. +- [PBM-1727](https://perconadev.atlassian.net/browse/PBM-1727): Percona Backup for MongoDB (PBM) now supports OCI Object Storage as a remote backup destination through a dedicated OCI-native driver. - [PBM-1728](https://perconadev.atlassian.net/browse/PBM-1728): Percona Backup for MongoDB (PBM) now supports multiple authentication methods for Oracle Cloud Infrastructure (OCI) Object Storage, including Workload Identity. - [PBM-1710](https://perconadev.atlassian.net/browse/PBM-1710): Percona Backup for MongoDB (PBM) now provides Software Bills of Materials (SBOMs) for every release. From 1bddaba69f0fa963cb09834bc0c8faa5d08301d7 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 17:48:33 +0530 Subject: [PATCH 200/212] Update restore-options.md --- docs/reference/restore-options.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/reference/restore-options.md b/docs/reference/restore-options.md index f8efce9e..378d3bb4 100644 --- a/docs/reference/restore-options.md +++ b/docs/reference/restore-options.md @@ -102,16 +102,17 @@ This is useful when you want to: - Enforce time limits in automated workflows - Fail fast if the balancer cannot be stopped - ### restore.numParallelFiles *Type*: int
+*Default*: 0 *Storage*: Filesystem / NFS only
*Restore type:* Physical only The number of files to copy in parallel during a physical restore from filesystem or NFS storage. -This is typically set to 1 (sequential restore). +The default value is `0`, which performs a sequential restore. This is equivalent to setting the value to `1`. + ### restore.indexCommitQuorum *Type*: string or int
From bd460a34caa4bbd79966ac6580d33e63aa330357 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 17:50:08 +0530 Subject: [PATCH 201/212] Update docs/release-notes/2.15.0.md Co-authored-by: Radoslaw Szulgo --- docs/release-notes/2.15.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index 55d7775f..e69b16a8 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -46,7 +46,7 @@ SBOMs are distributed through the following channels: - **Docker:** The SBOM is attached directly to the Docker image as metadata. -If you want to dig deeper into this topic, refer to our [documentation](https://docs.percona.com/percona-backup-mongodb/reference/sboms-pbm.html) +If you want to dig deeper into this topic, refer to our [documentation](https://docs.percona.com/percona-backup-mongodb/reference/sboms-pbm.html). ## Changelog From c52bc11582404e043b72910ed8196f16b1fa5fa8 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 17:50:31 +0530 Subject: [PATCH 202/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/release-notes/2.15.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index e69b16a8..8cae430d 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -30,7 +30,7 @@ Supported authentication methods: - Deployment flexibility across on-premises, cloud, and Kubernetes environments -For detailed information on OCI, refer to our comprehensive [documentation](https://docs.percona.com/percona-backup-mongodb/details/oci-storage.html) +For detailed information on OCI, refer to our comprehensive [documentation](https://docs.percona.com/percona-backup-mongodb/details/oci-storage.html). ### Software Bills of Materials (SBOMs) From d9523bb54f487d610d4294a4704999015640a806 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Tue, 16 Jun 2026 18:33:10 +0530 Subject: [PATCH 203/212] Update 2.15.0.md --- docs/release-notes/2.15.0.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index 8cae430d..c6cedbdb 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -16,11 +16,9 @@ PBM supports multiple authentication mechanisms for OCI Object Storage, includin Supported authentication methods: -**User Principal:** Use when PBM runs on premises, on OCI, or in other cloud environments. - -**Instance Principal:** Use when PBM runs on OCI Compute instances. - -**OKE Workload Identity:** Use when PBM runs in Oracle Kubernetes Engine (OKE) enhanced clusters. +- Choose **User Principal** when PBM runs on premises, on OCI, or in other cloud environments. +- Choose **Instance Principal** when PBM runs on OCI Compute instances. +- Choose **OKE Workload Identity** when PBM runs in Oracle Kubernetes Engine (OKE) enhanced clusters. #### Benefits From a1d40a5a5a66fd38154247403bdf721394749f10 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Wed, 17 Jun 2026 16:15:33 +0530 Subject: [PATCH 204/212] update_pdf_version --- docs/_templates/pdf_cover_page.tpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/_templates/pdf_cover_page.tpl b/docs/_templates/pdf_cover_page.tpl index 126ea86e..d800bf67 100644 --- a/docs/_templates/pdf_cover_page.tpl +++ b/docs/_templates/pdf_cover_page.tpl @@ -3,8 +3,8 @@

Percona logo

-

Backup for MongoDB 2.14.0

+

Backup for MongoDB 2.15.0

{% if config.site_description %}

{{ config.site_description }}

{% endif %} -

2.14.0 (April 29, 2026)

\ No newline at end of file +

2.15.0 (Jun 17, 2026)

\ No newline at end of file From 104e0bdc963a212fb98059340c2ab6fa5a297c08 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Wed, 17 Jun 2026 16:18:27 +0530 Subject: [PATCH 205/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/_templates/pdf_cover_page.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_templates/pdf_cover_page.tpl b/docs/_templates/pdf_cover_page.tpl index d800bf67..53936b44 100644 --- a/docs/_templates/pdf_cover_page.tpl +++ b/docs/_templates/pdf_cover_page.tpl @@ -7,4 +7,4 @@ {% if config.site_description %}

{{ config.site_description }}

{% endif %} -

2.15.0 (Jun 17, 2026)

\ No newline at end of file +

2.15.0 (June 17, 2026)

\ No newline at end of file From 7150734074916ed29d03916ddf7ca82b0df4a3b1 Mon Sep 17 00:00:00 2001 From: Alina Derkach Date: Wed, 17 Jun 2026 18:25:44 +0200 Subject: [PATCH 206/212] Fix links in config files and docs after adding a version switcher modified: _resourcepdf/overrides/main.html modified: _resourcepdf/overrides/partials/banner.html modified: _resourcepdf/overrides/partials/edit.html modified: docs/install/docker.md modified: docs/release-notes/2.13.0.md modified: docs/release-notes/2.15.0.md modified: docs/usage/restore-physical.md modified: mkdocs-base.ym --- .github/workflows/main.yml | 1 + _resourcepdf/overrides/main.html | 4 ++-- _resourcepdf/overrides/partials/banner.html | 2 +- _resourcepdf/overrides/partials/edit.html | 2 +- docs/install/docker.md | 2 +- docs/release-notes/2.13.0.md | 4 ++-- docs/release-notes/2.15.0.md | 4 ++-- docs/usage/restore-physical.md | 2 +- mkdocs-base.yml | 6 +++--- 9 files changed, 14 insertions(+), 13 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e8c74f87..062c7196 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -45,6 +45,7 @@ jobs: - name: Deploy docs run: | mike deploy 2.15.0 -b publish -p + mike set-default 2.15.0 -b publish -p mike retitle 2.15.0 "2.15.0" -b publish -p # - name: Install Node.js 14.x # uses: percona-platform/setup-node@v2 diff --git a/_resourcepdf/overrides/main.html b/_resourcepdf/overrides/main.html index 388f22f5..6c500224 100644 --- a/_resourcepdf/overrides/main.html +++ b/_resourcepdf/overrides/main.html @@ -44,8 +44,8 @@ {% endif %} - - + + {% endblock %} {% block site_nav %} diff --git a/_resourcepdf/overrides/partials/banner.html b/_resourcepdf/overrides/partials/banner.html index d1bcc0a5..1d71167b 100644 --- a/_resourcepdf/overrides/partials/banner.html +++ b/_resourcepdf/overrides/partials/banner.html @@ -4,6 +4,6 @@ diff --git a/_resourcepdf/overrides/partials/edit.html b/_resourcepdf/overrides/partials/edit.html index c9a11ebb..dc3bbae9 100644 --- a/_resourcepdf/overrides/partials/edit.html +++ b/_resourcepdf/overrides/partials/edit.html @@ -13,7 +13,7 @@ - pbm backup where `` is the name you assigned to the container and `pbm backup` is the command to start a backup. -In the same way you can run other pbm commands. Find the full list of available commands in [Percona Backup for MongoDB reference](https://docs.percona.com/percona-backup-mongodb/reference/pbm-commands.html). +In the same way you can run other pbm commands. Find the full list of available commands in [Percona Backup for MongoDB reference](https://docs.percona.com/percona-backup-mongodb/2.15.0/reference/pbm-commands.html). ## Next steps diff --git a/docs/release-notes/2.13.0.md b/docs/release-notes/2.13.0.md index 41b68c77..2ce3f222 100644 --- a/docs/release-notes/2.13.0.md +++ b/docs/release-notes/2.13.0.md @@ -15,7 +15,7 @@ Percona Backup for MongoDB (PBM) is a distributed, low-impact solution for creat Workload Identity Federation lets on-premises or multicloud workloads access Google Cloud resources using federated identities instead of a service account key, eliminating the maintenance and security burden of service account keys. - For detailed information, refer to our comprehensive [documentation](https://docs.percona.com/percona-backup-mongodb/details/workload-identity-auth.html). + For detailed information, refer to our comprehensive [documentation](https://docs.percona.com/percona-backup-mongodb/2.14.0/details/workload-identity-auth.html). === "🔐 Selective backups" @@ -29,7 +29,7 @@ Percona Backup for MongoDB (PBM) is a distributed, low-impact solution for creat pbm backup --ns="mydb.*" --with-users-and-roles ``` - For detailed information about this feature, see our [documentation](https://docs.percona.com/percona-backup-mongodb/usage/backup-selective.html#selective-backup-with-users-and-roles). + For detailed information about this feature, see our [documentation](https://docs.percona.com/percona-backup-mongodb/2.14.0/usage/backup-selective.html#selective-backup-with-users-and-roles). ## Changelog diff --git a/docs/release-notes/2.15.0.md b/docs/release-notes/2.15.0.md index c6cedbdb..456eade9 100644 --- a/docs/release-notes/2.15.0.md +++ b/docs/release-notes/2.15.0.md @@ -28,7 +28,7 @@ Supported authentication methods: - Deployment flexibility across on-premises, cloud, and Kubernetes environments -For detailed information on OCI, refer to our comprehensive [documentation](https://docs.percona.com/percona-backup-mongodb/details/oci-storage.html). +For detailed information on OCI, refer to our comprehensive [documentation](https://docs.percona.com/percona-backup-mongodb/2.15.0/details/oci-storage.html). ### Software Bills of Materials (SBOMs) @@ -44,7 +44,7 @@ SBOMs are distributed through the following channels: - **Docker:** The SBOM is attached directly to the Docker image as metadata. -If you want to dig deeper into this topic, refer to our [documentation](https://docs.percona.com/percona-backup-mongodb/reference/sboms-pbm.html). +If you want to dig deeper into this topic, refer to our [documentation](https://docs.percona.com/percona-backup-mongodb/2.15.0/reference/sboms-pbm.html). ## Changelog diff --git a/docs/usage/restore-physical.md b/docs/usage/restore-physical.md index 534cad7b..0d169ced 100644 --- a/docs/usage/restore-physical.md +++ b/docs/usage/restore-physical.md @@ -126,7 +126,7 @@ restore: "node03:27017": /another/path/to/mongod ``` -When running physical restores in Docker environments, you need to include Percona Backup for MongoDB files together with your MongoDB binaries in the same container. See [Run Percona Backup for MongoDB in a Docker container](https://docs.percona.com/percona-backup-mongodb/install/docker.html) for more information. +When running physical restores in Docker environments, you need to include Percona Backup for MongoDB files together with your MongoDB binaries in the same container. See [Run Percona Backup for MongoDB in a Docker container](https://docs.percona.com/percona-backup-mongodb/2.15.0/install/docker.html) for more information. ### Parallel data download diff --git a/mkdocs-base.yml b/mkdocs-base.yml index 14de31ef..0a40df37 100644 --- a/mkdocs-base.yml +++ b/mkdocs-base.yml @@ -8,7 +8,7 @@ copyright: > — Cookie Preferences repo_name: percona/pbm-docs repo_url: https://github.com/percona/pbm-docs -edit_uri: edit/main/docs/ +edit_uri: edit/2.15.0/docs/ use_directory_urls: false @@ -132,7 +132,7 @@ plugins: git-committers: enabled: !ENV [CI, false] repository: percona/pbm-docs - branch: "main" + branch: "2.15.0" tags: {} glightbox: {} open-in-new-tab: {} @@ -344,7 +344,7 @@ nav: - "About Percona Backup for MongoDB documentation": about-docs.md - reference/sboms-pbm.md - reference/glossary.md - - Contribution guidelines: 'https://github.com/percona/pbm-docs/blob/main/CONTRIBUTING.md' + - Contribution guidelines: 'https://github.com/percona/pbm-docs/blob/2.15.0/CONTRIBUTING.md' - Copyright and licensing: copyright.md - Trademark policy: trademark-policy.md - Code of conduct: CODE_OF_CONDUCT.md From 384ed6bb111ef64540b925b244e7c635610c518e Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 18 Jun 2026 12:44:38 +0530 Subject: [PATCH 207/212] fix_broken_links --- mkdocs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs.yml b/mkdocs.yml index 72556c24..cc9f5020 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -2,7 +2,7 @@ INHERIT: mkdocs-base.yml -site_url: "https://docs.percona.com/percona-backup-mongodb" +site_url: "https://docs.percona.com/percona-backup-mongodb/2.15.0" theme: From 952a0b533908b28c3b5ad9c10d9aa2e42dc2e7b7 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 18 Jun 2026 12:52:51 +0530 Subject: [PATCH 208/212] updated config files --- mkdocs-base.yml | 2 +- mkdocs.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mkdocs-base.yml b/mkdocs-base.yml index 0a40df37..0f2da0d7 100644 --- a/mkdocs-base.yml +++ b/mkdocs-base.yml @@ -10,7 +10,7 @@ repo_name: percona/pbm-docs repo_url: https://github.com/percona/pbm-docs edit_uri: edit/2.15.0/docs/ -use_directory_urls: false +use_directory_urls: true # Theme setup theme: diff --git a/mkdocs.yml b/mkdocs.yml index cc9f5020..27a4dde2 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -2,7 +2,7 @@ INHERIT: mkdocs-base.yml -site_url: "https://docs.percona.com/percona-backup-mongodb/2.15.0" +site_url: "https://docs.percona.com/percona-backup-mongodb/2.15.0/" theme: From 0aa0de5964ce72a9b7c6f23f65e68756fbfd8090 Mon Sep 17 00:00:00 2001 From: Rasika Chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 18 Jun 2026 12:58:51 +0530 Subject: [PATCH 209/212] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- mkdocs-base.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs-base.yml b/mkdocs-base.yml index 0f2da0d7..0a40df37 100644 --- a/mkdocs-base.yml +++ b/mkdocs-base.yml @@ -10,7 +10,7 @@ repo_name: percona/pbm-docs repo_url: https://github.com/percona/pbm-docs edit_uri: edit/2.15.0/docs/ -use_directory_urls: true +use_directory_urls: false # Theme setup theme: From 6ba05ff3091af539435e82b2dfc97207960009d4 Mon Sep 17 00:00:00 2001 From: rasika-chivate <95711051+rasika-chivate@users.noreply.github.com> Date: Thu, 18 Jun 2026 13:27:36 +0530 Subject: [PATCH 210/212] Update mkdocs-base.yml --- mkdocs-base.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs-base.yml b/mkdocs-base.yml index 0f2da0d7..0a40df37 100644 --- a/mkdocs-base.yml +++ b/mkdocs-base.yml @@ -10,7 +10,7 @@ repo_name: percona/pbm-docs repo_url: https://github.com/percona/pbm-docs edit_uri: edit/2.15.0/docs/ -use_directory_urls: true +use_directory_urls: false # Theme setup theme: From e219a8b76241b11b904b9ec8df2e305fe8454274 Mon Sep 17 00:00:00 2001 From: Alina Derkach Date: Thu, 18 Jun 2026 14:37:39 +0200 Subject: [PATCH 211/212] Update main.yml --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 062c7196..1fc7df99 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -45,8 +45,8 @@ jobs: - name: Deploy docs run: | mike deploy 2.15.0 -b publish -p - mike set-default 2.15.0 -b publish -p mike retitle 2.15.0 "2.15.0" -b publish -p + mike set-default 2.15.0 -b publish -p # - name: Install Node.js 14.x # uses: percona-platform/setup-node@v2 # with: From 79ae74453608acf5d7522955c2f5ed9321f963c1 Mon Sep 17 00:00:00 2001 From: Radoslaw Szulgo Date: Mon, 22 Jun 2026 11:05:28 +0200 Subject: [PATCH 212/212] PBM-1790 Document PBM user database roles (#387) * PBM-1790 describe pbm user database roles Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/details/pbm-user-roles.md | 49 ++++++++++++++++++++++++ docs/install/configure-authentication.md | 2 + mkdocs-base.yml | 2 + 3 files changed, 53 insertions(+) create mode 100644 docs/details/pbm-user-roles.md diff --git a/docs/details/pbm-user-roles.md b/docs/details/pbm-user-roles.md new file mode 100644 index 00000000..d3729148 --- /dev/null +++ b/docs/details/pbm-user-roles.md @@ -0,0 +1,49 @@ +# PBM user database roles + +Percona Backup for MongoDB requires a dedicated database user holding a specific set of MongoDB roles. The table below gives a quick overview; the sections that follow explain why each role is needed and what it does — and does not — grant. + +| Role | Scope | Access type | Purpose | +|-----------------|------------------|--------------|-----------------------------------------------| +| `readWrite` | `admin` db only | Read + write | PBM metadata / agent coordination collections | +| `backup` | All databases | Read-only | Full data + oplog snapshot for backup | +| `clusterMonitor`| Cluster metadata | Read-only | Topology awareness, safe scheduling | +| `restore` | All databases | Write | Replay data during restore operations | +| `pbmAnyAction` | All resources | Any action | Privileged commands not covered by built-in roles (`applyOps`, `_configsvrBalancerStop`, `_configsvrBalancerStatus`, `shutdown`) | + +## Built-in MongoDB roles + +### `readWrite` (on `admin` db) + +PBM stores its operational metadata — backup status, restore progress, configuration, and agent coordination — in the PBM control collections in the `admin` database (for example, `admin.pbmConfig`, `admin.pbmBackups`, `admin.pbmAgents`, and others; see [PBM control collections](../details/control-collections.md)). The `readWrite` role grants PBM the ability to read from and write to these collections so all agents in a cluster can share state and coordinate operations. +This role is scoped to the `admin` database only. It does not grant read or write access to application databases. + +### `backup` + +The `backup` role is a MongoDB built-in role that allows reading all data across all databases and collections (via `listDatabases`, `listCollections`, and `find` on all namespaces), as well as reading the oplog (`local.oplog.rs`). PBM requires this to stream a consistent snapshot of all data during a backup, including the oplog data needed for point-in-time recovery (PITR). + +This is a read-only role with respect to application data. No write access to application databases is granted by this role alone. + +### `clusterMonitor` + +PBM agents need to query the cluster topology and health — member states, replication lag, shard configuration, and whether a node is primary or secondary — to make safe decisions about where to run a backup, when to wait for replication to catch up, and how to coordinate across a replica set or sharded cluster. The `clusterMonitor` role grants access to commands like `serverStatus`, `replSetGetStatus`, `listShards`, and similar diagnostic commands. + +This role grants read-only access to monitoring and operational metadata. It does not allow modifying cluster configuration or accessing application data. + +### `restore` + +During a restore operation, PBM needs to write data back into all databases and collections, recreate indexes, and replay oplog entries to reach a consistent point-in-time state. The `restore` role grants the necessary `insert`, `update`, and `createCollection`/`createIndex` privileges across all namespaces to perform these operations. + +This role is only exercised during a restore operation. It grants broad write privileges and should be treated as a sensitive, privileged role in your access review process. + +## Custom role + +### `pbmAnyAction` (custom role on `admin` db) + +This custom role grants the `anyAction` privilege on `anyResource`, which is effectively full administrative access. PBM uses this capability for a limited set of commands that fall outside what the standard built-in roles cover: +- `setParameter` / `getParameter` — to read or temporarily adjust certain `mongod` parameters during backup/restore (for example, disabling the balancer on sharded clusters). +- `fsync` / `fsyncUnlock` — on some backup paths (particularly for physical/hot backups with Percona Server for MongoDB), PBM may need to flush and lock the WiredTiger storage engine. +- Oplog-related and internal commands — certain replication and storage-engine commands needed for consistent point-in-time backups are not exposed by any standard role. + +!!! note "Compliance note" + + This is the most privileged role in the set. It is intentionally custom and narrowly justified by gaps in MongoDB's built-in role model. This role is assigned to a dedicated service account (`pbmuser`) used exclusively by the PBM agent process — not by any human operator or application. diff --git a/docs/install/configure-authentication.md b/docs/install/configure-authentication.md index ba428164..519a9c04 100644 --- a/docs/install/configure-authentication.md +++ b/docs/install/configure-authentication.md @@ -45,6 +45,8 @@ Percona Backup for MongoDB uses the authentication and authorization subsystem o You can change the `username` and `password` values and specify other options for the `createUser` command as you require. But you must grant this user the roles as shown above. +For an explanation of why each role is required and what it does and does not grant, see [PBM user roles reference](../details/pbm-user-roles.md). + !!! tip diff --git a/mkdocs-base.yml b/mkdocs-base.yml index 0a40df37..2f80a788 100644 --- a/mkdocs-base.yml +++ b/mkdocs-base.yml @@ -291,6 +291,8 @@ nav: - PBM control collections: details/control-collections.md - How PBM works: 'intro.md' - details/authentication.md + - details/pbm-user-roles.md + - Release notes: - release-notes.md - PBM 2.x: