こんにちは。 お久しぶりです。k.otsukaです。
東京リージョンで作れるようになったことを記念に、紹介3割使ってみた7割構成で「MySQL Database Service」に触れてみます!
LA(Limited Agreement)でも触っていました
「MySQL Database Service」と書き続けるのは少し辛いので、「MySQLaaS」と呼ぶことにしてます。 何て読むのが正解なんでしょう?「まいえすきゅーえらぁぁす」?
【追記】「MDS」と略すのが良いみたいでした!
公式マニュアルを参考しているので、合わせてご確認ください。
目次
- MySQL Database Service(MySQLaaS)について
- 「MySQLaaS」を使う前に
- MySQLaaSでMySQLデータベース作る
- シェイプ-「構成」について
- MySQLデータベースに接続してみる
- システム変数変更の検証
- まとめ
- 告知
MySQL Database Service(MySQLaaS)について
- OCIのデータベースといえば、DBCSとAutonomous 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システムの作成」ボタンから作成できます。
作成ウィンドウの内容に従って、適宜値を埋めていきましょう。
管理者ユーザーとパスワードを設定する項目があり、接続するときに必要になるので手元に控えておきましょう。
その他特別なパラメータは特に見当たらなかったので、パラメータ紹介は割愛してます。 シェイプだけ少し厄介な仕様をしていたので、下記ページで紹介します。
【3月21日更新】
MDSの作成画面が変わっていたので、画像を差し替えました!
「作成」ボタンを押してから、大体20分くらいで作成されます。
シェイプ-「構成」について
他のOCIリソースと同様に、シェイプによってマシンスペックを決定しますが、MySQLデータベースのシステム変数も「シェイプ」で管理しています。
MySQLの管理画面のリソース一覧から「構成」→シェイプを選択してみると「変数」というリソースで各パラメータを確認できます。
ここから言えることは、
仮想サーバにインストールした場合の「my.cnf」による設定変更や
$ vim /etc/my.cnf ~~~~~ # Disabling symbolic<span class="synStatement">-</span>links <span class="synStatement">is</span> recommended <span class="synStatement">to</span> prevent assorted security risks symbolic<span class="synStatement">-</span>links<span class="synStatement">=</span><span class="synConstant">0</span> log<span class="synStatement">-</span>error<span class="synStatement">=</span>/var/log/mysqld<span class="synStatement">.</span>log pid<span class="synStatement">-file=</span>/var/<span class="synStatement">run</span>/mysqld/mysqld<span class="synStatement">.</span>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構成の作成」ボタンから、オリジナルのシェイプ構成を作成しておくことをオススメします。
では、オリジナルシェイプの作り方について紹介します。
オリジナルシェイプを作る
MySQL -> 「構成」画面にある「MySQL構成の作成」ボタンから作成ウィザード表示させて作ることができます。 「構成情報」画面で複製元のシェイプを選んだあと、あえて空白の状態で「作成」ボタンを押しましょう。すると、構成元の変数がセットされた状態でオリジナルシェイプを作成してくれます。
「作成」ボタンを押した後に画面が切り替わるので、「編集」ボタンを押して設定値の追加や修正を行います。
さっきの画面から全ての変数を自分でセットしても良いですが、構成元の一部だけで変えたいのであれば、この方法が楽なのでオススメです。
LAのときはこんなことしなくても「シェイプの複製」ボタンがあったはずなんですが、、、消えちゃいました、、、
より詳細な設定変更をしたい場合は、ユーザ変数(読み取り/書込み)タブの右下に「別の変数」ボタンがあるので、必要に応じて追加しましょう。
ちなみに、システム変数(読取り専用)タブに表示されている変数は編集ができません。
編集した変数は「ユーザー定義」列に「はい」と表示されます。
今回は 検証も兼ねて「sql_mode」を追加してみました。
作成した「構成」は、MySQLaaS作成時に構成オプションから選択できます。ここを選択しないとデフォルトの構成がセットされてまた作り直しになってしまうので注意してください。
LAのときは「シェイプの変更」ボタンから直接選択できたんですが、、、細かい部分がちょいちょい変更されてますね
MySQLデータベースに接続してみる
以下の簡単な構成で、MySQLaaSに接続してみます。
MySQLaaSの接続に使用する「3306」と「33060」ポートを セキュリティ・リストで開放します。
※残念なことにネットワーク・セキュリティ・グループに対応してません…アップデートに期待…
ここまで設定できたら、あとは従来の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と同じ感覚で使用できるかと思います。
システム変数変更の検証
さきほど紹介しましたが、本当にシステム変数が変更できないか念のため検証してみます。
- SHOW VARIABLES 構文を使った変更
mysql> SET GLOBAL sql_mode = "ONLY_FULL_GROUP_BY";
やはり変更することができませんでした。MySQLaaSで作ったユーザーは赤枠の権限を持っていないことがわかります。PaaSということを考えると、変更できなくても納得はできますね。
- コンソール画面から作成済のオリジナルシェイプを変更して、再起動
赤枠の部分から編集画面に飛んでシステム変数を変更し、「再起動」ボタンを押しました。
それでも更新されず、再起動前と同じ値が取得されました。個人的にはこの方法で変更できてほしかったなーと思います。
やはり現在の仕様では、MySQLのシステム変数変更毎にリストアが必要なようです。
MySQLaaSの大きな注意ポイントかなと思います。構築するときは十分にお気を付けください。
ちょっっっと扱いづらいかなと思っちゃいますね。アップデートに期待
まとめ
現状のままでは扱いにくい点がいくつかありますが(ネットワーク・セキュリティ・グループとシステム変数の仕様は特に…)、やはりマネージドで利用ができるというのはかなり素晴らしいと思います!まだまだアップデートを控えていると聞いているので今後が楽しみのサービスですね。次はHA構成が可能になったら記事を書こうかなと思います。
個人的に書く書く詐欺をし続けていたので、やっと書けてほっとしてます。
告知
初心者・管理者のためのOCIのユーザーグループ会が毎月第3火曜に開催されています。奮ってご参加ください。
10月23日(金)18:30~開催される「MySQL Cafe」にも登壇予定です。
こちらもより奮ってご参加ください。