Skip to content

Rate this page
Thanks for your feedback
Thank you! The feedback has been submitted.

Get free database assistance or contact our experts for personalized support.

Upgrade the Operator and CRD manually

Before you start, export your namespace as an environment variable to simplify the configuration:

export NAMESPACE=<my-namespace>

The upgrade includes the following steps.

  1. Update the Custom Resource Definition for the Operator and the Role-based access control. Take the latest versions from the official repository on GitHub with the following commands:

    kubectl apply --server-side -f https://raw.githubusercontent.com/percona/percona-server-mysql-operator/v1.1.0/deploy/crd.yaml
    kubectl apply --server-side -f https://raw.githubusercontent.com/percona/percona-server-mysql-operator/v1.1.0/deploy/rbac.yaml
    
  2. Next, update the Percona Server for MySQL Operator Deployment in Kubernetes by changing the container image of the Operator Pod to the latest version. Find the image name for the current Operator release in the list of certified images. Use the following command to update the Operator to the 1.1.0 version:

    Use the following command if you deploy both the Operator and the database cluster in the same namespace:

    kubectl apply --server-side -f https://raw.githubusercontent.com/percona/percona-server-mysql-operator/v1.1.0/deploy/operator.yaml -n $NAMESPACE
    

    If you deployed the Operator to manage several clusters in different namespaces (the so-called cluster-wide mode), use the following command:

    kubectl apply --server-side -f https://raw.githubusercontent.com/percona/percona-server-mysql-operator/v1.1.0/deploy/cw-operator.yaml -n $NAMESPACE
    

    For previous releases, please refer to the old releases documentation archive

  3. The deployment rollout will be automatically triggered. You can track the rollout process in real time with the kubectl rollout status command with the name of your cluster:

    kubectl rollout status deployments percona-server-mysql-operator -n $NAMESPACE
    

    Note

    Labels set on the Operator Pod will not be updated during upgrade.

  4. Update the Custom Resource, the database and components. This step ensures all new features and improvements of the latest release work well within your environment.

Update the Custom Resource, the database and components

Update the Custom Resource, the database, backup, proxy and PMM Client image names with a newer version tag. This step ensures all new features and improvements of the latest release work well within your environment.

Find the image names in the list of certified images.

We recommend to update the PMM Server before the upgrade of PMM Client. If you haven’t updated your PMM Server yet, exclude PMM Client from the list of images to update.

Since this is a working cluster, the way to update the Custom Resource is to apply a patch with the kubectl patch ps command.

Select the command that matches your setup from the sections below.

Asynchronous replication uses HAProxy and Orchestrator. It does not use MySQL Router.

  • With PMM Client

    kubectl patch ps ps-cluster1 --type=merge --patch '{
       "spec": {
           "crVersion":"1.1.0",
           "mysql":{ "image": "percona/percona-server:8.4.8-8.1" },
           "proxy":{
              "haproxy":{ "image": "percona/haproxy:2.8.18-1" }
           },
           "orchestrator":{ "image": "percona/percona-orchestrator:3.2.6-20" },
           "backup":{ "image": "percona/percona-xtrabackup:8.4.0-5.1" },
           "toolkit":{ "image": "percona/percona-toolkit:3.7.1" },
           "pmm": { "image": "percona/pmm-client:3.7.0" }
       }}'
    
  • Without PMM Client

    kubectl patch ps ps-cluster1 --type=merge --patch '{
       "spec": {
           "crVersion":"1.1.0",
           "mysql":{ "image": "percona/percona-server:8.4.8-8.1" },
           "proxy":{
              "haproxy":{ "image": "percona/haproxy:2.8.18-1" }
           },
           "orchestrator":{ "image": "percona/percona-orchestrator:3.2.6-20" },
           "backup":{ "image": "percona/percona-xtrabackup:8.4.0-5.1" },
           "toolkit":{ "image": "percona/percona-toolkit:3.7.1" }
       }}'
    

Group replication with HAProxy uses HAProxy only. It does not use MySQL Router or Orchestrator.

  • With PMM Client

    kubectl patch ps ps-cluster1 --type=merge --patch '{
       "spec": {
           "crVersion":"1.1.0",
           "mysql":{ "image": "percona/percona-server:8.4.8-8.1" },
           "proxy":{
              "haproxy":{ "image": "percona/haproxy:2.8.18-1" }
           },
           "backup":{ "image": "percona/percona-xtrabackup:8.4.0-5.1" },
           "toolkit":{ "image": "percona/percona-toolkit:3.7.1" },
           "pmm": { "image": "percona/pmm-client:3.7.0" }
       }}'
    
  • Without PMM Client

    kubectl patch ps ps-cluster1 --type=merge --patch '{
       "spec": {
           "crVersion":"1.1.0",
           "mysql":{ "image": "percona/percona-server:8.4.8-8.1" },
           "proxy":{
              "haproxy":{ "image": "percona/haproxy:2.8.18-1" }
           },
           "backup":{ "image": "percona/percona-xtrabackup:8.4.0-5.1" },
           "toolkit":{ "image": "percona/percona-toolkit:3.7.1" }
       }}'
    

