このブログ記事は、Migrating from a Live On-premises MySQL 8.0 Database to MySQL Database Service Using GTIDsの翻訳版です。

 

MySQL HeatWave Database Serviceは、オンプレミスのMySQL 8.0データベースからOracle Cloud Infrastructure(OCI)上のMySQL DBシステムへレプリケーションを使ったほぼリアルタイムで移行が可能です。。リアルタイムでデータを移行することでダウンタイムを最小限にし、本番環境のデータへの影響を抑えます。

MySQL HeatWave Database Serviceは、統合されたHeatWaveインメモリ・クエリ・アクセラレータを搭載した、フルマネージド・データベース・サービスです。ETLツール使用による複雑さ、遅延、コストなしに、高速なトランザクション処理、分析処理、機械学習サービスをMySQLデータベースに統合し、リアルタイムで安全な分析を実現する唯一のクラウドネイティブなデータベース・サービスです。オンプレミスのMySQL 8.0を運用中の方で、クラウド環境上のデータベース・サービスへの移行を検討していらっしゃる方は、ぜひMySQL HeatWave Database Serviceをご利用ください。

下記は、オンプレミスで運用中のMySQL 8.0データベースをMySQL HeatWave Database Serviceに移行するために必要なステップの概要です。

  1.  仮想クラウドネットワークの作成
  2. オブジェクト・ストレージ・バケットの作成
  3. GTID ベースのロギングの有効化
  4. 構成ファイルと API キーの生成
  5. オンプレミスのMySQL8.0 データベースから Object Storage バケットにデータをダンプ
  6. MySQL HeatWave Database Service で DB システムを作成、およびObject Storage バケットからデータをインポート
  7. インバウンドレプリケーションの有効化
    1. OpenVPN 接続の作成
    2. OCIのVCNにおけるセキュリティリストとルート表の作成
    3. オンプレミスのMySQL 8.0 データベースのレプリケーションユーザーの作成
    4. レプリケーションチャネルの作成
      Migration architecture

 

仮想クラウドネットワークを作成

仮想クラウドネットワーク(VCN)とは、OCIデータセンター設定し機能する、ソフトウェアで定義されたネットワークです。OCIコンソールを使用してVCNを作成します。

  1.  Oracle Cloud アカウント にログインします。初めて使用する場合は、初めてのサインインを参照してください。
  2. ナビゲーションメニューからネットワーキングをクリックし、仮想クラウド・ネットワークをクリックします。
    ナビゲーションメニュー
    ネットワーキングメニュー

     
  3. VCNウィザードの起動をクリックします。
  4. VCNウィザードの起動のダイアログボックスでインターネット接続性を持つVCNの作成を選択し、VCNウィザードの起動をクリックします。
  5. インターネット接続性を持つVCNの作成パネルでVCN名を入力し (例では MyVCN)、他の入力欄はデフォルト値のままにします。

    インターネット接続性を持つVCNの作成

     
  6. を押し、作成をクリックします。
  7. VCNの表示を押します。

    VCNの表示

     

以上で、MyVCNという名前のVCNの作成が完了しました。このVCNはIPv4 CIDRブロック10.0.0.0/24のパブリック・サブネットと、IPv4 CIDRブロック10.0.1.0/24のプライベート・サブネットを持ちます。後ほどVCNのセキュリティリストとルート表を作成します。

 


オブジェクト・ストレージ・バケットの作成

オブジェクト・ストレージ・バケットは、コンパートメントにデータを格納するための論理的なコンテナです。 オンプレミスのMySQL 8.0 データベースのデータを一時的にオブジェクト・ストレージ・バケットに保存して、後ほどOCI上のMySQL DB システムに送ります。

下記はコンソールからオブジェクト・ストレージ・バケットを作成する手順です。

  1. Oracle Cloud アカウント にログインします。
  2. ナビゲーションメニューのストレージを選択し、バケットをクリックします。
    OCIコンソール ナビゲーションメニュー

    OCIコンソール ストレージメニュー


     
  3. バケットの作成をクリックします。
  4. バケットの作成パネルでバケット名 (ここでは MySQLBucket) を入力し、他の入力欄はデフォルト値のままにします。
    バケット作成画面

     
  5. 作成をクリックします。

MySQLBucket という名前のバケットが作成され、中にはデータなど何もない状態です。
MySQLBucket

 

GTIDベースのロギングを有効化

グローバルトランザクション識別子 (GTID) は、ソースサーバーでコミットされた各トランザクションに紐付けされ、作成される一意の識別子です。 この識別子はソースサーバーに対して一意であり、またレプリケーション設定内のすべてのサーバーで一意です。 すべてのトランザクションとすべての GTIDは、一対一で対応します。 MySQL データベースで GTID ベースのロギングを有効にすると、稼働中のMySQLデータベースのレプリケーションが可能です(デフォルトではGTID ベースのロギングは無効になっています)。

MySQL HeatWave Database Service では、GTIDを使用せずに MySQL 8.0データベースからのインバウンドレプリケーションが可能です。詳細はWebマニュアルのレプリケーションチャネル作成 から、レプリケーション位置に関する記述をご参照ください。

下記に示す手順では、ホストマシンでターミナルまたはコマンドプロンプトを使用しGTIDによるロギングを有効にします。

  1. オンプレミスのMySQL 8.0データベースがあるホストマシン上でターミナルまたはコマンドプロンプトを開きます。
     
  2. バイナリログのステータスを確認します。バイナリログはMySQL Database Service に送信されるデータ変更を記録するログで、レプリケーションに必要です。デフォルトではバイナリログは有効、変数log_binはON、変数binlog_format はROWに設定されています。
    show variables like '%bin%';

variables

 

  1. (必要に応じて作業)
    変数log_binとbinlog_formatが正しく設定されていない場合は、次の手順に従って設定して下さい。
    1. 構成ファイル my.cnf を開きます。
      sudo vi /etc/my.cnf
    2. 設定ファイルmy.cnfの[mysqld]の下に、下記の画像のように追記し、バイナリ・ログ・ファイル名(下記の例ではbinarylogfile)を指定します。
      log_bin=<NameofBinaryLogFile>
      server-id=1
      Update configuration file
    3. 変更した構成ファイル my.cnf を保存します。
    4. オンプレミスのMySQL8.0データベースを再起動します。
      sudo systemctl restart mysqld
  2. MySQL Shell を使ってオンプレミスのMySQL 8.0データベースにログインします。
    mysqlsh root@localhost
  3. MySQL Shell をインストールしていない場合は、こちらをご覧ください。
  4. SQLモードで作業します。
    \sql
  5. GTIDベースロギングを有効にします。
    ​​​SET GLOBAL gtid_mode=OFF_PERMISSIVE;
    SET GLOBAL gtid_mode=ON_PERMISSIVE;
    SET PERSIST enforce_gtid_consistency=ON;
    SET PERSIST gtid_mode=ON;
  6. GTIDステータスを確認します。
    show variables like 'gtid_mode';

 

Select gtid_mode


以上で、GTIDベースロギングを有効にできました。

 

構成ファイルとAPIキーの作成
オンプレミスのMySQL 8.0データベースの作業が終わったら、OCIの構成を行います。OCIに接続するには、次のものが必要です。

  • 構成ファイル: デフォルトのファイル名と場所は ~/.oci/config です。このファイルには、ユーザー、フィンガープリント、テナント、リージョン、およびkey_fileの詳細が含まれています。
  • RSAキーペア: RSAキーペアは、PEM形式のプライベートキーとパブリックキーです。SSHキーではありません。生成されたRSA秘密鍵は、~/.oci/ディレクトリに保存されます。

構成ファイルとAPIキーを作成するには、Oracle ColoudのWebコンソールを使います。

  1. Oracle Cloudのアカウントにログインします。
  2. ナビゲーションメニューからアイデンティティとセキュリティを選択し、アイデンティティの一覧からユーザーをクリックします。
  3. ユーザーのリストから、ユーザー名をクリックし、ユーザーの詳細ページを開きます。
  4. リソースの一覧からAPIキーを選択して開き、APIキーの追加をクリックします。
  5. APIキー・ペアの生成にチェックを入れます。  
  6. 秘密キーのダウンロードを押すと、oracleidentitycloudservice_<ユーザー情報>.pem という名前のファイルがホストマシンにダウンロードされます。   
  7. 追加をクリックします。
  8. コピーを押して構成ファイルをコピーします。
    APIキー構成ファイルのプレビュー
  9. ターミナルかコマンドプロンプトをホストマシンで開きます。
  10. ホームディレクトリ配下に.oci ディレクトリを作成します。
    mkdir ~/.oci
  11. 作成した .oci ディレクトリに構成ファイル config を作成します.
    sudo vi ~/.oci/config
  12. 手順 8.でコピーした構成ファイルの内容を貼り付けます。
  13. key_file をAPIキーを保存したい場所のフルパスに書き換える
    Key file
     
  14. 手順 6.でダウンロードした oracleidentitycloudservice_<ユーザー情報>.pem をテキストエディターで開く
  15. キーファイルの内容をコピーする
  16. 手順13.で指定した場所にoci_api_key.pem として新しいAPIキーを作る
    sudo vi ~/.oci/oci_api_key.pem
  17. 手順 15.でコピーしたキーファイルの内容をoci_api_key.pemに貼り付ける
  18. oci_api_key.pemを保存して閉じる

以上で~/.oci/ ディレクトリに構成ファイル config、APIキーファイル、oci_api_key.pem の作成が完了しました。

 

 

オンプレミスのMySQL 8.0データベースからオブジェクト・ストレージ・バケットにデータをダンプ

MySQL Shell を使ってオンプレミスのMySQL 8.0データベースからオブジェクト・ストレージ・バケット「MySQL Bucket」にデータをダンプします。

 

  1. ホストマシンでターミナルまたはコマンドプロンプトを開きます。
  2. MySQL Shell を使ってMySQL Server にログインします。
    mysqlsh root@localhost
  3. JavaScript (JS) モードになっていない場合は、下記コマンドでJSモードにします。
    \js
  4. インスタンスダンプユーティリティを使ってオンプレミスのMySQL 8.0データベースからオブジェクト・ストレージ・バケットにデータをダンプします。詳しくはこちらをご覧ください。
    util.dumpInstance("<BucketPrefix>", {osBucketName: "<NameofBucket>", threads: <NumberofThreads>, ocimds: true, compatibility: ["force_innodb", "strip_restricted_grants", "strip_definers", "ignore_missing_pks", "skip_invalid_accounts"]})
    下記は実行例です
    util.dumpInstance("MySQL", {osBucketName: "MySQLBucket", threads: 16, ocimds: true, compatibility: ["force_innodb", "strip_restricted_grants", "strip_definers", "ignore_missing_pks", "skip_invalid_accounts"]})

ここでは、バケットプレフィックスは MySQL、バケット名はMySQL Bucketを使用しました。オプションについては こちら をご覧ください。

以上でMySQL 8.0データベースからオブジェクト・ストレージ・バケットへのデータダンプが完了しました。
Uploaded to the Object Sotorage

 

MySQL DBシステムを作成しデータをインポート

OCIコンソールを使用してMySQLのDBシステムを作成し、先ほど作ったオブジェクト・ストレージ・バケット MySQLBucket からデータをインポートします。DBシステムを作成するには、以下の手順で示す入力欄には指定の値を入力し、その他の入力欄にはデフォルト値のままにします。詳細についてはDB システムの作成を参照してください。

  1. ナビゲーションメニューからデータベースを開き、MySQLデータベースの下のDBシステムをクリックします
  2. DBシステムの作成をクリックします
  3. 開発またはテストを選択します
  4. DBシステム情報の指定に必要な情報を記入します
  • 名前: DBシステムとして MyDBSystem など、表示したい名前を記入します 
  1. DBシステムのタイプとして、スタンドアロンを選択します。
  2. 管理者資格証明の作成に下記を入力します。ユーザー名とパスワードは、DBシステムに接続するときに必要になります。
  • ユーザー名: DB管理者として使用するユーザー名
  • パスワード: 管理者パスワード
  • パスワードの確認: 管理者パスワードの再入力
  1. ネットワーキングの構成で下記のように選択します。
  • 仮想クラウド・ネットワーク: 作成したVCNを選択します (ここではMyVCN)
  • サブネット: 上記VCNのプライベートサブネットを選択します。
    Create DB system

     
  1. ハードウェアの構成で下記のように選択します。
  • シェイプの選択:  「MySQL.VM.Standard.E3.1.8GB」などの選択肢から選択する。詳細はこちら
  • データ・ストレージ・サイズ(GB): 全データとログファイルを考慮したサイズを指定する。
  1. 拡張オプションでデータのインポートタブから、「既存のバケットに対するPAR URLを作成するには、ここをクリックします。」のリンクをクリックします。
  2. 既存のバケットのPARの作成パネルで作成したバケット (ここでは MySQLBucket) を選択し、接頭辞には MySQL を使用します。
    Select Existing PAR


     
  3. PAR URLの作成と設定をクリックします
  4. 作成をクリックします

以上で、プライベートサブネットに MyDBSystem というDBシステムを作成し、オブジェクト・ストレージ・バケットからデータをインポートすることができました。
プライベートIPアドレスは下記のように確認することができます。

Confirm Private IP Address
 

インバウンドレプリケーションの有効化

オンプレミスのMySQL 8.0データベースからMySQL DBシステムにトランザクションをコピーするために、インバウンドレプリケーションを有効にします。
インバウンドレプリケーション有効化に必要な手順の概要は下記です。

  1. OpenVPN 接続を作成します。
  2. Oracle Cloud Infrastructure VCNのセキュリティリストとルート表を構成します。
  3. レプリケーションユーザーをオンプレミスのMySQL8.0データベースで作成します。
  4. レプリケーションチャネルを作成します。

 

Open VPN接続の作成

DBシステムにアタッチされたVCNとローカルネットワークを繋ぐために、追加のネットワークを作成します。オンプレミスのMySQL8.0データベースとOCI間に接続を確立するためにOpenVPNアクセスサーバーを作成し構成します。


OpenVPN接続を作成するステップの概要は下記です。
1.    OpenVPNアクセスサーバーを作成します
2.    OpenVPNアクセスサーバーを構成します
3.    OpenVPN接続を確立します

 

OpenVPNアクセスサーバーの作成

OpenVPNアクセスサーバーの作成にはOCIコンソールを使用します。

  1. Oracle Cloud アカウントにログインします
  2. ナビゲーションメニューからネットワーキングを選択し、顧客接続性からサイト間VPNを開きます
  3. サイト間VPNのページからmarket solutionをクリックします
    OpenVPN Makrket Place Solution Butoon

     
  4. OpenVPN Access Server のページで、VCNやオブジェクト・ストレージ・バケットを作成したのと同じコンパートメントを選択し、インスタンスの起動をクリック

    OpenVPN Launch

     
  5. スタックの情報パネルで、デフォルト値のままをクリックします。
  6. 変数の構成パネルの Compute Configurationで適当な Compute Shape を選びます。
  7. Application Configurationで、Administrator UsernameAdministrator Passwordを入力します。
    OpenVPN 接続用のユーザー名と管理者パスワードを設定してください。
    OpenVPN Configuration 01


     
  8. Network Configuration では下記のように選択します。
  • Network Strategy: Use Existing VCNを選択します。
  • Existing Network: 先ほど作成したVCN MyVCN を選択します。
  • Existing Subnet: パブリックサブネット パブリック・サブネット-MyVCN を選択します。
    OpenVPN Configuration 02
  1. Additional Configuration では作成したリソースが含まれているコンパートメントを選択します
  2. をクリックします
  3. 作成をクリックします

OpenVPN Access Server Instance

以上で OpenVPNアクセスサーバーが作成できました。作成したOpenVPNアクセスサーバーの情報を表示するには、ナビゲーションメニューのコンピュートを開き、コンピュートの下のインスタンスをクリックします。


 

OpenVPNアクセスサーバーの構成

DBシステムと通信させるために、OpenVPN アクセスサーバーを構成します。NATの代わりに固定IPアドレスを使用し、VPNユーザの作成と設定も行います。OpenVPN アクセスサーバーの設定にはWebサーバーを使います。

  1. OpenVPN アクセスサーバーのパブリックIPアドレスをWebアドレスに入力します。
    https://<OpenVPNAccessサーバーのパブリックIPアドレス>/admin


    下記の例では、OpenVPN アクセスサーバーのパブリックIPアドレス 129.151.xx.xxx を入力しています。
    https://129.151.xx.xxx/admin/

     
  2. Administrator UsernameAdministrator Password に、OpenVPNアクセスサーバーの作成の手順 7. で設定したOpenVPN 接続用のユーザー名と管理者パスワードを入力します。

    OpenVPN admin login
     
  3. OpenVPN Access Server End User License Agreement を確認して Agreeをクリックします
  4. OpenVPN Access ServerのページでCONFIGURATIONを開き VPN Settingsをクリックします
  5. VPN IP Network で下記の通り入力します。
  • Dynamic IP Address Network:
    • Network Address:  172.27.233.0 と指定します
    • # of Netmask bits: 24と指定します
  • Static IP Address Network:
    •  Network Address: 172.27.232.0 と指定します
    • # of Netmask bits: 24と指定します

      OpenVPN configuration settings
  1. Routing では下記のように設定します。
  • Yes, using routing を選択し、パブリックサブネットとプライベートサブネットのIPアドレスを指定します。下記の例では10.0.0.0/24 と 10.0.1.0/24を指定しています。

    OpenVPN routing
  1. Save Settings をクリックします。
  2. USER MANAGEMENT を開き、User Permissions をクリックします
  3. Username で新しいユーザー名を入力し、More Settings アイコンをクリックします。

    OpenVPN user permissions
     
  4. 下記の情報を入力し、他の入力欄はデフォルト値のままにします。
  • Password: 手順9.で作成したユーザー名のパスワードを入力します
  • IP Addressing: Use Static を選択し、VPN Static IP Address を172.27.232.2 -172.27.232.254の範囲から指定します。この例では172.27.232.5を指定します。
  • Access Control: Use Routing を選択し、作成したVCNのパブリックサブネットとプライベートサブネットを入力します。下記の例では10.0.0.0/24 と 10.0.1.0/24を指定しています。
  • Allow Access From: all server-side private subnets にチェックを入れます。

OpenVPN settings

  1. Save Settings をクリックします。
  2. Update Running Server をクリックし、変更した内容を反映させます。

    Update running server

以上でOpenVPNアクセスサーバーの設定が完了しました。

 

OpenVPN接続の有効化

OpenVPN接続を有効にするために、クライアント構成ファイルをダウンロードし、ターミナルまたはコマンドプロンプトを使用してオンプレミスのMySQとOCI間の接続を確立します。

  1. Webブラウザに下記のように入力します。
    https://<PublicIPOpenVPNAccessServer>

    OpenVPN アクセスサーバーのパブリックIPが129.151.xx.xxxの場合、下記のように入力します。
    https://129.151.xx.xxx/
  2. OpenVPNアクセスサーバーの構成 手順9. 10. で作成したユーザー名とパスワードを入力します。
  3. Yourself (user-locked profile) をクリックし、クライアント構成ファイルclient.ovpn をダウンロードします。

    User locked profile
     
  4. ホストマシンでターミナルまたはコマンドプロンプトを開き、OpenVPNクライアントをインストールします。
    sudo yum install openvpn
  5. クライアント構成ファイルclient.ovpnを /etc/openvpn/client/ にコピーし、client.conf という名前にします。
    sudo cp client.ovpn /etc/openvpn/client/client.conf
  6. OpenVPNクライアント を起動します。
    sudo systemctl start openvpn-client@client
  7. OpenVPNアクセスサーバーの構成 手順9. 10. で作成したユーザ名とパスワードを入力します。
  8. VPN接続が確認していることを確認します。
    sudo ifconfig tun0

ifconfig
 

上記はの例では、OpenVPNアクセスサーバーの構築 手順10.で指定したOpenVPNクライアントのIPアドレス 172.27.232.5を使って接続しています。

以上でオンプレミスのMySQL8.0データベースとOCI間OpenVPN接続が確立しました。

 

OpenVPN接続の有効化; ホストサーバーが Windows / macOS などの場合

