36.json (36201B)
1 { 2 "number": 36, 3 "title": "chore(deps): update helm release mariadb-operator to v25", 4 "state": "merged", 5 "diff_file": "36.diff", 6 "author": "renovate[bot]", 7 "created_at": "2025-12-07T21:21:38Z", 8 "closed_at": "2025-12-07T21:26:17Z", 9 "merged_at": "2025-12-07T21:26:17Z", 10 "base_ref": "main", 11 "head_ref": "renovate/mariadb-operator-25.x", 12 "labels": [ 13 "type/major-update" 14 ], 15 "assignees": [], 16 "requested_reviewers": [], 17 "body": "This PR contains the following updates:\n\n| Package | Update | Change |\n|---|---|---|\n| [mariadb-operator](https://redirect.github.com/mariadb-operator/mariadb-operator) | major | `0.38.1` -> `25.10.2` |\n\n---\n\n### Release Notes\n\n<details>\n<summary>mariadb-operator/mariadb-operator (mariadb-operator)</summary>\n\n### [`v25.10.2`](https://redirect.github.com/mariadb-operator/mariadb-operator/releases/tag/25.10.2)\n\n[Compare Source](https://redirect.github.com/mariadb-operator/mariadb-operator/compare/mariadb-operator-25.10.1...mariadb-operator-25.10.2)\n\n**`mariadb-operator` [25.10.2](https://redirect.github.com/mariadb-operator/mariadb-operator/releases/tag/25.10.2) is here!** \ud83e\uddad\n\nWe are thrilled to announce that our **highly available, replication-based topology is now generally available!** \ud83c\udf89 It is been quite a journey and we are very excited about this milestone. A huge thank-you to everyone involved, specially for those who actively contributed to the development of this feature, namely [@​hedgieinsocks](https://redirect.github.com/hedgieinsocks) and [@​Michaelpalacce](https://redirect.github.com/Michaelpalacce)! \ud83d\ude47\ud83c\udffc Please refer to the **[Pull Request for additional details](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1441)** about all the changes introduced in this release.\n\nIf you're upgrading from previous versions, **do not miss the [UPGRADE GUIDE](https://redirect.github.com/mariadb-operator/mariadb-operator/blob/main/docs/releases/UPGRADE_25.10.0.md)** for a smooth transition.\n\n#### Provisioning a replication cluster\n\nIn order to provision a replication cluster, you need to configure a number of `replicas` greater than `1` and set the `replication.enabled=true` in the `MariaDB` CR:\n\n```yaml\napiVersion: k8s.mariadb.com/v1alpha1\nkind: MariaDB\nmetadata:\n name: mariadb-repl\nspec:\n replicas: 3\n replication:\n enabled: true\n```\n\nAfter applying the previous CR, the operator will provision a replication cluster with one primary and two replicas. The operator will take care of setting up replication, configuring the replication user and monitoring the replication status:\n\n```bash\nkubectl get pods\nNAME READY STATUS RESTARTS AGE\nmariadb-repl-0 2/2 Running 0 2d19h\nmariadb-repl-1 2/2 Running 0 2d19h\nmariadb-repl-2 2/2 Running 0 2d19h\nmariadb-repl-metrics-56865fff65-t72kc 1/1 Running 0 2d20h\n\nkubectl get mariadb\nNAME READY STATUS PRIMARY UPDATES AGE\nmariadb-repl True Running mariadb-repl-0 ReplicasFirstPrimaryLast 2d20h\n```\n\nAs you can see, the primary can be identified in the `PRIMARY` column of the `kubectl get mariadb` output. You may also inspect the current replication status by checking the `MariaDB` status.\n\n#### Primary failover\n\nWhenever the primary `Pod` goes down, the operator will automatically trigger a failover to the furthest advanced replica. This is the default behaviour, and can be configured by setting:\n\n```yaml\napiVersion: k8s.mariadb.com/v1alpha1\nkind: MariaDB\nmetadata:\n name: mariadb-repl\nspec:\n replicas: 3\n replication:\n enabled: true\n primary:\n autoFailover: true\n autoFailoverDelay: 0s\n```\n\nIn this situation, the following status will be reported in the `MariaDB` CR:\n\n```bash\nkubectl get mariadb\nNAME READY STATUS PRIMARY UPDATES AGE\nmariadb-repl False Switching primary to 'mariadb-repl-1' mariadb-repl-0 ReplicasFirstPrimaryLast 3d2h \n\nkubectl get mariadb\nNAME READY STATUS PRIMARY UPDATES AGE\nmariadb-repl True Running mariadb-repl-1 ReplicasFirstPrimaryLast 3d2h\n```\n\n#### Scaling out\n\nThe operator will scale horizontaly the replication cluster whenever you increase the number of `spec.replicas`. Before doing so, you should specify a template `PhysicalBackup` resource that the operator will use to create the actual `PhysicalBackup` objects to set up new replicas during scaling out events:\n\n```yaml\napiVersion: k8s.mariadb.com/v1alpha1\nkind: MariaDB\nmetadata:\n name: mariadb-repl\nspec:\n replication:\n enabled: true\n replica:\n bootstrapFrom:\n physicalBackupTemplateRef:\n name: physicalbackup-tpl\n---\napiVersion: k8s.mariadb.com/v1alpha1\nkind: PhysicalBackup\nmetadata:\n name: physicalbackup-tpl\nspec:\n mariaDbRef:\n name: mariadb-repl\n schedule:\n suspend: true\n storage:\n volumeSnapshot:\n volumeSnapshotClassName: csi-hostpath-snapclass\n```\n\nAfter configuring this, you will be able to scale the cluster simply by:\n\n```bash\nkubectl scale mariadb mariadb-repl --replicas=4\n\nkubectl get mariadb\nNAME READY STATUS PRIMARY UPDATES AGE\nmariadb-repl False Scaling out mariadb-repl-1 ReplicasFirstPrimaryLast 3d5h\n\nkubectl get pods\nNAME READY STATUS RESTARTS AGE\nmariadb-repl-0 2/2 Running 0 137m\nmariadb-repl-1 2/2 Running 0 3d5h\nmariadb-repl-2 2/2 Running 0 3d5h\nmariadb-repl-3 2/2 Running 0 40s\n```\n\n#### Replica recovery\n\nThe operator has the ability to automatically recover replicas that become unavailable and report a specific error code in the replication status. For doing so, the operator continiously monitors the replication status of each replica, and whenever they report a known error code, a recovery operation will be triggered.\n\nSimilarly to the scaling out operation, you need to define a `PhysicalBackup` template and set a reference to it in the `spec.replication.replica.bootstrapFrom` field of the `MariaDB` CR. Additionally, you need to explicitly enable the replica recovery, as it is disabled by default:\n\n```yaml\napiVersion: k8s.mariadb.com/v1alpha1\nkind: MariaDB\nmetadata:\n name: mariadb-repl\nspec:\n replication:\n enabled: true\n replica:\n bootstrapFrom:\n physicalBackupTemplateRef:\n name: physicalbackup-tpl\n recovery:\n enabled: true\n errorDurationThreshold: 5m\n```\n\nWe will be simulating a [`1236` error](https://mariadb.com/docs/server/reference/error-codes/mariadb-error-codes-1200-to-1299/e1236) in a replica to demostrate how the recovery process works:\n\n> \\[!CAUTION]\n> Do not perform the following steps in a production environment.\n\n- Purge the binary logs in the primary:\n\n```bash\nPRIMARY=$(kubectl get mariadb mariadb-repl -o jsonpath=\"{.status.currentPrimary}\")\necho \"Purging binary logs in primary $PRIMARY\"\nkubectl exec -it $PRIMARY -c mariadb -- mariadb -u root -p'MariaDB11!' --ssl=false -e \"FLUSH LOGS;\"\nkubectl exec -it $PRIMARY -c mariadb -- mariadb -u root -p'MariaDB11!' --ssl=false -e \"PURGE BINARY LOGS BEFORE NOW();\"\nkubectl exec -it $PRIMARY -c mariadb -- mariadb -u root -p'MariaDB11!' --ssl=false -e \"SHOW BINARY LOGS;\"\n```\n\n- Delete the PVC and restart one of the replicas:\n\n```bash\nREPLICA=$(kubectl get mariadb mariadb-repl -o jsonpath='{.status.replication.replicas}' | jq -r 'keys[]' | head -n1)\necho \"Deleting PVC and restarting replica $REPLICA\"\nkubectl delete pvc storage-$REPLICA --wait=false \nkubectl delete pod $REPLICA --wait=false \n```\n\nThis will trigger a replica recovery operation:\n\n```bash\nkubectl get mariadb\nNAME READY STATUS PRIMARY UPDATES AGE\nmariadb-repl False Recovering replicas mariadb-repl-1 ReplicasFirstPrimaryLast 3d6h\n\nkubectl get pods\nNAME READY STATUS RESTARTS AGE\nmariadb-repl-0 0/2 PodInitializing 0 22s\nmariadb-repl-0-physicalbackup-init-qn79f 0/1 Completed 0 8s\nmariadb-repl-1 2/2 Running 0 3d6h\nmariadb-repl-2 2/2 Running 0 3d6h\nmariadb-repl-metrics-56865fff65-t72kc 1/1 Running 0 3d6h\nmariadb-repl-physicalbackup-replica-recovery-2025102020270r98zr 0/1 Completed 0 31s\n\nkubectl get mariadb\nNAME READY STATUS PRIMARY UPDATES AGE\nmariadb-repl True Running mariadb-repl-1 ReplicasFirstPrimaryLast 3d6h\n```\n\n#### Documentation\n\nPlease refer to the **[replication docs](https://redirect.github.com/mariadb-operator/mariadb-operator/blob/main/docs/replication.md)** for further details.\n\n***\n\n**`mariadb-operator` needs your support! Please consider contributing by adding yourself to the [list of adopters](https://redirect.github.com/mariadb-operator/mariadb-operator/blob/main/ADOPTERS.md) or starring the project! \ud83c\udf1f**\n\n#### What's Changed\n\n- Fix physicalbackup webhook validation by [@​mmontes11](https://redirect.github.com/mmontes11) in [#​1489](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1489)\n- Enhanced galera recovery by [@​mmontes11](https://redirect.github.com/mmontes11) in [#​1491](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1491)\n- Add explicit ns in mariadb-cluster chart by [@​hedgieinsocks](https://redirect.github.com/hedgieinsocks) in [#​1492](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1492)\n- Allow standalone startup and liveness replication probes by [@​hedgieinsocks](https://redirect.github.com/hedgieinsocks) in [#​1495](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1495)\n- Bump sigs.k8s.io/controller-runtime from 0.21.0 to 0.22.3 by [@​dependabot](https://redirect.github.com/dependabot)\\[bot] in [#​1472](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1472)\n- Update replication docs by [@​hedgieinsocks](https://redirect.github.com/hedgieinsocks) in [#​1497](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1497)\n- Replication enhancements by [@​mmontes11](https://redirect.github.com/mmontes11) in [#​1498](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1498)\n\n**Full Changelog**: <https://github.com/mariadb-operator/mariadb-operator/compare/25.10.1...25.10.2>\n\n### [`v25.10.1`](https://redirect.github.com/mariadb-operator/mariadb-operator/releases/tag/25.10.1)\n\n[Compare Source](https://redirect.github.com/mariadb-operator/mariadb-operator/compare/mariadb-operator-25.10.0...mariadb-operator-25.10.1)\n\n> \\[!IMPORTANT]\\\n> There is a regression in this version. Please upgrade to [25.10.2](https://redirect.github.com/mariadb-operator/mariadb-operator/releases/tag/25.10.2) directly.\n\n**`mariadb-operator` [25.10.1](https://redirect.github.com/mariadb-operator/mariadb-operator/releases/tag/25.10.1) is here!** \ud83e\uddad\n\nWe are thrilled to announce that our **highly available, replication-based topology is now generally available!** \ud83c\udf89 It is been quite a journey and we are very excited about this milestone. A huge thank-you to everyone involved, specially for those who actively contributed to the development of this feature, namely [@​hedgieinsocks](https://redirect.github.com/hedgieinsocks) and [@​Michaelpalacce](https://redirect.github.com/Michaelpalacce)! \ud83d\ude47\ud83c\udffc Please refer to the **[Pull Request for additional details](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1441)** about all the changes introduced in this release.\n\nIf you're upgrading from previous versions, **do not miss the [UPGRADE GUIDE](https://redirect.github.com/mariadb-operator/mariadb-operator/blob/main/docs/releases/UPGRADE_25.10.0.md)** for a smooth transition.\n\n#### Provisioning a replication cluster\n\nIn order to provision a replication cluster, you need to configure a number of `replicas` greater than `1` and set the `replication.enabled=true` in the `MariaDB` CR:\n\n```yaml\napiVersion: k8s.mariadb.com/v1alpha1\nkind: MariaDB\nmetadata:\n name: mariadb-repl\nspec:\n replicas: 3\n replication:\n enabled: true\n```\n\nAfter applying the previous CR, the operator will provision a replication cluster with one primary and two replicas. The operator will take care of setting up replication, configuring the replication user and monitoring the replication status:\n\n```bash\nkubectl get pods\nNAME READY STATUS RESTARTS AGE\nmariadb-repl-0 2/2 Running 0 2d19h\nmariadb-repl-1 2/2 Running 0 2d19h\nmariadb-repl-2 2/2 Running 0 2d19h\nmariadb-repl-metrics-56865fff65-t72kc 1/1 Running 0 2d20h\n\nkubectl get mariadb\nNAME READY STATUS PRIMARY UPDATES AGE\nmariadb-repl True Running mariadb-repl-0 ReplicasFirstPrimaryLast 2d20h\n```\n\nAs you can see, the primary can be identified in the `PRIMARY` column of the `kubectl get mariadb` output. You may also inspect the current replication status by checking the `MariaDB` status.\n\n#### Primary failover\n\nWhenever the primary `Pod` goes down, the operator will automatically trigger a failover to the furthest advanced replica. This is the default behaviour, and can be configured by setting:\n\n```yaml\napiVersion: k8s.mariadb.com/v1alpha1\nkind: MariaDB\nmetadata:\n name: mariadb-repl\nspec:\n replicas: 3\n replication:\n enabled: true\n primary:\n autoFailover: true\n autoFailoverDelay: 0s\n```\n\nIn this situation, the following status will be reported in the `MariaDB` CR:\n\n```bash\nkubectl get mariadb\nNAME READY STATUS PRIMARY UPDATES AGE\nmariadb-repl False Switching primary to 'mariadb-repl-1' mariadb-repl-0 ReplicasFirstPrimaryLast 3d2h \n\nkubectl get mariadb\nNAME READY STATUS PRIMARY UPDATES AGE\nmariadb-repl True Running mariadb-repl-1 ReplicasFirstPrimaryLast 3d2h\n```\n\n#### Scaling out\n\nThe operator will scale horizontaly the replication cluster whenever you increase the number of `spec.replicas`. Before doing so, you should specify a template `PhysicalBackup` resource that the operator will use to create the actual `PhysicalBackup` objects to set up new replicas during scaling out events:\n\n```yaml\napiVersion: k8s.mariadb.com/v1alpha1\nkind: MariaDB\nmetadata:\n name: mariadb-repl\nspec:\n replication:\n enabled: true\n replica:\n bootstrapFrom:\n physicalBackupTemplateRef:\n name: physicalbackup-tpl\n---\napiVersion: k8s.mariadb.com/v1alpha1\nkind: PhysicalBackup\nmetadata:\n name: physicalbackup-tpl\nspec:\n mariaDbRef:\n name: mariadb-repl\n schedule:\n suspend: true\n storage:\n volumeSnapshot:\n volumeSnapshotClassName: csi-hostpath-snapclass\n```\n\nAfter configuring this, you will be able to scale the cluster simply by:\n\n```bash\nkubectl scale mariadb mariadb-repl --replicas=4\n\nkubectl get mariadb\nNAME READY STATUS PRIMARY UPDATES AGE\nmariadb-repl False Scaling out mariadb-repl-1 ReplicasFirstPrimaryLast 3d5h\n\nkubectl get pods\nNAME READY STATUS RESTARTS AGE\nmariadb-repl-0 2/2 Running 0 137m\nmariadb-repl-1 2/2 Running 0 3d5h\nmariadb-repl-2 2/2 Running 0 3d5h\nmariadb-repl-3 2/2 Running 0 40s\n```\n\n#### Replica recovery\n\nThe operator has the ability to automatically recover replicas that become unavailable and report a specific error code in the replication status. For doing so, the operator continiously monitors the replication status of each replica, and whenever they report a known error code, a recovery operation will be triggered.\n\nSimilarly to the scaling out operation, you need to define a `PhysicalBackup` template and set a reference to it in the `spec.replication.replica.bootstrapFrom` field of the `MariaDB` CR. Additionally, you need to explicitly enable the replica recovery, as it is disabled by default:\n\n```yaml\napiVersion: k8s.mariadb.com/v1alpha1\nkind: MariaDB\nmetadata:\n name: mariadb-repl\nspec:\n replication:\n enabled: true\n replica:\n bootstrapFrom:\n physicalBackupTemplateRef:\n name: physicalbackup-tpl\n recovery:\n enabled: true\n errorDurationThreshold: 5m\n```\n\nWe will be simulating a [`1236` error](https://mariadb.com/docs/server/reference/error-codes/mariadb-error-codes-1200-to-1299/e1236) in a replica to demostrate how the recovery process works:\n\n> \\[!CAUTION]\n> Do not perform the following steps in a production environment.\n\n- Purge the binary logs in the primary:\n\n```bash\nPRIMARY=$(kubectl get mariadb mariadb-repl -o jsonpath=\"{.status.currentPrimary}\")\necho \"Purging binary logs in primary $PRIMARY\"\nkubectl exec -it $PRIMARY -c mariadb -- mariadb -u root -p'MariaDB11!' --ssl=false -e \"FLUSH LOGS; PURGE BINARY LOGS BEFORE NOW();\"\n```\n\n- Delete the PVC and restart one of the replicas:\n\n```bash\nREPLICA=$(kubectl get mariadb mariadb-repl -o jsonpath='{.status.replication.replicas}' | jq -r 'keys[]' | head -n1)\necho \"Deleting PVC and restarting replica $REPLICA\"\nkubectl delete pvc storage-$REPLICA --wait=false \nkubectl delete pod $REPLICA --wait=false \n```\n\nThis will trigger a replica recovery operation:\n\n```bash\nkubectl get mariadb\nNAME READY STATUS PRIMARY UPDATES AGE\nmariadb-repl False Recovering replicas mariadb-repl-1 ReplicasFirstPrimaryLast 3d6h\n\nkubectl get pods\nNAME READY STATUS RESTARTS AGE\nmariadb-repl-0 0/2 PodInitializing 0 22s\nmariadb-repl-0-physicalbackup-init-qn79f 0/1 Completed 0 8s\nmariadb-repl-1 2/2 Running 0 3d6h\nmariadb-repl-2 2/2 Running 0 3d6h\nmariadb-repl-metrics-56865fff65-t72kc 1/1 Running 0 3d6h\nmariadb-repl-physicalbackup-replica-recovery-2025102020270r98zr 0/1 Completed 0 31s\n\nkubectl get mariadb\nNAME READY STATUS PRIMARY UPDATES AGE\nmariadb-repl True Running mariadb-repl-1 ReplicasFirstPrimaryLast 3d6h\n```\n\n#### Documentation\n\nPlease refer to the **[replication docs](https://redirect.github.com/mariadb-operator/mariadb-operator/blob/main/docs/replication.md)** for further details.\n\n***\n\n**`mariadb-operator` needs your support! Please consider contributing by adding yourself to the [list of adopters](https://redirect.github.com/mariadb-operator/mariadb-operator/blob/main/ADOPTERS.md) or starring the project! \ud83c\udf1f**\n\n**Full Changelog**: <https://github.com/mariadb-operator/mariadb-operator/compare/25.10.0...25.10.1>\n\n### [`v25.10.0`](https://redirect.github.com/mariadb-operator/mariadb-operator/releases/tag/25.10.0)\n\n[Compare Source](https://redirect.github.com/mariadb-operator/mariadb-operator/compare/mariadb-operator-25.8.4...mariadb-operator-25.10.0)\n\n> \\[!IMPORTANT]\\\n> There is a regression in this version. Please upgrade to [25.10.2](https://redirect.github.com/mariadb-operator/mariadb-operator/releases/tag/25.10.2) directly.\n\n**`mariadb-operator` [25.10.0](https://redirect.github.com/mariadb-operator/mariadb-operator/releases/tag/25.10.0) is here!** \ud83e\uddad\n\nWe are thrilled to announce that our **highly available, replication-based topology is now generally available!** \ud83c\udf89 It is been quite a journey and we are very excited about this milestone. A huge thank-you to everyone involved, specially for those who actively contributed to the development of this feature, namely [@​hedgieinsocks](https://redirect.github.com/hedgieinsocks) and [@​Michaelpalacce](https://redirect.github.com/Michaelpalacce)! \ud83d\ude47\ud83c\udffc Please refer to the **[Pull Request for additional details](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1441)** about all the changes introduced in this release.\n\nIf you're upgrading from previous versions, **do not miss the [UPGRADE GUIDE](https://redirect.github.com/mariadb-operator/mariadb-operator/blob/main/docs/releases/UPGRADE_25.10.0.md)** for a smooth transition.\n\n#### Provisioning a replication cluster\n\nIn order to provision a replication cluster, you need to configure a number of `replicas` greater than `1` and set the `replication.enabled=true` in the `MariaDB` CR:\n\n```yaml\napiVersion: k8s.mariadb.com/v1alpha1\nkind: MariaDB\nmetadata:\n name: mariadb-repl\nspec:\n replicas: 3\n replication:\n enabled: true\n```\n\nAfter applying the previous CR, the operator will provision a replication cluster with one primary and two replicas. The operator will take care of setting up replication, configuring the replication user and monitoring the replication status:\n\n```bash\nkubectl get pods\nNAME READY STATUS RESTARTS AGE\nmariadb-repl-0 2/2 Running 0 2d19h\nmariadb-repl-1 2/2 Running 0 2d19h\nmariadb-repl-2 2/2 Running 0 2d19h\nmariadb-repl-metrics-56865fff65-t72kc 1/1 Running 0 2d20h\n\nkubectl get mariadb\nNAME READY STATUS PRIMARY UPDATES AGE\nmariadb-repl True Running mariadb-repl-0 ReplicasFirstPrimaryLast 2d20h\n```\n\nAs you can see, the primary can be identified in the `PRIMARY` column of the `kubectl get mariadb` output. You may also inspect the current replication status by checking the `MariaDB` status.\n\n#### Primary failover\n\nWhenever the primary `Pod` goes down, the operator will automatically trigger a failover to the furthest advanced replica. This is the default behaviour, and can be configured by setting:\n\n```yaml\napiVersion: k8s.mariadb.com/v1alpha1\nkind: MariaDB\nmetadata:\n name: mariadb-repl\nspec:\n replicas: 3\n replication:\n enabled: true\n primary:\n autoFailover: true\n autoFailoverDelay: 0s\n```\n\nIn this situation, the following status will be reported in the `MariaDB` CR:\n\n```bash\nkubectl get mariadb\nNAME READY STATUS PRIMARY UPDATES AGE\nmariadb-repl False Switching primary to 'mariadb-repl-1' mariadb-repl-0 ReplicasFirstPrimaryLast 3d2h \n\nkubectl get mariadb\nNAME READY STATUS PRIMARY UPDATES AGE\nmariadb-repl True Running mariadb-repl-1 ReplicasFirstPrimaryLast 3d2h\n```\n\n#### Scaling out\n\nThe operator will scale horizontaly the replication cluster whenever you increase the number of `spec.replicas`. Before doing so, you should specify a template `PhysicalBackup` resource that the operator will use to create the actual `PhysicalBackup` objects to set up new replicas during scaling out events:\n\n```yaml\napiVersion: k8s.mariadb.com/v1alpha1\nkind: MariaDB\nmetadata:\n name: mariadb-repl\nspec:\n replication:\n enabled: true\n replica:\n bootstrapFrom:\n physicalBackupTemplateRef:\n name: physicalbackup-tpl\n---\napiVersion: k8s.mariadb.com/v1alpha1\nkind: PhysicalBackup\nmetadata:\n name: physicalbackup-tpl\nspec:\n mariaDbRef:\n name: mariadb-repl\n schedule:\n suspend: true\n storage:\n volumeSnapshot:\n volumeSnapshotClassName: csi-hostpath-snapclass\n```\n\nAfter configuring this, you will be able to scale the cluster simply by:\n\n```bash\nkubectl scale mariadb mariadb-repl --replicas=4\n\nkubectl get mariadb\nNAME READY STATUS PRIMARY UPDATES AGE\nmariadb-repl False Scaling out mariadb-repl-1 ReplicasFirstPrimaryLast 3d5h\n\nkubectl get pods\nNAME READY STATUS RESTARTS AGE\nmariadb-repl-0 2/2 Running 0 137m\nmariadb-repl-1 2/2 Running 0 3d5h\nmariadb-repl-2 2/2 Running 0 3d5h\nmariadb-repl-3 2/2 Running 0 40s\n```\n\n#### Replica recovery\n\nThe operator has the ability to automatically recover replicas that become unavailable and report a specific error code in the replication status. For doing so, the operator continiously monitors the replication status of each replica, and whenever they report a known error code, a recovery operation will be triggered.\n\nSimilarly to the scaling out operation, you need to define a `PhysicalBackup` template and set a reference to it in the `spec.replication.replica.bootstrapFrom` field of the `MariaDB` CR. Additionally, you need to explicitly enable the replica recovery, as it is disabled by default:\n\n```yaml\napiVersion: k8s.mariadb.com/v1alpha1\nkind: MariaDB\nmetadata:\n name: mariadb-repl\nspec:\n replication:\n enabled: true\n replica:\n bootstrapFrom:\n physicalBackupTemplateRef:\n name: physicalbackup-tpl\n recovery:\n enabled: true\n errorDurationThreshold: 5m\n```\n\nWe will be simulating a [`1236` error](https://mariadb.com/docs/server/reference/error-codes/mariadb-error-codes-1200-to-1299/e1236) in a replica to demostrate how the recovery process works:\n\n> \\[!CAUTION]\n> Do not perform the following steps in a production environment.\n\n- Purge the binary logs in the primary:\n\n```bash\nPRIMARY=$(kubectl get mariadb mariadb-repl -o jsonpath=\"{.status.currentPrimary}\")\necho \"Purging binary logs in primary $PRIMARY\"\nkubectl exec -it $PRIMARY -c mariadb -- mariadb -u root -p'MariaDB11!' --ssl=false -e \"FLUSH LOGS; PURGE BINARY LOGS BEFORE NOW();\"\n```\n\n- Delete the PVC and restart one of the replicas:\n\n```bash\nREPLICA=$(kubectl get mariadb mariadb-repl -o jsonpath='{.status.replication.replicas}' | jq -r 'keys[]' | head -n1)\necho \"Deleting PVC and restarting replica $REPLICA\"\nkubectl delete pvc storage-$REPLICA --wait=false \nkubectl delete pod $REPLICA --wait=false \n```\n\nThis will trigger a replica recovery operation:\n\n```bash\nkubectl get mariadb\nNAME READY STATUS PRIMARY UPDATES AGE\nmariadb-repl False Recovering replicas mariadb-repl-1 ReplicasFirstPrimaryLast 3d6h\n\nkubectl get pods\nNAME READY STATUS RESTARTS AGE\nmariadb-repl-0 0/2 PodInitializing 0 22s\nmariadb-repl-0-physicalbackup-init-qn79f 0/1 Completed 0 8s\nmariadb-repl-1 2/2 Running 0 3d6h\nmariadb-repl-2 2/2 Running 0 3d6h\nmariadb-repl-metrics-56865fff65-t72kc 1/1 Running 0 3d6h\nmariadb-repl-physicalbackup-replica-recovery-2025102020270r98zr 0/1 Completed 0 31s\n\nkubectl get mariadb\nNAME READY STATUS PRIMARY UPDATES AGE\nmariadb-repl True Running mariadb-repl-1 ReplicasFirstPrimaryLast 3d6h\n```\n\n#### Documentation\n\nPlease refer to the **[replication docs](https://redirect.github.com/mariadb-operator/mariadb-operator/blob/main/docs/replication.md)** for further details.\n\n***\n\n**`mariadb-operator` needs your support! Please consider contributing by adding yourself to the [list of adopters](https://redirect.github.com/mariadb-operator/mariadb-operator/blob/main/ADOPTERS.md) or starring the project! \ud83c\udf1f**\n\n#### What's Changed\n\n- Productionize replication provisioning and switchover/failover by [@​mmontes11](https://redirect.github.com/mmontes11) in [#​1434](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1434)\n- `MaxScale` declarative switchover by [@​mmontes11](https://redirect.github.com/mmontes11) in [#​1442](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1442)\n- Replication agent by [@​mmontes11](https://redirect.github.com/mmontes11) in [#​1444](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1444)\n- Replication rolling updates by [@​mmontes11](https://redirect.github.com/mmontes11) in [#​1450](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1450)\n- Refactor/set defaults by [@​Michaelpalacce](https://redirect.github.com/Michaelpalacce) in [#​1449](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1449)\n- Replication backups by [@​mmontes11](https://redirect.github.com/mmontes11) in [#​1452](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1452)\n- Replication scale out by [@​mmontes11](https://redirect.github.com/mmontes11) in [#​1461](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1461)\n- Tracking replication errors in status by [@​mmontes11](https://redirect.github.com/mmontes11) in [#​1466](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1466)\n- refactor: Moved `waitPoint` from `spec.replication.replica` to `spec.replication` by [@​Michaelpalacce](https://redirect.github.com/Michaelpalacce) in [#​1460](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1460)\n- Refactor/remove default connection retries by [@​Michaelpalacce](https://redirect.github.com/Michaelpalacce) in [#​1463](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1463)\n- feat: replicasAllowEvenNumber will now work only for galera by [@​Michaelpalacce](https://redirect.github.com/Michaelpalacce) in [#​1459](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1459)\n- Refactor/async replication sync binlog by [@​Michaelpalacce](https://redirect.github.com/Michaelpalacce) in [#​1465](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1465)\n- Refactor/async repl errgroup by [@​Michaelpalacce](https://redirect.github.com/Michaelpalacce) in [#​1455](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1455)\n- Refactor/connection timeout move by [@​Michaelpalacce](https://redirect.github.com/Michaelpalacce) in [#​1464](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1464)\n- Feature/migration script for 25.10.0 by [@​Michaelpalacce](https://redirect.github.com/Michaelpalacce) in [#​1467](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1467)\n- Test/add restore from physical backup tests by [@​Michaelpalacce](https://redirect.github.com/Michaelpalacce) in [#​1471](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1471)\n- Replica recovery by [@​mmontes11](https://redirect.github.com/mmontes11) in [#​1468](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1468)\n- Primary failover by [@​mmontes11](https://redirect.github.com/mmontes11) in [#​1478](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1478)\n- Support Galera sequences with GTID in Galera recovery process by [@​mmontes11](https://redirect.github.com/mmontes11) in [#​1480](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1480)\n- Test/add replica recovery integration tests by [@​Michaelpalacce](https://redirect.github.com/Michaelpalacce) in [#​1483](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1483)\n- Replication docs by [@​mmontes11](https://redirect.github.com/mmontes11) in [#​1481](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1481)\n- Release 25.10 by [@​mmontes11](https://redirect.github.com/mmontes11) in [#​1441](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1441)\n\n**Full Changelog**: <https://github.com/mariadb-operator/mariadb-operator/compare/25.8.4...25.10.0>\n\n### [`v25.8.4`](https://redirect.github.com/mariadb-operator/mariadb-operator/releases/tag/mariadb-operator-25.8.4)\n\n[Compare Source](https://redirect.github.com/mariadb-operator/mariadb-operator/compare/mariadb-operator-25.8.3...mariadb-operator-25.8.4)\n\nRun and operate MariaDB in a cloud native way\n\n### [`v25.8.3`](https://redirect.github.com/mariadb-operator/mariadb-operator/releases/tag/mariadb-operator-25.8.3)\n\n[Compare Source](https://redirect.github.com/mariadb-operator/mariadb-operator/compare/mariadb-operator-25.8.2...mariadb-operator-25.8.3)\n\nRun and operate MariaDB in a cloud native way\n\n### [`v25.8.2`](https://redirect.github.com/mariadb-operator/mariadb-operator/releases/tag/mariadb-operator-25.8.2)\n\n[Compare Source](https://redirect.github.com/mariadb-operator/mariadb-operator/compare/mariadb-operator-25.8.1...mariadb-operator-25.8.2)\n\nRun and operate MariaDB in a cloud native way\n\n### [`v25.8.1`](https://redirect.github.com/mariadb-operator/mariadb-operator/releases/tag/mariadb-operator-25.8.1)\n\n[Compare Source](https://redirect.github.com/mariadb-operator/mariadb-operator/compare/mariadb-operator-0.38.1...mariadb-operator-25.8.1)\n\nRun and operate MariaDB in a cloud native way\n\n</details>\n\n---\n\n### Configuration\n\n\ud83d\udcc5 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).\n\n\ud83d\udea6 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.\n\n\u267b **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.\n\n\ud83d\udd15 **Ignore**: Close this PR and you won't be reminded about this update again.\n\n---\n\n - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box\n\n---\n\nThis PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/MTRNord/cluster).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi4zMi4yIiwidXBkYXRlZEluVmVyIjoiNDIuMzIuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsidHlwZS9tYWpvci11cGRhdGUiXX0=-->\n", 18 "comments": [], 19 "review_comments": [] 20 }