お問い合わせ
お問い合わせ
TOPICS
更新情報
ホーム > ブログ > Oracle Cloud > Oracle Cloud(OCI)ついにPaaSのMySQL(MySQL Database Service)が登場!

Oracle Cloud(OCI)ついにPaaSのMySQL(MySQL Database Service)が登場!

Oracle Cloud
2020.10.01

こんにちは。 お久しぶりです。k.otsukaです。

東京リージョンで作れるようになったことを記念に、紹介3割使ってみた7割構成で「MySQL Database Service」に触れてみます!
LA(Limited Agreement)でも触っていました

「MySQL Database Service」と書き続けるのは少し辛いので、「MySQLaaS」と呼ぶことにしてます。 何て読むのが正解なんでしょう?「まいえすきゅーえらぁぁす」?
【追記】「MDS」と略すのが良いみたいでした!

公式マニュアルを参考しているので、合わせてご確認ください。

docs.cloud.oracle.com

目次

MySQL Database Service(MySQLaaS)について

  • OCIのデータベースといえば、DBCSAutonomous Databaseが主流でした。MySQLデータベースを使うためには、コンピュート・インスタンスから仮想サーバを立てて、MySQLをインストールするしか方法がありませんでしたが、そのような方法を取らなくてもMySQLデータベースをPaaSとして使えるようになったのが今回の「MySQLaaS」です。
  • 「バックアップ」「リカバリ」「パッチ適用」など管理が少し面倒な部分をOCIがサポートしてくれるので、「データ管理」「スキーマ設計」といったデータベース内部の管理のみに集中することができます。
  • 使用できるバージョンは現在「8」のみです。「5.6」「5.7」を使用していて、「MySQLaaS」への切り替えを検討している場合は注意してください。
  • DBCSと大きく違うのは、ソフトウェア領域(OS領域)にSSHで接続することができません。コンフィグ設定やシステム変数設定は全てOCIコンソール画面上で実施します。

「MySQLaaS」を使う前に

 MySQLaaSを使うためにはMySQLaaS用のポリシー追加が必須です。
OCI環境に合わせて設定しましょう。

Allow service mysql to use all-resources in compartment <コンパートメント名>
Allow group <グループ名>to manage mysql-family in compartment <コンパートメント名>
Allow group <グループ名>to manage mysql-instances in compartment <コンパートメント名>
Allow group <グループ名>to manage mysql-configurations in compartment <コンパートメント名>
Allow group <グループ名>to manage mysql-backups in compartment <コンパートメント名>
Allow group <グループ名>to manage mysql-work-requests in compartment <コンパートメント名>

MySQLaaSでMySQLデータベース作る

 リソース選択からMySQLを選択して「MySQL DBシステムの作成」ボタンから作成できます。

f:id:k_otsuka_atom:20200928142134p:plain
リソース選択 -> MySQL

 作成ウィンドウの内容に従って、適宜値を埋めていきましょう。
管理者ユーザーとパスワードを設定する項目があり、接続するときに必要になるので手元に控えておきましょう。
その他特別なパラメータは特に見当たらなかったので、パラメータ紹介は割愛してます。 シェイプだけ少し厄介な仕様をしていたので、下記ページで紹介します。

f:id:k_otsuka_atom:20200927143050p:plain
MySQL 作成画面

 「作成」ボタンを押してから、大体20分くらいで作成されます。

シェイプ-「構成」について

 他のOCIリソースと同様に、シェイプによってマシンスペックを決定しますが、MySQLデータベースのシステム変数も「シェイプ」で管理しています。
MySQLの管理画面のリソース一覧から「構成」→シェイプを選択してみると「変数」というリソースで各パラメータを確認できます。

f:id:k_otsuka_atom:20200501173943p:plain

ここから言えることは、
仮想サーバにインストールした場合の「my.cnf」による設定変更や

$ vim /etc/my.cnf
~~~~~
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
~~~~~~

SHOW VARIABLES 構文を使った設定変更がMySQLaaSでは実行できません。

mysql> SHOW GLOBAL VARIABLES LIKE 'sql_mode';
mysql> SET GLOBAL sql_mode ="×××";

また、「MySQLaaS」では変更できない変数も存在します。
細かいところまで詰めてMySQLを使いたい方には若干使い勝手が悪いかもしれません。
次に、具体的な設定変更方法について紹介します。

MySQLaaSの設定変更について

 現在(2020/09/27)の仕様では、データベース作成後のチューニングはできません。
つまり、MySQLデータベース作成後に設定変更したい場合は、データベース自体を作り直す(リストア)必要があります。
 また、デフォルトで用意されているシェイプの値変更もできないので、MySQLaaSを利用する場合は「MySQL構成の作成」ボタンから、オリジナルのシェイプ構成を作成しておくことをオススメします。

f:id:k_otsuka_atom:20200927152632p:plain
MySQL構成の作成ボタン

では、オリジナルシェイプの作り方について紹介します。

オリジナルシェイプを作る

 MySQL -> 「構成」画面にある「MySQL構成の作成」ボタンから作成ウィザード表示させて作ることができます。 「構成情報」画面で複製元のシェイプを選んだあと、あえて空白の状態で「作成」ボタンを押しましょう。すると、構成元の変数がセットされた状態でオリジナルシェイプを作成してくれます。 f:id:k_otsuka_atom:20200501181249p:plain

 「作成」ボタンを押した後に画面が切り替わるので、「編集」ボタンを押して設定値の追加や修正を行います。
