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に特化した無償移行アセスメントサービス

「高品質・低コストなOracle Cloudに移行したいがノウハウがない」「まだ比較検討段階で外部にアセスメントを依頼する予算がない」「まるっとクラウド移行を任せられるベンダーが欲しい」などのお困りごとは、ぜひ私たちシステムエグゼへご相談ください。

3回のワークショップでスピーディーにお客さまのシステムのアセスメント結果をご提供します!

サービスの詳細はこちらから

事前準備

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

  • 移行元と移行先となる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でテストデータを作成します。

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

 

クラウド利用における三大課題と理想的なクラウド運用
忖度無しの徹底比較! Oracle Cloud Infrastructure VS Amazon Web Services

ダンプの取得

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が提供するユーティリティを使用することによって、バージョンが異なってもオンプレのデータをクラウド上へ簡単に移行できることが確認できました。

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

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

Oracle Cloudのすすめクラウド移行まるわかりガイド

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


エンジニアリング

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

エンジニアリング

MySQLとは?MySQLの特長と最新動向を徹底解説

エンジニアリング

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

エンジニアリング

MySQL Database Serviceを触ってみた(バックアップ&リストア編)

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