すべてのプロダクト
Search
ドキュメントセンター

Data Transmission Service:ApsaraDB RDS for MySQLインスタンスの文字セットの変更

最終更新日:Oct 17, 2024

ビジネス要件に基づいて、テーブルの文字セットを変更する必要がある場合があります。 たとえば、文字セットをGBKからUTF8mb4に変更する必要がある場合があります。 ただし、大きなテーブルの文字セットを変更するために使用されるALTERステートメントは、テーブルをロックし、ビジネスに悪影響を及ぼします。

このトピックでは、ビジネスに影響を与えずに文字セットを変更する方法について説明します。 新しい文字セットに基づいてターゲットインスタンスにテーブルスキーマを作成し、Data Transmission Service (DTS) を使用してテーブルデータをターゲットインスタンスに移行できます。 サービスの継続性をさらに確保するために、ロールバックソリューションまたはデュアル書き込みソリューションを準備できます。

使用上の注意

  • 文字セットを変更する前に、ビジネスシステムとSQLステートメントが新しい文字セットと互換性があり、ビジネスシステムの機能が影響を受けないことを確認してください。

  • 完全データ移行中、DTSはソースインスタンスとターゲットインスタンスの読み取り /書き込みリソースを使用します。 これにより、データベースの負荷が増加する可能性があります。 データを移行する前に、ソースインスタンスとターゲットインスタンスのパフォーマンスを評価します。 オフピーク時にデータを移行することを推奨します。

  • ソースインスタンスにはPRIMARY KEYまたはUNIQUE制約が必要で、すべてのフィールドが一意である必要があります。 そうしないと、コピー先インスタンスに重複データが存在する可能性があります。

手順1: ソースインスタンスからターゲットインスタンスにテーブルスキーマをインポートする

