cluster.meta

Issues/PRs archive for MTRNord/cluster
git clone git://archive.git.mtrnord.blog/MTRNord/cluster.meta.git
Log | Files | Refs

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 [@&#8203;hedgieinsocks](https://redirect.github.com/hedgieinsocks) and [@&#8203;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 [@&#8203;mmontes11](https://redirect.github.com/mmontes11) in [#&#8203;1489](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1489)\n- Enhanced galera recovery by [@&#8203;mmontes11](https://redirect.github.com/mmontes11) in [#&#8203;1491](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1491)\n- Add explicit ns in mariadb-cluster chart by [@&#8203;hedgieinsocks](https://redirect.github.com/hedgieinsocks) in [#&#8203;1492](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1492)\n- Allow standalone startup and liveness replication probes by [@&#8203;hedgieinsocks](https://redirect.github.com/hedgieinsocks) in [#&#8203;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 [@&#8203;dependabot](https://redirect.github.com/dependabot)\\[bot] in [#&#8203;1472](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1472)\n- Update replication docs by [@&#8203;hedgieinsocks](https://redirect.github.com/hedgieinsocks) in [#&#8203;1497](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1497)\n- Replication enhancements by [@&#8203;mmontes11](https://redirect.github.com/mmontes11) in [#&#8203;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 [@&#8203;hedgieinsocks](https://redirect.github.com/hedgieinsocks) and [@&#8203;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 [@&#8203;hedgieinsocks](https://redirect.github.com/hedgieinsocks) and [@&#8203;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 [@&#8203;mmontes11](https://redirect.github.com/mmontes11) in [#&#8203;1434](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1434)\n- `MaxScale` declarative switchover by [@&#8203;mmontes11](https://redirect.github.com/mmontes11) in [#&#8203;1442](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1442)\n- Replication agent by [@&#8203;mmontes11](https://redirect.github.com/mmontes11) in [#&#8203;1444](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1444)\n- Replication rolling updates by [@&#8203;mmontes11](https://redirect.github.com/mmontes11) in [#&#8203;1450](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1450)\n- Refactor/set defaults by [@&#8203;Michaelpalacce](https://redirect.github.com/Michaelpalacce) in [#&#8203;1449](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1449)\n- Replication backups by [@&#8203;mmontes11](https://redirect.github.com/mmontes11) in [#&#8203;1452](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1452)\n- Replication scale out by [@&#8203;mmontes11](https://redirect.github.com/mmontes11) in [#&#8203;1461](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1461)\n- Tracking replication errors in status by [@&#8203;mmontes11](https://redirect.github.com/mmontes11) in [#&#8203;1466](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1466)\n- refactor: Moved `waitPoint` from `spec.replication.replica` to `spec.replication` by [@&#8203;Michaelpalacce](https://redirect.github.com/Michaelpalacce) in [#&#8203;1460](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1460)\n- Refactor/remove default connection retries by [@&#8203;Michaelpalacce](https://redirect.github.com/Michaelpalacce) in [#&#8203;1463](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1463)\n- feat: replicasAllowEvenNumber will now work only for galera by [@&#8203;Michaelpalacce](https://redirect.github.com/Michaelpalacce) in [#&#8203;1459](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1459)\n- Refactor/async replication sync binlog by [@&#8203;Michaelpalacce](https://redirect.github.com/Michaelpalacce) in [#&#8203;1465](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1465)\n- Refactor/async repl errgroup by [@&#8203;Michaelpalacce](https://redirect.github.com/Michaelpalacce) in [#&#8203;1455](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1455)\n- Refactor/connection timeout move by [@&#8203;Michaelpalacce](https://redirect.github.com/Michaelpalacce) in [#&#8203;1464](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1464)\n- Feature/migration script for 25.10.0 by [@&#8203;Michaelpalacce](https://redirect.github.com/Michaelpalacce) in [#&#8203;1467](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1467)\n- Test/add restore from physical backup tests by [@&#8203;Michaelpalacce](https://redirect.github.com/Michaelpalacce) in [#&#8203;1471](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1471)\n- Replica recovery by [@&#8203;mmontes11](https://redirect.github.com/mmontes11) in [#&#8203;1468](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1468)\n- Primary failover by [@&#8203;mmontes11](https://redirect.github.com/mmontes11) in [#&#8203;1478](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1478)\n- Support Galera sequences with GTID in Galera recovery process by [@&#8203;mmontes11](https://redirect.github.com/mmontes11) in [#&#8203;1480](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1480)\n- Test/add replica recovery integration tests by [@&#8203;Michaelpalacce](https://redirect.github.com/Michaelpalacce) in [#&#8203;1483](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1483)\n- Replication docs by [@&#8203;mmontes11](https://redirect.github.com/mmontes11) in [#&#8203;1481](https://redirect.github.com/mariadb-operator/mariadb-operator/pull/1481)\n- Release 25.10 by [@&#8203;mmontes11](https://redirect.github.com/mmontes11) in [#&#8203;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 }