Skip to content
logo
Percona Operator for MySQL
Design and architecture
Initializing search
    percona/k8sps-docs
    percona/k8sps-docs
    • Welcome
      • Design and architecture
      • Install with Helm
      • Install on Minikube
      • System Requirements
      • Install on Google Kubernetes Engine (GKE)
      • Install on Amazon Elastic Kubernetes Service (AWS EKS)
      • Generic Kubernetes installation
      • Backup and restore
      • Application and system users
      • Anti-affinity and tolerations
      • Labels and annotations
      • Changing MySQL Options
      • Exposing the cluster
      • Transport Encryption (TLS/SSL)
      • Telemetry
      • Horizontal and vertical scaling
      • Monitor with Percona Monitoring and Management (PMM)
      • Add sidecar containers
      • Monitor Kubernetes
      • Custom Resource options
      • Percona certified images
      • Copyright and licensing information
      • Trademark policy
      • Release notes index
      • Percona Operator for MySQL 0.5.0 (2023-03-30)
      • Percona Operator for MySQL 0.4.0 (2023-01-30)
      • Percona Operator for MySQL 0.3.0 (2022-09-29)
      • Percona Operator for MySQL 0.2.0 (2022-06-30)
      • Percona Distribution for MySQL Operator based on Percona Server for MySQL 0.1.0 (2022-01-25)

    Design overview¶

    The Percona Operator for MySQL automates and simplifies deploying and managing open source MySQL clusters on Kubernetes.

    Containers deployed with the Operator include the following components:

    • Percona Server for MySQL - a free, fully compatible, enhanced, and open source drop-in replacement for any MySQL database,

    • Percona XtraBackup - a hot backup utility for MySQL based servers that doesn’t lock your database during the backup,

    • Orchestrator - a replication topology manager for MySQL used when asynchronous replication betweem MySQL instances is turned on,

    • HAProxy - a load balancing and proxy service used when asynchronous replication betweem MySQL instances is turned on),

    • MySQL Router - a proxy solution used when group replication between MySQL instances is turned on,

    • Percona Toolkit - a set of tools useful in debugging MySQL Pods.

    The design of the Operator is highly bound to Percona Server for MySQL and the high availability implementation based on Orchestrator, which in its turn can be briefly described with the following diagram.

    image

    Being a regular MySQL Server instance, each node contains the same set of data synchronized accross nodes. The recommended configuration is to have at least 3 nodes. In a basic setup with this amount of nodes, Percona Server for MySQL provides high availability, continuing to function if you take any of the nodes down.

    To provide high availability operator uses node affinity to run Percona Server for MySQL instances on separate worker nodes if possible. If some node fails, the pod with it is automatically re-created on another node.

    image

    To provide data storage for stateful applications, Kubernetes uses Persistent Volumes. A PersistentVolumeClaim (PVC) is used to implement the automatic storage provisioning to pods. If a failure occurs, the Container Storage Interface (CSI) should be able to re-mount storage on a different node. The PVC StorageClass must support this feature (Kubernetes and OpenShift support this in versions 1.9 and 3.9 respectively).

    The Operator functionality extends the Kubernetes API with PerconaServerForMySQL object, and it is implemented as a golang application. Each PerconaServerForMySQL object maps to one separate MySQL setup. The Operator listens to all events on the created objects. When a new PerconaServerForMySQL object is created, or an existing one undergoes some changes or deletion, the Operator automatically creates/changes/deletes all needed Kubernetes objects with the appropriate settings to provide a proper Percona Server for MySQL operation.

    Contact Us

    For free technical help, visit the Percona Community Forum.

    To report bugs or submit feature requests, open a JIRA ticket.

    For paid support and managed or consulting services , contact Percona Sales.


    Last update: 2023-08-31
    Percona LLC and/or its affiliates, © 2009 - 2023
    Made with Material for MkDocs

    Cookie consent

    We use cookies to recognize your repeated visits and preferences, as well as to measure the effectiveness of our documentation and whether users find what they're searching for. With your consent, you're helping us to make our documentation better. Read more about Percona Cookie Policy.