この例では、データ管理 (DMS) を使用してログオンするインスタンスの管理モードはFlexible managementです。

  1. ソースインスタンスからソーステーブルスキーマのスクリプトをエクスポートします。 ソーステーブルスキーマは、文字セットを変更するテーブルのスキーマを参照します。

    1. DMSを使用してソースインスタンスにログインします。 詳細については、「DMSを使用したApsaraDB RDS For MySQLインスタンスへのログイン」をご参照ください。

    2. 上部のナビゲーションバーで、[データベース開発] をクリックします。 左側のナビゲーションウィンドウで、[データのエクスポート] > [データベースのエクスポート] を選択します。

      説明

      この操作を実行するには、右上隅にあるsettingアイコンの上にマウスを移動し、[トップナビゲーションバーのドロップダウンメニュー] をオンにする必要があります。

    3. [データのエクスポート] タブで、パラメーターを設定します。

      Export

      説明

      データエクスポートの設定プロセスとパラメーターは、インスタンスの管理モードによって異なる場合があります。 詳細については、「データベースのエクスポート」をご参照ください。

      パラメーター

      説明

      アプリケーションのデータエクスポート型

      実行するデータのエクスポートの種類。 [データベースのエクスポート] を選択します。

      データベース名

      データがエクスポートされるデータベースの名前。 エクスポートするデータベースを選択します。

      説明

      このデータベースに対するエクスポート権限が必要です。 詳細については、「所有権限の表示」をご参照ください。

      エクスポートされたテーブル

      エクスポートするテーブル。 この例では、部分テーブルが選択されています。 ビジネス要件に基づいて、[部分テーブル] または [すべてのテーブル] を選択できます。

      説明

      このパラメーターをPartial Tablesに設定した場合、[テーブルとフィルター] セクションで1つ以上のテーブルを選択し、各テーブルのフィルター条件を設定する必要があります。

      コンテンツのエクスポート

      エクスポートするコンテンツ。 [構造] を選択します。

      ファイル形式

      エクスポートするファイルの形式。 この例では、デフォルトでSQLが選択されており、変更できません。

      エクスポートされた構造タイプ

      エクスポートするスキーマのタイプ。 有効な値:

      • 手順

      • 関数

      • トリガー

      • 表示

      • イベント

      説明

      有効な値は、エクスポートするデータベースの種類によって異なります。

      その他のオプション

      エクスポートするその他のオブジェクト。 [Big data type export options] または [SQL script other options] をクリックし、必要なオプションを選択します。

    4. [送信] をクリックし、承認結果を待ちます。

    5. チケットが承認されたら、[ダウンロード][エクスポートされたファイルのダウンロード] をクリックします。 Download

  2. エクスポートしたファイルを解凍し、テーブルスキーマのスクリプトの文字セットを変更します。 Character

  3. ソースインスタンスと同じタイプのApsaraDB RDS for MySQLインスタンスを作成します。 新しいインスタンスがターゲットインスタンスです。 ApsaraDB RDS For MySQLインスタンスの作成方法の詳細については、「ApsaraDB RDS for MySQLインスタンスの作成」をご参照ください。

  4. 編集したテーブルスキーマのスクリプトを新しいApsaraDB RDS for MySQLインスタンスにインポートします。

    1. DMSを使用して、ターゲットApsaraDB RDS for MySQLインスタンスにログインします。 詳細については、「DMSを使用したApsaraDB RDS For MySQLインスタンスへのログイン」をご参照ください。

    2. 上部のナビゲーションバーで、[データベース開発] をクリックします。 左側のナビゲーションウィンドウで、[データ変更] > [データインポート] を選択します。

    3. [データのインポート] タブで、パラメーターを設定します。

      説明

      データインポートの設定プロセスとパラメーターは、インスタンスの管理モードによって異なる場合があります。 詳細については、「データのインポート」をご参照ください。

      パラメーター

      説明

      アプリケーションのデータ変更タイプ

      実行するデータ変更の種類。 [大容量データのインポート] を選択します。

      データベース

      ファイルがインポートされるデータベースの名前。

      説明

      ターゲットデータベースが [柔軟な管理] または [安定した変更] モードで管理されている場合は、データベースにログインしていることを確認します。 それ以外の場合、データベースは表示されません。

      ファイルのエンコード

      ターゲットデータベースで使用されるエンコードアルゴリズム。 有効な値:

      • UTF-8

      • GBK

      • ISO-8859-1

      • 自動識別

      インポートモード

      インポートモード。 有効な値:

      • 速度モード: このモードを使用すると、アップロードされたファイル内のSQL文が読み取られ、[実行] ステップで直接実行され、指定されたターゲットデータベースにデータがインポートされます。 速度モードは安全性は低いが、セキュリティモードよりも高速である。

        説明

        既定では、セキュリティコラボレーションモードで管理されているデータベースインスタンスの速度モードは無効になっています。 データベースインスタンスに適用されているセキュリティルールセットの [詳細] ページに移動し、[SQLの修正] タブをクリックします。 基本設定項目チェックポイントの下のリストで、データインポートが速度モード設定の選択をサポートしているかどうかを変更します。

      • セキュリティモード: このモードを使用すると、アップロードされたファイルが解析され、アップロードされたファイル内のSQL文またはCSVファイルデータが事前チェックステップでキャッシュされます。 実行ステップでは、キャッシュされたSQL文を読み取って実行してデータをインポートするか、キャッシュされたCSVファイルのデータを読み取って指定されたターゲットデータベースにインポートします。 セキュリティモードはより安全ですが、速度モードよりも低速です。

      ファイルタイプ

      データインポート用のファイルの形式。 有効な値:

      • SQLスクリプト: デフォルトでは、セキュリティコラボレーションモードで管理されているデータベースインスタンスにデータをインポートするには、INSERTステートメントとREPLACEステートメントのみを使用できます。 他のSQL文を使用してデータをインポートする場合は、データベース管理者 (DBA) またはDMS管理者としてデータインポートのセキュリティルールを変更します。 データベースインスタンスに適用されているセキュリティルールセットの [詳細] ページに移動し、[SQLの修正] タブをクリックします。 バッチデータインポートルールチェックポイントの下のリストで、必要に応じてセキュリティルールを変更します。

      • CSV: ファイル内の区切り文字はコンマ (,) でなければなりません。

      • Excel: ファイルには、テーブルヘッダーとデータを含めることも、データのみを含めることもできます。

      添付ファイル

      データインポート用のファイル。 [ファイルのアップロード] をクリックして、ファイルをアップロードします。

      説明
      • サポートされているファイルタイプには、SQL、CSV、TXT、XLSX、およびZIPがあります。

      • アップロードされるファイルのサイズは最大5 GBです。

      その他のオプション

      エラーをスキップするかどうかを指定します。 このパラメーターはオプションです。

      • デフォルトでは、チェックボックスはオフになっています。 エラーが発生した場合、DMSはSQL文の実行を停止し、エラーメッセージを送信します。

      • チェックボックスをオンにすると、DMSはエラーをスキップし、SQL文の実行を続行します。

    4. [送信] をクリックし、事前チェックが完了するまで待ちます。 事前チェックが失敗した場合は、問題のトラブルシューティングを行い、チケットを再度起票してください。

      説明

      アップロードされたファイルがSQLスクリプトの場合、DMSはアップロードされたファイル内のSQL文を事前チェックします。 アップロードされたファイルがCSVファイルの場合、DMSはアップロードされたファイルに基づいてINSERT文を生成します。

    5. [実行] ステップで、[変更の実行] をクリックします。 Execution

    6. [タスク設定] ダイアログボックスで、タスクを実行する時間を指定します。 [Execution Strategy] パラメーターを [Running immedially] に設定できます。 後でタスクを実行する場合は、[Execution Strategy] パラメーターを [Schedule] に設定し、DMSがタスクを実行する時点を指定します。 次に、[実行の確認] をクリックします。 Task Settings

      次のいずれかの方法を使用してタスクを実行できます。

      • 即時実行: デフォルトでは、このオプションが選択されています。 このオプションを選択すると、[実行の確認] をクリックすると、タスクがすぐに実行されます。

      • スケジュール: このオプションを選択した場合、タスクの開始時間を指定する必要があります。 [実行の確認] をクリックすると、指定した時点でタスクが実行されます。

      説明
      • タスクが実行されると、DMSはストリーミングモードでSQL文を読み取り、SQL文をバッチで実行します。 SQL文の各バッチのサイズは1 MBです。

      • [実行] ステップでは、タスクのステータス、SQLチェックの詳細、およびスケジューリングログを表示できます。

      • 中断されたタスクを再起動する場合は、インポートモードに基づいて、中断の最初またはオフセットからタスクが実行されます。

        • 速度モード: タスクが中断されて再起動されると、SQLスクリプトが実行されるか、データファイルが最初からインポートされます。

        • セキュリティモード: タスクが中断されて再起動された場合、SQLスクリプトが実行されるか、データファイルが中断のオフセットからインポートされます。

    7. テーブルスキーマがインポートされたら、show create table <table name>; ステートメントを実行して、テーブルの新しい文字セットを検証できます。