オンプレミスのMySQLデータベースが稼働するホストサーバーが Windows / macOS などの場合、前セクションの手順 3 以降は次に示す手順でOpenVPN接続を有効にします。

  1. OpenVPN Access Server のページ上に、各プラットフォーム向けのクライアントアプリのダウンロードアイコンリンクが設置されていますので、ホストサーバに適したクライアントアプリのインストーラーをダウンロードします
    OpenVPN Client Icons

     
  2. ダウンロードしたインストーラーからOpenVPN クライアントをインストールし、起動します。以下の図のようなクライアントが立ち上がります。接続先設定に OpenVPN Access Server の IP アドレスが表示されていることからもわかる通り、このアプリは接続のための設定が適用済みであるため、設定ファイルをダウンロードし読み込ませる手順は不要です。
    OpenVPN Client App

     
  3. 左のスイッチをクリックすると、ログイン画面が表示されます。「OpenVPN Access Server の設定」セクションの手順 9、10 で作成したユーザ名とパスワードを入力し、「OK」をクリックします。
    OpenVPN Client Password

     
  4. 接続が確立すると、以下のような画面になります。接続の詳細情報を確認するには、右上の書類状アイコンをクリックします。
    OpenVPN Client Connected

     
  5. 「OpenVPN Access Server の設定」セクションの手順 10 で指定した OpenVPN クライアントの IP アドレス 172.27.232.5 は、ここで確認できます。これにより、オンプレミスのMySQL8.0 データベースと Oracle Cloud Infrastructure との間の OpenVPN 接続が確立できました。
    OpenVPN Client Logfile

 


OCIのVCNにおけるセキュリティリストとルート表の作成

OpenVPN接続が確立したら、OpenVPN通信を許可するためにVCNのセキュリティリストとルート表を設定する必要があります。

  • ルート表: DBシステムが、パブリックサブネットを通っているOpenVPNスタック経由で、オンプレミスのMySQL8.0データベースに接続するために、ルート表を作成します。
  • セキュリティリスト: セキュリティリストは、サブネットレベルにおいて仮想ファイアウォールとして機能し、サブネットが許可する通信のタイプを指定する、イングレスルールとエグレスルールを持ちます。
    • プライベートサブネットのセキュリティリスト-<VCN名>
      オンプレミスのOpenVPNネットワークで動作するMySQLクライアントアプリケーションから、プライベートサブネット上にあるMySQL DBシステムに接続するための通信を許可するリストです。
    • デフォルトセキュリティリスト-<VCN名>
      プライベートサブネット上にあるMySQL DBシステムからオンプレミスのMySQL8.0データベースに対し、OpenVPNネットワークを使った通信を許可するリストです。

コンソールを使用してVCNのセキュリティリストとルート表を構成します。

  1. ナビゲーションメニューからネットワーキングを開き、仮想クラウド・ネットワークをクリックします。
  2. リスト範囲から指定のVCNを作ったコンパートメントを選択します。
  3. 作成したVCN(ここではMyVCN)をクリックし、仮想クラウド・ネットワークの詳細のページを開きます。
  4. セキュリティリストをクリックします。
  5. ルート表を作成します。
    1. リソースの下にある、ルート表を選択します。
    2. プライベートサブネット-MyVCN のルート表をクリックします。
    3. ルート・ルールの追加をクリックします。
    4. ルート・ルールの追加パネルで下記の情報を入力します。
    • ターゲット・タイプ: プライベートIP
    • 宛先タイプ: CIDRブロック
    • 宛先CIDRブロック: OpenVPNクライアントのIPアドレス 172.27.232.0/24 を入力します。
    • ターゲット選択: OpenVPNアクセスサーバーのプライベートIPアドレスを入力します。この例では10.0.0.183 です。
    1. ルート・ルールの追加ボタンをクリックします。
      Route Table

 

  1. 次に、プライベート・サブネットにイングレスルールを追加します。
    1. プライベート・サブネット-MyVCNのセキュリティリスト をクリックします。
    2. イングレスルールの追加をクリックして、宛先ポートとして3306と33060を設定します。
    3. イングレスルールの追加パネルで下記を指定します。
    • ソースCIDR: OpenVPNクライアントのIPアドレス172.27.232.0/24 を入力します。
    • IPプロトコル: TCPを選択します。
    • 宛先ポート範囲: 宛先ポートとして、3306,33060をスペース無しで入力します。
    1. イングレスルールの追加のボタンをクリックします。
      Security List 01
  2. 次に、パブリックサブネットにイングレスルールを追加します。
    1. セキュリティリストの下の Default Security List-MyVCN をクリックします。
    2. イングレスルールの追加をクリックして、宛先ポートとして3306と33060を設定します。
    3. イングレスルールの追加パネルで下記を指定します。
    • ソースCIDR: VCNのIPv4 CIDRブロックを指定します。この例では10.0.0.0/16です。
    • IPプロトコル: TCPを選択します。
    • 宛先ポート範囲: 宛先ポートとして、3306,33060をスペース無しで入力します。
    1. イングレスルールの追加のボタンをクリックします。
      Security List 02

 

 

