IBM Cloud Docs
Databases for MySQL へのマイグレーション

Databases for MySQL へのマイグレーション

既存の MySQL データベースから IBM Cloud® Databases for MySQLにデータをマイグレーションするには、2 つのオプションがあります。 IBM では mysqldumpmydumper の 2 つのオプションをお勧めします。 最適なツールは、ネットワーク接続、データ・セットのサイズ、および中間スキーマのニーズなど、特定の条件によって異なります。

開始する前に

データ・マイグレーションを開始する前に、 mysql ツールと mysqldump ツールを使用できるように、 MySQL をローカルにインストールしておく必要があります。

MySQL Workbench にも、 MySQL サーバーおよびデータベースを操作するためのグラフィック・ツールが用意されています。 Cloud Databases CLI は、厳密には必須ではありませんが、これを利用すると、新規 Databases for MySQL デプロイメントに簡単に接続してリストアすることもできます。

mysqldump

このネイティブ MySQL クライアント・ユーティリティーは、デフォルトでインストールされており、論理バックアップを実行し、実際のデータ・ファイルをコピーすることなく、表構造とデータを複製できます。mysqldump は、バックアップや別の MySQL サーバーへの転送のために 1 つ以上の MySQL データベースをダンプします。 詳しくは、「mysqldump の資料」を参照してください。

mysqldump は、以下の条件下で使用するのに適しています。

  • データ・セットのサイズが 10 GB 未満である。
  • マイグレーション時間は重要ではなく、マイグレーションの再試行のコストは低くなります。
  • 中間スキーマやデータの変換を行う必要がない。

以下のいずれかの条件が満たされている場合は、mysqldump を推奨しません。

  • データ・セットが 10 GB を超えています。
  • ソース・データベースとターゲット・データベースの間のネットワーク接続が不安定であるか、低速です。

mysqldump ツールを使用して、以下の手順を実行します。

ソース・データベースで mysqldump を実行して、データベースの再作成に使用できる SQL ファイルを作成します。 CLI を使用して mysql をマイグレーションするには、少なくとも、以下の引数が必要です。

  • ホスト名 (-h フラグ)
  • ポート番号 (-P フラグ)
  • ユーザー名 (-u フラグ)
  • -- ssl-mode = VERIFY_IDENTITY (クライアントは暗号化された接続を必要とし、サーバー CA 証明書および証明書内のサーバー・ホスト名に対して検証を実行します)
  • -- sl-ca (認証局 (CA) ファイルのパス名。これは、UI の*「概要」*ページの「エンドポイント CLI (Endpoints CLI)」タブ内にあります。)
  • データベース名
  • 結果ファイル (-r フラグ)

CLI コマンドは次のようになります。

mysqldump -h <host_name> -P <port_number> -u <user_name> --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt --set-gtid-purged=OFF -p <database_name> -r dump.sql

実行中のエラーを追跡する mysqldump ジョブのログ・ファイルを生成するには、以下のようなコマンドを使用します。

mysqldump -h <host_name> -P <port_number> -u <user_name> --log-error=error.log --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt --set-gtid-purged=OFF -p ibmclouddb -r dump.sql

インポート中に同じことを行うことができます。以下に例を示します。

mysql -h <host_name> -P <port_number> -u admin --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt -p ibmclouddb < dump.sql > import_logfile.log

グローバル・トランザクション ID (GTID) での MySQL レプリケーションの使用について詳しくは、「 MySQL リファレンス・ガイド」の フェイルオーバーおよびスケールアウトのための GTID の使用 を参照してください。

mysql コマンドには多くのオプションがあります。 公式資料を参照してください。 および コマンド解説書 を参照すると、その機能をより詳しく見ることができます。

mysqldump の出力のリストア

その後、mysqldump の結果出力を新規 Databases for MySQL デプロイメントにアップロードできます。 出力は SQL であるため、mysql コマンドを使用するだけでデータベースに送信できます。 admin ユーザーを使用してインポートを実行することをお勧めします。

mysqlを使用した管理者としての接続について詳しくは、 mysql との接続 の資料を参照してください。 mysql コマンドを使用して接続するには、admin ユーザーの接続文字列と TLS 証明書が必要です。これらはいずれも UI にあります。 証明書は、base64 からデコードし、任意のローカル・ファイルとして保管する必要があります。 以前に作成した dump.sqlexample-mysqlという名前のデータベース・デプロイメントにインポートするには、パラメーターに -f dump.sql を指定して mysql コマンドを呼び出します。 このパラメーターは、ファイル内の SQL ステートメントを読み取って実行するように mysql に指示します。

mysql を使用した接続』の資料に記載されているように、Cloud Databases CLI プラグインにより接続が簡素化されます。 上記の mysql インポートは、以下のようなコマンドを使用して実行できます。

mysql -h <host_name> -P <port_number> -u admin --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt -p ibmclouddb < dump.sql

ユーザーが指定されていない場合、コマンドは自動的に admin ユーザーを使用し、対話式にパスワードの入力を求めます。 TLS 証明書が自動的に取得されて使用されます。

リストア・プロセスの実行中に、データベース・デプロイメントに加えられた変更に関するメッセージがいくつか発行されます。

mydumper

