MySQL Database Serviceを触ってみた
(DumpInstance編)

 2021.04.26  株式会社システムエグゼ

MySQL Database Serviceを触ってみた(DumpInstance編)

「MySQL Database Service(以下、MDS)」は、MySQL Enterprise Edition をベースに開発され、MySQLの開発元であるオラクル社のMySQLチームが100% 開発、管理、サポートするクラウド・データベース・サービスです。

前回の「MySQL Database Serviceを触ってみた(バックアップ&リストア編)」ではMDSインスタンスのバックアップとリストア手順をご説明しましたが、4回目となる今回はMySQL ShellのDumpInstanceユーティリティを使用し、オンプレミスのMySQLにあるデータをOracle Cloud Infrastructure(OCI)上のMDSインスタンスへ移行する手順をご紹介します。

事前準備

前提条件は以下となります。

  • 移行元と移行先となるOCI上のMDSインスタンスの両方で、MySQLのバージョンが5.7以降であること。
  • 移行元と移行先(踏み台サーバ)の両側に、OCI-CLIとMySQLShellが導入済みであること。
  • 移行元と移行先(踏み台サーバ)の両側から、ダンプファイル格納用Object Storageのバケットにアクセス可能であること。

1.OCI-CLIの導入と設定

OCIのObject Storageへダンプファイルを送信するためには、OCI-CLIの導入と構成ファイルの設定が必要です。

2.MySQL Shellの導入

3.バケットの作成

後述するdumpInstanceユーティリティで取得するダンプファイル格納用バケットを用意します。

バケットの作成

4.移行用データの作成

移行元のMySQLサーバ5.7でテストデータを作成します。

※画像をクリックすると拡大します

 

【動画】OCI・初級編シリーズの紹介
【動画】初級① OCIネットワーク基礎・設定編

ダンプの取得

MySQL Shellには、ダンプファイルを取得するため、以下のユーティリティが用意されています。

  • dumpInstance():全てのスキーマをダンプするユーティリティ
  • dumpSchemas():選択されたスキーマのみダンプするユーティリティ
  • dumpTable():あるスキーマの選択されたテーブルやビューのみダンプするユーティリティ(8.0.22バージョン以降)
  • loadDump():スキーマをDBシステムにインポートするユーティリティ

今回は「dumpInstance()」を利用してObject Storageのバケットに全てのスキーマのダンプを取得します。

dumpInstance()の基本構文は以下の通りとなります。

> util.dumpInstance(outputUrl[, options])
  • outputUrl : ダンプファイルを格納するディレクトリ・パス
  • options : オプション変数

手順①

ダンプを取得する前に「dryRun」および「ocimds」パラメータをtrueに設定してdumpInstanceコマンドを実行します。

これにより、エクスポートのテスト実行、互換性の問題のチェック、およびそれらの問題の出力へのリストが実行されます。

> util.dumpInstance("dumpinstance", {osBucketName:"bucket-mdsdump", osNamespace:"XXXXXXXXXX", ocimds:true, threads: 4, dryRun: true})

※「thread」はこのタスクに使用する処理スレッドの数でデフォルトは4となります。
最適なパフォーマンスを得るには、このパラメータをデータベース・サーバーで使用可能なCPUコアの数に設定することが推奨されています。

※画像をクリックすると拡大します

上記エラーはMDSに存在しますが、MySQLのオンプレミス・インスタンスには存在しないセキュリティ関連の制限など、互換性の問題で発生したものとなります。
以下の通り、「compatibility」 オプションを渡すことでエラーの解決ができます。

> util.dumpInstance("dumpinstance", {osBucketName:"bucket-mdsdump", osNamespace:"XXXXXXXXXX", ocimds:true, compatibility:["strip_restricted_grants","strip_definers"], threads: 4, dryRun: true})

※画像をクリックすると拡大します

※オプションの詳細は以下をご参照ください。
Oracle Cloud Infrastructureのドキュメント - データベースのインポートおよびエクスポート

手順②

次は検証用のオプション「dryRun」を外して同じコマンドを実行します。

> util.dumpInstance("dumpinstance", {osBucketName:"bucket-mdsdump", osNamespace:"XXXXXXXXXX", ocimds:true, compatibility:["strip_restricted_grants","strip_definers"], threads: 4})

※画像をクリックすると拡大します

オブジェクトストレージに問題なくファイルがアップロードされたことを確認します。

ダンプのインポート

取得したダンプをOCI上のMDSにインポートします。

手順①

MySQL ShellでMDSへ接続します。

※画像をクリックすると拡大します

手順②

loadDump()ユーティリティコマンドを実行してダンプファイルをインポートします。

> util.loadDump("dumpinstance", {osBucketName: "bucket-mdsdump", osNamespace: "XXXXXXXXXX"})

※画像をクリックすると拡大します

上記エラーはバージョンの違いで発生したものとなります。
以下の通り、「ignoreVersion」オプションを渡すことでエラーが解決します。

> util.loadDump("dumpinstance",{osBucketName:"bucket-mdsdump",osNamespace:"XXXXXXXXXX",ignoreVersion: true})

手順③

MySQLクライアントからMDSへ接続し、テスト用データが存在していることを確認します。

※画像をクリックすると拡大します

最後に

以上でDumpInstanceを用いたMDSインスタンスへのデータ移行の検証が完了しました。
MySQL Shellが提供するユーティリティを使用することによって、バージョンが異なってもオンプレのデータをクラウド上へ簡単に移行できることが確認できました。

今回は非常にシンプルに一部の機能やオプションのみに触れましたが、それ以外にも様々なオプションがあるので、公式サイトをご参照の上、検証することを推奨します。

最後までお読みいただき、ありがとうございました。

ホワイトペーパー:【ADW】インスタンス稼動のスケジューリング

RECENT POST「エンジニアリング」の最新記事


エンジニアリング

Oracle Databaseのバックアップ戦略: 物理バックアップ vs 論理バックアップ

エンジニアリング

Oracle Autonomous Data Warehouse Cloud 起動停止の自動化 ~Oracle Cloud Infrastructure CLI によるスケジューリング編~

エンジニアリング

MySQL Database Serviceにおけるデータセキュリティ機能紹介

エンジニアリング

OCIのREST API利用入門ガイド(概要・セットアップ・実行方法)Oracle CloudのREST APIを利用した操作方法

MySQL Database Serviceを触ってみた(DumpInstance編)
Oracle Cloudのすすめクラウド移行まるわかりガイド

RECENT POST 最新記事

RANKING人気記事ランキング