Oracle MySQL Database Serviceのインポート・エクスポート
- Oracle MySQL Database Serviceの使い方メモ〜その2
- Oracle MySQL Database Serviceのインポート・エクスポート (mysqldump, MySQL Client, MySQL Workbench)
はじめに
Oracle Cloud Infrastructure (OCI) でマネージドサービスとして利用可能なOracle MySQL Database Serviceにおけるインポート・エクスポート操作を確認しました。Bastion (踏み台) サーバー上のmysqldumpとMySQL Clientを利用した場合と、クライアント環境のMySQL Workbenchを利用した場合を確認しました。結論はOracle MySQL Database Serviceにインポートする際にSET @@GLOBAL.GTID_PURGEDが含まれていると権限が足りないと怒られるので、エクスポートする際に--set-gtid-purged=OFF
オプションを付与することがポイントです。
検証環境
- MySQLバージョン : 8.0.22-u2-cloud (Oracle MySQL Database Service)
- Oracle-Linux-8.2-2020.11.10-0 (OCI Compute VM) : Bastion (踏台) サーバとして利用
- MySQL Ver 8.0.21 for Linux on x86_64 (Source distribution) : Bastionサーバ上のMySQL Clientとして利用
- macOS 10.15.7 Catalina : クライアント環境
- MySQL Workbench 8.0 Version 8.0.22 : クライアント上にインストール
OCI上の検証環境の構築方法は前回の記事を参照ください。
Oracle MySQL Database Serviceのインスタンスを作ってMySQL Workbenchから接続してみた
Bastionサーバ上でエクスポート・インポートを実施する
概要
Oracle MySQL Database Serviceインスタンスはプライベート・エンドポイントにアクセス可能なBastionサーバ上でmysqldump, MySQL Clientを実行し、Oracle MySQL Database Serviceにおけるインポート・エクスポートを行います。作業のイメージとしては下記のアーキテクチャ図を確認ください。エクスポートによるDumpファイルが生成場所、インポートのためのDumpファイルの配置場所はBastionサーバとなります。
失敗例
--set-gtid-purged=OFF
オプション無しで失敗例を記します。Oracle MySQL Database Serviceインスタンス上のtestスキーマに対して下記エクスポート操作をBastionサーバ上で実施しました。
$ mysqldump --single-transaction --host [プライベートIPアドレス] -u [管理者ユーザー名] -p test > /tmp/mysqldump_test.dump
Enter password:
Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.
警告が出ますがDumpファイルは問題なく生成されています。
$ ls /tmp/mysqldump_test.dump
/tmp/mysqldump_test.dump
次にOracle MySQL Database Serviceインスタンスにインポートしてみます。
mysql --host [プライベートIPアドレス] -u [管理者ユーザー名] -p test < /tmp/mysqldump_test.dump
Enter password:
ERROR 1227 (42000) at line 18: Access denied; you need (at least one of) the SUPER, SYSTEM_VARIABLES_ADMIN or SESSION_VARIABLES_ADMIN privilege(s) for this operation
管理者ユーザーに付与されている権限が不足しているとエラーがでて失敗します。
成功例
--set-gtid-purged=OFF
オプションを付与してmysqldumpコマンドを実施します。
$ mysqldump --single-transaction --set-gtid-purged=OFF --host [プライベートIPアドレス] -u [管理者ユーザー名] -p test > /tmp/mysqldump_test.dump
Enter password:
警告も表示されず、問題なく成功します。次にOracle MySQL Database Serviceインスタンスにインポートしてみます。
mysql --host [プライベートIPアドレス] -u [管理者ユーザー名] -p test < /tmp/mysqldump_test.dump
Enter password:
インポートも問題なく実行できました。
mysqldumpのオプションについては公式マニュアルを確認ください。
クライアント上のMySQL Workbenchからのエクスポート・インポート
概要
Bastionサーバ経由でOracle MySQL Database Serviceにアクセスするように設定したクライアント環境上のMySQL Workbenchからインポート・エクスポートを行います。作業のイメージとしては下記のアーキテクチャ図を確認ください。エクスポートによるDumpファイルが生成場所、インポートのためのDumpファイルの配置場所はクライント環境となります。
MySQL Workbenchの接続方法については前回の記事を参照ください。
エクスポート操作
MySQL Workbench起動後に接続情報のタイルを選択し接続、画面左のManagementメニューよりData Exportメニューを選択します。画面右上のAdvanced Optionよりset-gtid-purged - Add 'SET @@GLOBAL.GTID_PURGED' to the outputの値をOFF
に設定し、画面右上のReturnボタンを選択して元の画面に戻ります。
Table to Exportよりエクスポート対象となるスキーマとテーブルを選択してください。画面下部のExport to Dump Project FolderにDumpファイルの出力先のフォルダPATHを入力し、画面右下のStart Exportボタンを選択して、エクスポートを実行します。
インポート操作
画面左のManagementメニューよりData Exportメニューを選択します。Import from Dump Project FolderにインポートするDumpファイルが存在するフォルダPATHを入力します。画面下部の選択メニューより、インポート対象となるスキーマとテーブルを選択してください。画面右下のStart Importボタンを選択して、インポート操作を実行します。
関連情報
公式サイト
Oracle Cloud Infrastructure Documentation MySQL Database
MySQL 5.6 リファレンスマニュアル mysqldump — データベースバックアッププログラム
Author And Source
この問題について(Oracle MySQL Database Serviceのインポート・エクスポート), 我々は、より多くの情報をここで見つけました https://qiita.com/orakurara/items/d437f9e209c22e0e9b0a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .