はじめに

みなさん、こんにちは。
Oracle Cloud Infrastructure 検証チームです。

今回は、OCIの入門編チュートリアルにもある クラウドでMySQL Databaseを使う を実際に検証し、構築してみましたのでご紹介したいと思います。

MySQL Database Service(MDS)とは

MySQL Database Service(以後MDS)は、
MySQL開発チームによるMySQLのマネージドサービスです。
オンプレミスのMySQLと100%の互換性があり、MySQL開発ベンダーであるオラクル社からのサポートも受けられます。

MDSを使用することで以下のような様々なメリットを享受できます。

  • MySQLベンダであるOracle MySQLチームによるサポート、開発、メンテナンス
  • バックアップ・リカバリの自動化
  • 暗黙的なストレージ暗号化
  • OSも含めた自動的なアップデート・セキュリティパッチの適用
  • 監視・監査機能の提供
  • Heatwaveの利用(超高速分析エンジン)

作成してみた

前提として、今回使用するVCNとインスタンスは、すでに作成してあります。
今回の検証の流れは以下になります。

  1. MDSの作成
  2. セキュリティリストの修正(イングレス・ルールの追加)
  3. MySQLクライアントのインストール
  4. 作成したMDSの確認

MDSの作成

  1. OCIコンソール画面の左上のメニューを展開し「データベース」>「DBシステム」を選択します。
  2.  「DBシステムの作成」を選択します。
    ※MySQL Database Serviceを利用するためにはOCIユーザーに適切なポリシーを設定する必要があります。今回はAdministratorsグループに所属するユーザーはこれらのポリシーも満たしているため、このポリシーの設定手順は割愛します。
  3. 立ち上がった MySQL DBシステムの作成 ウィンドウで以下の項目を入力します。
    • 名前・・・
      任意の名前を入力します。ここでは「TestMDS」と入力しています。
    • 説明・・・
      このMDSの説明を入力します。ここでは「ハンズオン用」と入力しています。(入力は任意です)
    • DBシステム・・・
      「スタンドアロン」、「高可用性」、「HeatWave」の3種類から選択できます。ここでは「スタンドアロン」を選択しています。

    • ユーザー名・・・
      MySQL Databaseの管理者ユーザーのユーザー名を指定します。ここでは「root」と入力しています。
    • パスワード・・・
      MySQL Databaseの管理者ユーザーのパスワードを指定します。パスワードは8文字から32文字までの長さで、大文字、小文字、数字および特殊文字をそれぞれ1つ以上含める必要があります。
    • パスワードの確認・・・
      パスワードを再入力します。

    • 可用性ドメイン・・・
      可用性ドメインを指定できます。(現時点で東京リージョン、大阪リージョンはADが1つだけであるため、AD2、AD3は選択できません)
    • フォルトドメインの選択・・・
      フォルトドメインを指定できます。(選択しない場合は、最適な配置がOracleによって選択されます)

    • シェイプの選択・・・
      「シェイプの変更」をクリックして、より高スペックなシェイプを選択できます。
    • データ・ストレージ・サイズ(GB)・・・
      ストレージサイズを変更できます。
      現時点では、ストレージサイズを後から拡張できないため、予め大きなサイズを確保することをお勧めします。(ストレージサイズの拡張機能は、今後実装される予定です)


    ※シェイプは以下のように選択できます。

    • 自動バックアップの有効化・・・
      選択することで、自動バックアップを有効化します。
    • バックアップ保持期間・・・
      バックアップを格納する長さを指定できます(日単位)。自動バックアップの保存期間を定義した後は、編集することはできません。
    • ポイント・イン・タイム・リストアを有効にします・・・
      選択することで、特定の時点でDBシステムを新しいDBシステムにリストアできるようにするオプションを有効化します。
    • バックアップ選択ウィンドウ・・・
      選択することで、「ウィンドウの開始時間」を指定することができます。選択しない場合は、自動で定義されます。

    • 削除保護・・・
      DBシステムを削除操作から保護します。DBシステムを削除できるようにするには、このオプションを無効にします。デフォルトでは、DBシステムは削除保護されていません。
    • 自動バックアップの保持・・・
      DBシステムを削除した後に自動バックアップを保持します。デフォルトでは、DBシステムを削除すると自動バックアップが削除されます。
    • 最終バックアップが必要・・・
      DBシステムを削除する前に最終バックアップを作成します。デフォルトでは、最終バックアップは作成されません。

    • 構成の選択・・・
      「構成の選択」をクリックすることで、事前に作成した構成を適用することが出来ます。事前に構成を作成することで、MDSで変更可能なパラメータを変更できます。

    • クラッシュ・リカバリの有効化・・・
      予期しないサーバー・イグジットが発生した場合にDBシステムをデータ損失から保護します。これを無効にすると、大規模なデータ・インポートのパフォーマンスが向上します。
      ※無効にした場合、自動バックアップも無効になります。

    • メンテナンス・ウィンドウの開始時間・・・
      オペレーティング・システムやMySQLインスタンスのアップグレードなどのメンテナンス・アクティビティをスケジュールする日時(UTCタイムゾーン)を指定します。
      日時を指定しない場合は、Oracleによって選択されます。

    • ホスト名・・・
      任意の名前を入力します。ここでは「TestMDS」と入力しています。
    • IPアドレス・・・
      プライベートIPアドレスを定義して、DBシステムのエンドポイントに割り当てます。アドレスは、サブネットのCIDRで使用可能である必要があります。
      アドレスを指定しない場合は、サブネットからプライベートIPアドレスが自動的に割り当てられます。
    • MySQLポート・・・
      サーバーがリスニングするポートを指定します。MySQLポートのデフォルト値は「3306」です。
    • MySQL Xプロトコル・ポート・・・
      MySQLシェルなどのクライアントでサポートされているポートを指定します。ポートのデフォルト値は「33060」です。

    • PARソースURL・・・
      事前認証済リクエスト(PAR)を使用してオブジェクト・ストレージ・バケット内のMySQLシェル・ダンプからデータをインポートします。

    • タグネームスペース・・・
      タグ名を選択します。
    • タグ・キー・・・
      タグ・キーを選択します。
    • タグ値・・・
      タグの値を指定します。

  4. MDSが作成中になるのでしばらく待ちます。(概ね15分)

    MDSの作成が完了するとアイコンが緑色に変化し、作成中からアクティブへ変化します。
  5. ページ左下の リソース → エンドポイント をクリックして、ホスト名、IPアドレスを確認しておきます。

    これでMDSの作成は完了です!