mydumper とそのペアの論理バックアップ・ツール myloader は、mysqldump と同様にマルチスレッド化機能を使用して、データ・マイグレーションを実行します。ただし、mydumper は、並列バックアップ、整合読み取り、管理しやすい出力など、多くの機能が強化されています。 並列処理を使用すると、インポート・プロセスとエクスポート・プロセスのどちらでもパフォーマンスが向上し、同時に個々の表が個別のファイルにダンプされるため、出力の管理が容易になります。

mydumper は、以下の条件での使用に適しています。

  • データ・セットのサイズが 10 GB を上回る。
  • ソース・データベースとターゲット・データベースの間のネットワーク接続が高速で安定している。
  • 中間スキーマまたはデータの変換を行う必要がある。

以下のいずれかの条件に合致する場合は、mydumper の使用をお勧めしません。

  • データ・セットが 10 GB より小さい。
  • ソース・データベースとターゲット・データベースの間のネットワーク接続が不安定であるか、非常に低速である。

mydumper を使用してデータのマイグレーションを開始する前に、インストールおよび必要な開発者環境に関する詳細やステップバイステップの説明について、まず「mydumper プロジェクト」を参照してください。

次に、完全なデータ・マイグレーションを実行するための mydumper ツールと myloader ツールの使用方法について、「How to use mydumper」ページを参照してください。

InnoDB の構成可能変数のチューニング

以下の MySQL InnoDB オプションを構成し、マシンの容量とデータベース・ワークロードに基づいてパフォーマンスを調整することができます。

innodb_buffer_pool_size_percentage

  • 説明: innodb_buffer_pool_size_percentage value パラメーターでは、データベース・コンテナーの専用メモリー量を定義します。
  • デフォルト設定: 50
  • 最大: 100
  • 最小: 10
  • 再始動が必要: はい

データベース自体が所定の量のメモリーを使用するため、innodb_buffer_pool_size_percentage value パラメーターの構成が高すぎると、データベースのメモリー所要量 + innodb_buffer_pool_size_percentage が使用可能メモリー制限より大きくなり、メモリー不足状態 (OOM) になる可能性があります。

innodb_buffer_pool_size_percentage パラメーター値は、データベースのサイズによって異なります。 デフォルト値は 50% です。これは、すべてのサイズのデータベースで安全です。 必要に応じて値を構成します。OOM が発生した場合は、値の設定が高すぎるため、値を低くする必要があります。

innodb_flush_log_at_trx_commit

  • 説明: コミット操作において厳格な ACID 準拠と、より高いパフォーマンスとの間のバランスを制御します。

  • デフォルト設定: 2

デフォルト設定 2 は、ACID に完全に準拠しているわけではありませんが (ACID に完全に準拠するには、デフォルト設定 1 が必要) 、より高いパフォーマンスを確保しつつ安全でもあります。

  • 最大: 2
  • 最小: 0
  • 再始動が必要: いいえ

詳しくは、 MySQL innodb_flush_log_at_trx_commit の資料を参照してください。

innodb_log_buffer_size

  • 説明: InnoDB がディスク上のログ・ファイルに書き込むために使用するバッファーのサイズ (バイト単位)。
  • デフォルト設定: 32 MiB
  • 最大: 4294967295
  • 最小: 1048576
  • 再始動が必要: はい

詳しくは、 MySQL Innodb_log_buffer_size の資料を参照してください。

innodb_log_file_size

  • 説明: InnoDB ログ・ファイルのサイズ (バイト単位)。
  • デフォルト設定: 64 MB
  • 最大: 274877906900
  • 最小: 4194304
  • 再始動が必要: はい

詳しくは、 MySQL innodb_log_file_size の資料を参照してください。

innodb_lru_scan_depth

  • 説明: InnoDB バッファー・プールに対するフラッシュ操作のアルゴリズムおよびヒューリスティックに影響を与えるパラメーター。
  • デフォルト設定: 1024
  • 最大: 最大値なし
  • 最小: 100
  • 再始動が必要: はい

詳しくは、 MySQL innodb_lru_scan_depth の資料を参照してください。

innodb_read_io_threads

  • 説明: InnoDB 内の読み取り操作の入出力スレッドの数。
  • デフォルト設定: 4
  • 最大: 64
  • 最小: 1
  • 再始動が必要: はい

詳しくは、 MySQL innodb_read_io_threads の資料を参照してください。

innodb_write_io_threads

  • 説明: InnoDB 内の読み取り操作の入出力スレッドの数。
  • デフォルト設定: 4
  • 最大: 64
  • 最小: 1
  • 再始動が必要: はい

詳しくは、 MySQL innodb_write_io_threads の資料を参照してください。

net_read_timeout

  • 説明: 読み取りを中止するまでに、接続からの追加データを待機する秒数。
  • デフォルト設定: 30
  • 最大:
  • 最小: 1
  • 再始動が必要: はい

詳しくは、 MySQL net_read_timeout の資料を参照してください。

net_write_timeout

  • 説明: 書き込みを中止するまでに、ブロックが接続に書き込まれるのを待機する秒数。
  • デフォルト設定: 60
  • 最大:
  • 最小: 1
  • 再始動が必要: はい

詳しくは、 net_write_timeout 資料を参照してください。