さっきの画面から全ての変数を自分でセットしても良いですが、構成元の一部だけで変えたいのであれば、この方法が楽なのでオススメです。
LAのときはこんなことしなくても「シェイプの複製」ボタンがあったはずなんですが、、、消えちゃいました、、、

f:id:k_otsuka_atom:20200927153221p:plain
シェイプ構成画面

 より詳細な設定変更をしたい場合は、ユーザ変数(読み取り/書込み)タブの右下に「別の変数」ボタンがあるので、必要に応じて追加しましょう。

f:id:k_otsuka_atom:20200927153914p:plain
ユーザ変数タブ

 ちなみに、システム変数(読取り専用)タブに表示されている変数は編集ができません。

f:id:k_otsuka_atom:20200927153718p:plain
システム変数タブ

 編集した変数は「ユーザー定義」列に「はい」と表示されます。
今回は 検証も兼ねて「sql_mode」を追加してみました。

f:id:k_otsuka_atom:20200927154830p:plain
例:ユーザ定義編集

 作成した「構成」は、MySQLaaS作成時に構成オプションから選択できます。ここを選択しないとデフォルトの構成がセットされてまた作り直しになってしまうので注意してください。
LAのときは「シェイプの変更」ボタンから直接選択できたんですが、、、細かい部分がちょいちょい変更されてますね

f:id:k_otsuka_atom:20200927160622p:plain
構成選択画面

MySQLデータベースに接続してみる

 以下の簡単な構成で、MySQLaaSに接続してみます。

f:id:k_otsuka_atom:20200928113532p:plain
構成図

 MySQLaaSの接続に使用する「3306」と「33060」ポートを セキュリティ・リストで開放します。
※残念なことにネットワーク・セキュリティ・グループに対応してません…アップデートに期待…

f:id:k_otsuka_atom:20200928113837p:plain
セキュリティ・リスト設定

 ここまで設定できたら、あとは従来のMySQLと同じです。
「MySQLクライアント」か「MySQLシェル」どちらか好みのものをインストールして接続しましょう。
今回は紹介しませんが、「MySQLWorkbench」からも接続することができました。

  • MySQLクライアント
## インストール
$ sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
$ sudo yum install mysql
## 接続
$ mysql --h 【IPアドレス】 -u 【MySQLaaS作成時に設定したユーザ名】 -p
例:$ mysql -h 172.20.20.13 -u admin -p
  • MySQLシェル
##インストール
$ sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
$ sudo yum install mysql-shell
## 接続
$ mysqlsh 【MySQLaaS作成時に設定したユーザ名】@【IPアドレス】
例:$ mysqlsh admin@172.20.20.13

※「33060」は「MySQLシェル」で接続するために使う特別なポートのようです。
詳しくは、公式ページを参照ください。

 本記事では「MySQLクライアント」から接続してデータベースを作成してみました。
接続方法やその中の操作感は、従来のMySQLと同じ感覚で使用できるかと思います。

f:id:k_otsuka_atom:20200928141000p:plain
接続

システム変数変更の検証

 さきほど紹介しましたが、本当にシステム変数が変更できないか念のため検証してみます。

  • SHOW VARIABLES 構文を使った変更
mysql> SET GLOBAL sql_mode = "ONLY_FULL_GROUP_BY";

 やはり変更することができませんでした。MySQLaaSで作ったユーザーは赤枠の権限を持っていないことがわかります。PaaSということを考えると、変更できなくても納得はできますね。

f:id:k_otsuka_atom:20200928131529p:plain
sql_mode変更結果
  • コンソール画面から作成済のオリジナルシェイプを変更して、再起動
      赤枠の部分から編集画面に飛んでシステム変数を変更し、「再起動」ボタンを押しました。

    f:id:k_otsuka_atom:20200928173142p:plain
    MySQLaaS詳細画面
    f:id:k_otsuka_atom:20200928132934p:plain
    オリジナルシェイプの編集

 それでも更新されず、再起動前と同じ値が取得されました。個人的にはこの方法で変更できてほしかったなーと思います。

f:id:k_otsuka_atom:20200928133231p:plain
OCIから変更後再起動

 やはり現在の仕様では、MySQLのシステム変数変更毎にリストアが必要なようです。
MySQLaaSの大きな注意ポイントかなと思います。構築するときは十分にお気を付けください。
ちょっっっと扱いづらいかなと思っちゃいますね。アップデートに期待

まとめ

 現状のままでは扱いにくい点がいくつかありますが(ネットワーク・セキュリティ・グループとシステム変数の仕様は特に…)、やはりマネージドで利用ができるというのはかなり素晴らしいと思います!まだまだアップデートを控えていると聞いているので今後が楽しみのサービスですね。次はHA構成が可能になったら記事を書こうかなと思います。

個人的に書く書く詐欺をし続けていたので、やっと書けてほっとしてます。

告知

 初心者・管理者のためのOCIのユーザーグループ会が毎月第3火曜に開催されています。奮ってご参加ください。

fullenergy-oci.connpass.com

 10月23日(金)18:30~開催される「MySQL Cafe」にも登壇予定です。
こちらもより奮ってご参加ください。


この記事が気に入ったら
「いいね!」

この記事を書いた人


関連コンテンツ

CONTACT お問い合わせ

Cloudiiのサービスやプロダクトについて
興味をお持ちの方は、
お気軽にお問い合わせください。