セキュリティリストの修正(イングレス・ルールの追加)

次は作成したMDSと通信するために、
VCNセキュリティリストイングレス・ルールを追加していきます!

  1. OCIコンソール画面の左上のメニューを展開し「ネットワーキング」>「仮想クラウドネットワーク」を選択し、作成済みのVCNを選択します。
    ※今回はすでに「TutorialVCN」というVCNを作成しております。以降はVCNが「TutorialVCN」である前提で説明を記述していきます。
  2. プライベート・サブネット-TutorialVCNをクリックします。
  3. プライベート・サブネット-TutorialVCNのセキュリティ・リスト をクリックします。
  4. イングレス・ルールの追加 をクリックします。
  5. 立ち上がった イングレス・ルールの追加 ウィンドウで、以下の項目を入力し イングレス・ルールの追加 ボタンを押します。
    • ソースCIDR・・・
      「10.0.0.0/16」と入力します。
    • 宛先ポート範囲・・・
      MDS作成時に指定したMySQLポートを入力します。今回はデフォルトで作成しているので、「3306」と入力します。

  6. 先ほど指定したポートに対するイングレス・ルールが追加されたことを確認します。

    これでMDSと通信する準備が整いました!

MySQLクライアントのインストール

次は作成したMDSに接続するために
コンピュート・インスタンスMySQLクライアントをインストールしていきます!

  1. 事前に作成したコンピュート・インスタンスに接続し、以下のコマンドを実行します。
    これにより、MySQLチームが提供しているyumの公式リポジトリがセットアップされます。
    sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
    
    #実行結果
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    (中略)
    
    Installed:
      mysql80-community-release-el7-3.noarch    
    
    Complete!
  2. 以下のコマンドを実行し、MySQLクライアントをインストールします。
    sudo yum install mysql-community-client
    
    #実行結果 
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    (中略) 
    Public key for mysql-community-client-8.0.31-1.el7.x86_64.rpm is not installed. Failing package is: mysql-community-client-8.0.31-1.el7.x86_64
    GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql 
    Public key for mysql-community-client-plugins-8.0.31-1.el7.x86_64.rpm is not installed. Failing package is: mysql-community-client-plugins-8.0.31-1.el7.x86_64
    GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql 
    Public key for mysql-community-common-8.0.31-1.el7.x86_64.rpm is not installed. Failing package is: mysql-community-common-8.0.31-1.el7.x86_64
    GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql 
    Public key for mysql-community-libs-8.0.31-1.el7.x86_64.rpm is not installed. Failing package is: mysql-community-libs-8.0.31-1.el7.x86_64
    GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql 
    The downloaded packages were saved in cache until the next successful transaction. 
    You can remove cached packages by executing 'yum clean packages'. 
    Error: GPG check FAILED

失敗してしまったようです。
内容を確認すると、どうやらGPGキーというものが影響しているようです。


解決策

MySQLの公式ドキュメントよりこのような記載を発見できました!

The GnuPG build key used to sign MySQL downloadable packages was updated with the MySQL 8.0.28 release.
To avoid key verification errors when upgrading to MySQL 8.0.28 or higher, import the new GnuPG key:

※以下日本語訳
MySQL のダウンロード可能なパッケージに署名するために使用される GnuPG ビルド キーは、MySQL 8.0.28 リリースで更新されました。
MySQL 8.0.28 以降にアップグレードする際のキー検証エラーを回避するには、新しい GnuPG キーをインポートします。

これによるとどうやら2022年1月18日にMySQL8.0.28がリリースされたタイミングでGPGキーのほうが変更になったようですね。
記載されている以下のコマンドを実行することで、問題なくインストールできるようになるようです。

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

GPGキーも修正できたので、気を取り直して再度MySQLクライアントをインストールしてみます。

sudo yum install mysql-community-client

#実行結果
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(中略)

Error: Unable to find a match: mysql-community-client

またしても失敗してしまいました。
今回の内容はリポジトリ内に「mysql-community-client」が見つからないよということらしいです


解決策

またしてもMySQLの公式ドキュメントよりこのような記載を発見できました!

Disabling the Default MySQL Module

(EL8 systems only) EL8-based systems such as RHEL8 and Oracle Linux 8 include a MySQL module that is enabled by default.
Unless this module is disabled, it masks packages provided by MySQL repositories.
To disable the included module and make the MySQL repository packages visible, use the following command (for dnf-enabled systems, replace yum in the command with dnf):

※以下日本語訳
デフォルトの MySQL モジュールの無効化

(EL8 システムのみ) RHEL8 や Oracle Linux 8 などの EL8 ベースのシステムには、デフォルトで有効になっている MySQL モジュールが含まれています。
このモジュールが無効にされていない限り、MySQL リポジトリによって提供されるパッケージがマスクされます。
含まれているモジュールを無効にして MySQL リポジトリ パッケージを表示するには、次のコマンドを使用します (dnf が有効なシステムの場合、 コマンドのyumをdnfに 置き換えます)。

これによるとデフォルトで有効になっているMySQLモジュールを無効にしないと一部のパッケージしか表示されないようですね。
記載されている以下のコマンドを実行し、モジュールを無効にすることで、MySQLリポジトリパッケージを認識できるようになるようです。

sudo yum module disable mysql

#実行結果 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(中略)

Disabling modules: 
mysql

(中略) 
Complete!

GPGキーデフォルトのMySQLモジュールと2度もつまずいてしまいましたが、
気を取り直して再々度MySQLクライアントをインストールしてみます。

sudo yum install mysql-community-client

#実行結果
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(中略)

Installed:
  compat-openssl10-1:1.0.2o-4.el8_6.x86_64                              mysql-community-client-8.0.31-1.el7.x86_64 
  mysql-community-client-plugins-8.0.31-1.el7.x86_64                    mysql-community-common-8.0.31-1.el7.x86_64 
  mysql-community-libs-8.0.31-1.el7.x86_64                              ncurses-compat-libs-6.1-9.20180224.el8.x86_64 

Complete!

ついにインストールが成功しました!
しっかりとインストールされているか確認してみましょう。

rpm -qa | grep -i mysql

#実行結果 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
mysql80-community-release-el7-3.noarch 
mysql-community-client-plugins-8.0.31-1.el7.x86_64 
mysql-community-common-8.0.31-1.el7.x86_64 
mysql-community-client-8.0.31-1.el7.x86_64 
mysql-community-libs-8.0.31-1.el7.x86_64

「mysql-community-client」が問題なくインストールされていますね!

色々ありましたが、
これでMDSに接続する準備が整いました!
何度もエラーで止められたときはヒヤヒヤしました…

作成したMDSの確認

無事、
MDSの作成VCNのセキュリティ・リストへイングレスルールの追加インスタンスへMySQLクライアントのインストールが完了しました!
最後に、実際にmysqlコマンドラインクライアントを使ってMDSへ接続し、
SHOW DATABASESコマンドを実行してみます!

以下は実行例になります。ユーザー名はMDSの管理者ユーザー名に、ホスト名は確認したホスト名に置き換えて下さい。(“-u”オプションでユーザー名を、”-h”オプションでホスト名を指定します)

[opc@testvm1 ~]$ mysql -u root -p -h TestMDS.sub06300506141.tutorialvcn.oraclevcn.com #ここの部分を確認した各自のホスト名に変更
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 8.0.31-u3-cloud MySQL Enterprise - Cloud

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)

問題なく接続しコマンドも実行されました!
これにて検証作業は終了となります!

おわりに

今回は、OCIの入門編チュートリアルにもある、クラウドでMySQL Databaseを使う を実際に検証し、作成してみました。

いかかでしたでしょうか。
最後までご覧いただきありがとうございました!

Oracle Cloudをご検討の際は当社までお気軽にお問い合わせください。

投稿者プロフィール

技術チーム
技術チーム
DBひとりでできるもんを盛り上げるべく、技術チームが立ち上がり早6年。ひとりでできるもんと言いつつ、技術者が読んでプッとなるような、極めてピンポイントでマニアックな技術ネタを執筆しています!