手順2: ソースインスタンスからターゲットインスタンスへのテーブルデータの移行

  1. DTSコンソールにログインします。

    説明
    • DMSコンソールに移動している場合は、右下隅にあるjiqiアイコンの上にマウスを移動し、retアイコンをクリックして、以前のバージョンのDTSコンソールに移動できます。

    • 新しいバージョンのDTSコンソールに移動している場合は、右下隅にあるreアイコンをクリックして、以前のバージョンのDTSコンソールに移動します。

  2. 左側のナビゲーションウィンドウで、[データ移行] をクリックします。

  3. [移行タスク] ページの上部で、移行先クラスターが存在するリージョンを選択します。

  4. ページの右上隅にある [移行タスクの作成] をクリックします。

  5. ソースデータベースとターゲットデータベースを設定します。

    Configure the source and destination databases

    セクション

    パラメーター

    説明

    タスク名

    -

    DTSが自動的に生成するタスク名。 タスクを簡単に識別できるように、わかりやすい名前を指定することをお勧めします。 一意のタスク名を指定する必要はありません。

    移行元データベース

    インスタンスタイプ

    移行元ディスクのタイプを設定します。 RDS インスタンスを選択します。

    インスタンスリージョン

    ソースインスタンスが存在するリージョン。

    RDS インスタンス ID

    ソースApsaraDB RDS for MySQLインスタンスのID。

    データベースアカウント

    ソースApsaraDB RDS for MySQLインスタンスのデータベースアカウント。 アカウントには、移行するデータベースに対する読み取り /書き込み権限が必要です。

    データベースパスワード

    ApsaraDB RDS for MySQLインスタンスのデータベースアカウントのパスワード。

    説明

    ソースデータベースに関する情報を指定した後、[データベースパスワード] の横にある [接続のテスト] をクリックして、情報が有効かどうかを確認できます。 情報が有効な場合は、[合格] メッセージが表示されます。 [失敗] メッセージが表示されたら、[失敗] の横にある [チェック] をクリックします。 次に、チェック結果に基づいて情報を変更します。

    暗号化

    ソースインスタンスへの接続を暗号化するかどうかを指定します。 [暗号化なし] または[SSL 暗号化] を選択します。 SSL暗号化を選択した場合、データ移行タスクを設定する前に、ApsaraDB RDS for MySQLインスタンスのSSL暗号化を有効にする必要があります。 詳細については、「ApsaraDB RDS For MySQLインスタンスのSSL暗号化の設定」をご参照ください。

    説明

    Encryptionパラメーターは、中国本土のリージョンでのみ使用できます。

    ターゲットデータベース

    インスタンスタイプ

    ターゲットデータベースのタイプ。 RDS インスタンスを選択します。

    インスタンスリージョン

    ターゲットApsaraDB RDS for MySQLインスタンスが存在するリージョン。

    RDS インスタンス ID

    ターゲットApsaraDB RDS for MySQLインスタンスのID。

    データベースアカウント

    ターゲットApsaraDB RDS for MySQLインスタンスのデータベースアカウント。 アカウントには、ターゲットデータベースに対する読み取り /書き込み権限が必要です。

    データベースパスワード

    ApsaraDB RDS for MySQLインスタンスのデータベースアカウントのパスワード。

    説明

    RDSインスタンスに関する情報を指定した後、[データベースパスワード] の横にある [接続のテスト] をクリックして、情報が有効かどうかを確認できます。 情報が有効な場合は、[合格] メッセージが表示されます。 [失敗] メッセージが表示されたら、[失敗] の横にある [チェック] をクリックします。 次に、チェック結果に基づいて情報を変更します。

    暗号化

    接続先インスタンスへの接続を暗号化するかどうかを指定します。 [暗号化なし] または[SSL 暗号化] を選択します。 SSL暗号化を選択した場合、データ移行タスクを設定する前に、ApsaraDB RDS for MySQLインスタンスのSSL暗号化を有効にする必要があります。 詳細については、「ApsaraDB RDS For MySQLインスタンスのSSL暗号化の設定」をご参照ください。

    説明

    Encryptionパラメーターは、中国本土のリージョンでのみ使用できます。

  6. ページの右下隅にある [ホワイトリストと次への設定] をクリックします。

    説明

    DTSサーバーのCIDRブロックは、ソースおよびターゲットApsaraDB RDS for MySQLインスタンスのホワイトリストに自動的に追加されます。 これにより、DTSサーバーがソースおよびターゲットのApsaraDB RDS for MySQLインスタンスに接続できるようになります。

  7. 移行する移行タイプとオブジェクトを選択します。

    Select the migration types and the objects to be migrated

    パラメーター

    説明

    移行タイプ

    スキーマの移行はステップ1で完了します。 したがって、このステップでスキーマ移行を選択する必要はありません。

    • フルデータ移行のみを実行するには、[フルデータ移行] のみを選択します。

      警告

      データの一貫性を確保するため、完全データ移行中はソースインスタンスにデータを書き込まないことを推奨します。

    • データ移行中のサービスの継続性を確保するには、[フルデータ移行] および [増分データ移行] を選択します。

      説明

      増分データ移行中に、INSERT、UPDATE、DELETE、CREATE TABLE、ALTER TABLE、RENAME TABLE、TRUNCATE TABLE、およびDROP TABLEのSQL操作を移行できます。

    移行するオブジェクトの選択

    [使用可能] セクションで、ステップ1でスキーマが移行されたオブジェクトを選択し、Rightwards arrowアイコンをクリックして [選択済みオブジェクト] セクションにオブジェクトを追加します。

    警告

    オブジェクト名マッピング機能を使用しないことを推奨します。 それ以外の場合、データ移行タスクは失敗します。

  8. 移行タスクを開始します。

    1. ページの右下隅にある [事前チェック] をクリックします。

      説明
      • データ移行タスクを開始する前に、DTSは事前チェックを実行します。 DTSは、事前チェックに合格した場合にのみデータを移行できます。

      • タスクが事前チェックに合格しなかった場合は、失敗した各項目の横にあるInfoアイコンをクリックして詳細を表示できます。 原因に基づいて問題をトラブルシューティングし、プレチェックを再度実行します。

    2. データ移行タスクが事前チェックに合格したら、[次へ] をクリックします。

    3. [設定の確認] ダイアログボックスで、[チャネル仕様] パラメーターを指定し、[データ送信サービス (従量課金) サービス規約] に同意するチェックボックスをオンにします。

    4. [購入と開始] をクリックして、データ移行タスクを開始します。

