본문 바로가기
MySQL

MySQL Operator

by 흰색남자 2022. 11. 30.

쿠버네티스 Innodb 클러스터 설치 참고 문헌

https://dev.mysql.com/doc/mysql-operator/en/mysql-operator-preface.html

Opeartor이란?

정의 ( feat: kubernetes.io )

  • 오퍼레이터(Operator)는 사용자 정의 리소스를 사용하여 애플리케이션 및 해당 컴포넌트를 관리하는 쿠버네티스의 소프트웨어 익스텐션이다. 오퍼레이터는 쿠버네티스 원칙, 특히 컨트롤 루프를 따른다.
  • 사용자 정의 리소스를 사용해서 쿠버네티스 요소들을 관리하는 역할을 한다는 것
  • Operator 패턴은 기존 Kubernetes에서 관리할 수 없었던 것들을 오퍼레이터라는 요소의 추가로 관리의 범위를 사용자 정의 리소스까지 확장해 관리성과 자동화를 향상하도록 등장한 개념입니다.

Mysql Operator이란?

  • Mysql DB를 Operator 패턴으로 운영함
  • Mysql-operator는 쿠버네티스 mysql서버와 mysql 라우터로 구성되며 mysql innodb 클러스터를 관리함. mysql-operator는 쿠버네티스 클러스터에서 실행되고 mysql operator를 사용하여 쿠버네티스에 배포할 수 있음. // 공식 도큐먼트
  • Mysql operator가 추상화해서 관리하는 오브젝트는 바로 Mysql InnoDB 클러스터
  • Mysql Operator는 Mysql 서버와 Mysql 라우터로 이루어진 Mysql InnoDB 클러스터
  • Mysql operator는 InnoDB 클러스터라는 추상화된 사용자 정의 리소스로  Mysql 서버와 라우터들의 관리를 자동화하고 간편하게 만들어주는 역할을 함

 

Mysql Router

  • mysql 클러스터 중 작업을 실행할 서버를 고르는 stateless 애플리케이션.
  • DB인스턴스를 캐싱하여 라우팅할 인스턴스를 관리함.
  • 클러스터의 replicas 개수를 조절하는 것으로 수평적 확장이 가능함.

Mysql Server Instances

  • 실제 DB 역할을 하게 되는 서버 인스턴스 그룹.
  • **Single-Primary mode(Master-slave)**와 Multi-Primary mode(Group-Replication // 모든 인스턴스가 Primary로 동작함) 2가지 모드가 존재함

Mysql-operator

  • 위의 서버와 라우터들을 관리하는 operator
  • Deployment로 관리됨.
  • InnoDBcluster, Mysqlbackup 등의 사용자 정의 리소스를 통해 각각 서버 클러스터와 서버 백업을 추상화해 관리함,

 

Install

mysql endpoint : mycluster.mysql-operator.svc.cluster.local:3306

user : root

password : sakila

mysql-operator crds

kubectl apply -f https://raw.githubusercontent.com/mysql/mysql-operator/trunk/deploy/deploy-crds.yaml

mysql-operator

kubectl apply -f https://raw.githubusercontent.com/mysql/mysql-operator/trunk/deploy/deploy-operator.yaml

Innodbcluster secret

kubectl create secret generic ${secretName} \ --from-literal=rootUser=${userName} \ --from-literal=rootHost=% \ --from-literal=rootPassword="${password}

Mysql-innodb-cluster

apiVersion: mysql.oracle.com/v2 kind: InnoDBCluster metadata: name: mycluster spec: secretName: mypwds tlsUseSelfSigned:

true

instances: 3 router: instances: 1

Test

kubectl run --rm -it myshell --image=mysql/mysql-operator — /bin/bash

mysqlsh

fqdn

\connect root@${cluster-name}.${namespace}.svc.cluster.local:3306

Please provide the password for 'root@mycluster.mysql-operator.svc.cluster.local:3306':

시크릿에서 생성한 비밀번호 입력

Failover test // 잘 됨.

'

  • Mysql router가 잘 동작하는 것을 볼 수 있다.

쿠버네티스 Innodb 클러스터 설치 참고 문헌

https://dev.mysql.com/doc/mysql-operator/en/mysql-operator-preface.html

 

'MySQL' 카테고리의 다른 글

MySQL Operator 구조 - Router, Instance, Operator  (0) 2022.12.12