Group replication with MySQL Router uses MySQL Router only. It does not use HAProxy or Orchestrator.

  • With PMM Client

    kubectl patch ps ps-cluster1 --type=merge --patch '{
       "spec": {
           "crVersion":"1.1.0",
           "mysql":{ "image": "percona/percona-server:8.4.8-8.1" },
           "proxy":{
              "router":{ "image": "percona/percona-mysql-router:8.4.8" }
           },
           "backup":{ "image": "percona/percona-xtrabackup:8.4.0-5.1" },
           "toolkit":{ "image": "percona/percona-toolkit:3.7.1" },
           "pmm": { "image": "percona/pmm-client:3.7.0" }
       }}'
    
  • Without PMM Client

    kubectl patch ps ps-cluster1 --type=merge --patch '{
       "spec": {
           "crVersion":"1.1.0",
           "mysql":{ "image": "percona/percona-server:8.4.8-8.1" },
           "proxy":{
              "router":{ "image": "percona/percona-mysql-router:8.4.8" }
           },
           "backup":{ "image": "percona/percona-xtrabackup:8.4.0-5.1" },
           "toolkit":{ "image": "percona/percona-toolkit:3.7.1" }
       }}'
    

Asynchronous replication uses HAProxy and Orchestrator. It does not use MySQL Router.

  • With PMM Client

    kubectl patch ps ps-cluster1 --type=merge --patch '{
       "spec": {
           "crVersion":"1.1.0",
           "mysql":{ "image": "percona/percona-server:8.0.45-36.1" },
           "proxy":{
              "haproxy":{ "image": "percona/haproxy:2.8.18-1" }
           },
           "orchestrator":{ "image": "percona/percona-orchestrator:3.2.6-20" },
           "backup":{ "image": "percona/percona-xtrabackup:8.0.35-35.1" },
           "toolkit":{ "image": "percona/percona-toolkit:3.7.1" },
           "pmm": { "image": "percona/pmm-client:3.7.0" }
       }}'
    
  • Without PMM Client

    kubectl patch ps ps-cluster1 --type=merge --patch '{
       "spec": {
           "crVersion":"1.1.0",
           "mysql":{ "image": "percona/percona-server:8.0.45-36.1" },
           "proxy":{
              "haproxy":{ "image": "percona/haproxy:2.8.18-1" }
           },
           "orchestrator":{ "image": "percona/percona-orchestrator:3.2.6-20" },
           "backup":{ "image": "percona/percona-xtrabackup:8.0.35-35.1" },
           "toolkit":{ "image": "percona/percona-toolkit:3.7.1" }
       }}'
    

Group replication with HAProxy uses HAProxy only. It does not use MySQL Router or Orchestrator.

  • With PMM Client

    kubectl patch ps ps-cluster1 --type=merge --patch '{
       "spec": {
           "crVersion":"1.1.0",
           "mysql":{ "image": "percona/percona-server:8.0.45-36.1" },
           "proxy":{
              "haproxy":{ "image": "percona/haproxy:2.8.18-1" }
           },
           "backup":{ "image": "percona/percona-xtrabackup:8.0.35-35.1" },
           "toolkit":{ "image": "percona/percona-toolkit:3.7.1" },
           "pmm": { "image": "percona/pmm-client:3.7.0" }
       }}'
    
  • Without PMM Client

    kubectl patch ps ps-cluster1 --type=merge --patch '{
       "spec": {
           "crVersion":"1.1.0",
           "mysql":{ "image": "percona/percona-server:8.0.45-36.1" },
           "proxy":{
              "haproxy":{ "image": "percona/haproxy:2.8.18-1" }
           },
           "backup":{ "image": "percona/percona-xtrabackup:8.0.35-35.1" },
           "toolkit":{ "image": "percona/percona-toolkit:3.7.1" }
       }}'
    

Group replication with MySQL Router uses MySQL Router only. It does not use HAProxy or Orchestrator.

  • With PMM Client

    kubectl patch ps ps-cluster1 --type=merge --patch '{
       "spec": {
           "crVersion":"1.1.0",
           "mysql":{ "image": "percona/percona-server:8.0.45-36.1" },
           "proxy":{
              "router":{ "image": "percona/percona-mysql-router:8.0.45" }
           },
           "backup":{ "image": "percona/percona-xtrabackup:8.0.35-35.1" },
           "toolkit":{ "image": "percona/percona-toolkit:3.7.1" },
           "pmm": { "image": "percona/pmm-client:3.7.0" }
       }}'
    
  • Without PMM Client

    kubectl patch ps ps-cluster1 --type=merge --patch '{
       "spec": {
           "crVersion":"1.1.0",
           "mysql":{ "image": "percona/percona-server:8.0.45-36.1" },
           "proxy":{
              "router":{ "image": "percona/percona-mysql-router:8.0.45" }
           },
           "backup":{ "image": "percona/percona-xtrabackup:8.0.35-35.1" },
           "toolkit":{ "image": "percona/percona-toolkit:3.7.1" }
       }}'
    

Last update: April 17, 2026
Created: April 17, 2026