ステップ3: ワークロードの切り替え

次のいずれかのソリューションを使用してワークロードを切り替えます。

  • ロールバックソリューション: アプリケーションのコードを編集する必要はありません。 しかし、ロールバック障害が発生することがある。

    1. データ移行が完了したら、ターゲットApsaraDB RDS for MySQLインスタンスのデータを確認します。

    2. ロールバックソリューションを準備し、ワークロードを移行先インスタンスに切り替えます。 ロールバックソリューションは、反対方向のデータ移行タスクに基づいています。 このタスクにより、ワークロードを元のソースインスタンスに戻すことができます。 詳細については、「ターゲットデータベースへのワークロードの切り替え」をご参照ください。

    3. ビジネスの機能をテストします。 機能が期待どおりに機能する場合は、反対方向にデータ移行タスクを削除します。

    4. オプション: ソースApsaraDB RDS for MySQLインスタンスが不要になった場合は、インスタンスをリリースします。

  • デュアル書き込みソリューション: このソリューションは、ロールバックの高い成功率を保証します。 ただし、アプリケーションコードの編集には多大な労力が必要です。

    1. アプリケーションコードを編集して、デュアル書き込みソリューションを実装します。 デュアルライトソリューションは、ソースインスタンスと宛先インスタンスの両方にデータ変更を書き込みます。

    2. データ移行タスクを停止します。

      • フルデータ移行

        フルデータ移行中にタスクを手動で停止しないでください。 そうしないと、システムはすべてのデータを移行できません。 移行タスクが自動的に終了するまで待ちます。

      • 増分データ移行

        増分データ移行中、タスクは自動的に終了しません。 移行タスクを手動で停止する必要があります。

        1. タスクの進行状況バーに [増分データ移行][移行タスクは遅延しません] が表示されるまで待ちます。 その後、ソースデータベースへのデータの書き込みを数分間停止します。 場合によっては、進行状況バーに増分データ移行の遅延時間が表示されます。
        2. 増分データ移行のステータスが移行タスクが遅延なしに変更された後、移行タスクを手動で停止します。Stop a task during incremental migration
      説明

      書き込み操作を実行しているセッションがないことを確認します。 セッション情報を取得するには、ソースインスタンスにログインし、show processlist; ステートメントを実行します。

    3. データ移行が完了したら、ターゲットApsaraDB RDS for MySQLインスタンスのデータを確認します。

    4. アプリケーションのデュアル書き込みソリューションを有効にします。 次に、データ変更がソースインスタンスとターゲットインスタンスの両方に書き込まれます。

    5. ターゲットインスタンスでビジネスの機能をテストします。 機能が期待どおりに機能する場合は、デュアル書き込みソリューションを無効にします。

    6. オプション: ソースApsaraDB RDS for MySQLインスタンスが不要になった場合は、インスタンスをリリースします。