Operator for K8s MySQL InnoDB Cluster グループレプリケーション、MySQL Router、MySQL Shell の3つの技術要素を組み合わせて実現す るMySQLサーバの高可用性構成 MySQL Connector Application MySQL Router MySQL Connector Application MySQL Router MySQL Shell P S S グループレプリケーション • 複数のMySQLサーバのデータをトランザク ション整合性を担保して複製可能 • プライマリへの自動昇格機能も実装 • 複数のMySQL接続、 MySQL/MySQLXプ ロトコルに対応 • バックエンドの構成変 更や障害発生を検出 して接続の切り替えを 自動的に実行 mysqlshクライアント、コマンドを利用して InnoDB Clusterの構成や設定管理が可能 P = Primary, S=Secondary
Operator for K8s MySQL InnoDB Cluster MySQL InnoDB Clusterの高可用性がシングルプライマリ型でどのように機能するか? S S P MySQL Router App S S P MySQL Router App R/W R/O S P MySQL Router App P R/O R/O R/W S MySQL Router App P R/O R/W S Group Replication Group Replication Group Replication Group Replication
Operator for K8s Container-based application & MySQL Oracle MySQL Operatorは、現時点(2021年8月)プレビュー版のため本番利用は厳しいので、OCIにおける 「MySQL Database Service」というMySQLのマネージドサービスとの利用を推奨 Use MySQL Kubernetes Operator to automate Use MySQL Database Service - Fully Managed Service - HeatWave Query Acceleration - Peace of Mind Architecture https://www.oracle.com/jp/mysql/
MySQL Autopilot for MySQL HeatWave Service MySQL Autopilotは、9つの新しい機械学習を利用した自動化機能を提供し、 MySQL HeatWave Serviceのパフォーマンスとスケーラビリティをさらに向上 https://www.oracle.com/uk/news/announcement/mysql-autopilot-for-heatwave-2021-08-10/ Press Release
Operator for K8s 2021/7/27 「最新!MySQL Operator for Kubernetes」ウェビナーフィードバック • MySQL InnoDB ReplicaSet は未対応(2021年8月時点) MySQL InnoDB Clusterのグループレプリケーションに対する、 MySQL InnoDB ReplicaSetは、非同期レプリケーション。 グループ レプリケーション 非同期 レプリケーション • MySQL OperatorからMySQL Shellでのスケールは可能ではあるが、Kubernetesのマニフェストで対 応することを推奨 MySQL Shellでは、MySQL管理、Kubernetesクラスタに関係するものはマニフェストで管理することを推奨。
Operator for K8s DEMO Demo環境概要図 WordPress + Oracle MySQL Operator (Scale Out/In & Rolling Update) on K8s NFS PVC PV PVC PV Service Service Service Cloud Shell MySQL Operator Namespace: mysql-operator Namespace: default PVC PV PVC PV PVC PV Block Volume Pod Pod Pod Pod Pod Pod mycluster wordpress-service nsf-service Port: 6446 MySQL Router Pod Block Volume Block Volume Block Volume mycluster-router Primary Secondary Secondary mycluster-0 mycluster-1 mycluster-2 Group Replication WordPress Podを 10にスケールさせます。 MySQL Routerを2、MySQL Serverインスタン スを5にスケールさせます。その後、元の値に戻します。
Operator for K8s DEMO Self-healing(Failover) Self-healing(Failover)/Backup Pod Pod Pod mysql-0 mysql-1 mysql-2 MySQL Router mysql> create database test; mysql> create table test.test (i int primary key); mysql> insert into test.test values (1), (2), (3); Cloud Shell ① DB/Table Create ② Group Replication Pod Pod Pod mysql-0 mysql-1 mysql-2 MySQL Router Cloud Shell $ kubectl delete pod mysql-0 ③ Delete mysql-0 ⑤ Group Replication mysql> insert into test.test values (4), (5), (6); ④ Insert values into table of mysql-1
Operator for K8s DEMO Pod Pod Pod mysql-0 mysql-1 mysql-2 MySQL Router mysql> select * from test.test; Cloud Shell ⑦ Check table of mysql-0 ⑥ Group Replication Self-healing(Failover) Self-healing(Failover)/Backup
Operator for Kubernetes https://github.com/mysql/mysql-operator MySQL Technology Cafe 13 https://github.com/oracle-japan/mysql-technology-cafe-13 『データベース管理システム「MySQL」の新クライアント MySQL Shellを使おう』 梶山 隆輔 (著) Introduction to MySQL Operator for Kubernetes https://www.youtube.com/watch?v=Qb1R1Dl0-tA Kubernetes x MySQL ! OperatorでMySQLを動かしてみよう https://speakerdeck.com/cotoc/oracle-mysql-operator-jian-zheng-sitemita