以上でOpenVPNネットワークとOCI間の通信を許可する、VCNのプライベートセキュリティリスト、パブリックセキュリティリスト、ルート表の設定が完了しました。


オンプレミスのMySQL8.0データベースにレプリケーションユーザーを作成

ソースサーバーにレプリケーションユーザーを作成し、必要な権限を付与します。OCI上のDBシステムはオンプレミスのMySQL8.0データベースと通信するために、このユーザーを使います。

  1. オンプレミスのMySQL8.0データベースを運用しているホストマシンでターミナルまたはコマンドプロンプトを開きます。
  2. MySQL ShellでオンプレミスのMySQL8.0データベースにログインします。
    mysqlsh root@localhost
  3. SQLモードに切り替えます。
    \sql
  4. レプリケーション用のユーザ repluser を作成します。
    SQL> CREATE USER 'repluser'@'%' IDENTIFIED BY 'Password123!' REQUIRE SSL;
  5. 作成した repluser にREPLICATION SLAVE 権限を付与します。
    SQL> GRANT REPLICATION SLAVE on *.* to 'repluser'@'%';

以上で、 REPLICATION SLAVE 権限を持ったレプリケーションユーザ repluser の作成が完了しました。


レプリケーションチャネルの作成

レプリケーションチャネルはオンプレミスのMySQL8.0データベースをDBシステムと通信させ、ソースからレプリカへデータをコピーするのに必要です。

  1. Oracle Cloud のアカウントログインします。
  2. ナビゲーションメニューからデータベースを選択し、チャネルをクリックします。
  3. チャネルの作成をクリックします。
  4. ソース接続で、下記の情報を入力します。
  • ホスト名:  OpenVPN クライアントのIPアドレス 172.27.232.5 を指定します。OpenVPNアクセスサーバーの構成 手順10. で指定したIPアドレスを確認してください。
  • MySQLポート: デフォルトの3306を指定します。
  • ユーザ名: オンプレミスのMySQL8.0データベースにレプリケーションユーザーを作成の章で作成した、レプリケーションユーザ repluser を指定します。
  • パスワード: レプリケーションユーザを作成した際に作ったパスワードを指定します。
    Channel Creation Source Connection

     
  1. SSLモードで、必須(REQUIRED) を選択します。
  2. レプリケーションのポジショニングで、ソースでGTID自動ポジショニングを使用できます(推奨) にチェックを入れます。
  3. ターゲットDBシステムDBシステムの選択をクリックし、作成済みのMyDBSystem を選びます。
    Channel Creation DB System

     
  4. チャネルの作成をクリックします。

以上で、オンプレミスの8.0MySQLからDBシステムへのレプリケーションチャネルが作成されました。レプリケーションチャネル作成の過程でエラーが出た場合は、Frederic Descampsによるブログ  MySQL HeatWave Database Service inbound replication channel troubleshooting guide をご参照ください。


まとめ

MySQL HeatWaveDatabase Service は柔軟性と拡張性に優れ、また比類なきパフォーマンスをセキュアな環境で実現します。この記事でご紹介した方法では移行時のダウンタイムほぼゼロにできますので、オンプレミスのMySQL 8.0データベースからMySQL HeatWave Database Serviceの移行をぜひご検討ください。