Source DBと Target DB のアクセス設定
    • PDF

    Source DBと Target DB のアクセス設定

    • PDF

    Article Summary

    VPC環境で利用できます。

    マイグレーション前に Source DBと Target DBの設定を確認し、データベースへのアクセスのためにアクセス情報を設定します。次の中からマイグレーションする状況に合う場合を選択し、設定方法を確認します。

    事前準備

    Source DBと Target DBの接続する前に以下の事前タスクを順に行います。

    1. NAVERクラウドプラットフォームコンソールで、Source DBを作成した VPCに Target DBを作成します。

      • Target DBは Source DBと DBMSの種類が同様である必要があります。
      • Source DBと Majorバージョンが同じ DBMSバージョンを推奨します。
      • Target DBの作成方法に関する詳細は、Cloud DB for MySQL を開始するをご参照ください。
    2. Source DBをクローンするために、Source DBのバイナリログ設定を確認します。

      • 必須事項: バイナリログの有効化
        • log_binの値が ONと表示されていることを確認
        • server_id値を指定
      • 推奨事項: バイナリログの保存期間を5日以上に設定
        • 設定変数 expire_logs_daysまたは binlog_expire_logs_secondsの値を設定
        • バイナリログの保存期間がマイグレーション時間より短い場合は、クローン時に以下のようなエラーメッセージが発生します。この場合、Source DB設定の変更後にマイグレーションの削除と再作成が必要です。
          Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'
    3. Source DBの Character Set/Collationと Definerアカウントをチェックします。

      • Cloud DB for MySQLは、[utf8、utf8mb4、euckr] Character Setに対してのみサポートします。Source DB上にその他の設定になっている場合は、変更してから実行します。
      • Source DBで使用する Collationが Target DBでもサポートするか確認します。
        ex) 8.0以前バージョンでは utf8mb4 0900 ai_ciをサポートしません。
      • Source DB上で使用中の Definerアカウントは、アカウント名と許可ホスト名が同様に Cloud DB for MySQLに登録されている場合にマイグレーションを実行できます。
      • Source DB Character Setチェッククエリ
       SELECT character_set_name
       FROM information_schema.TABLES T, information_schema.COLLATION_CHARACTER_SET_APPLICABILITY CCSA
       WHERE CCSA.collation_name = T.table_collation AND TABLE_SCHEMA NOT IN ( 'information_schema', 'mysql', 'performance_schema', 'sys' ) AND CCSA.character_set_name NOT IN ( 'utf8', 'utf8mb3', 'utf8mb4', 'euckr' );
      
       SELECT DEFAULT_CHARACTER_SET_NAME
       FROM information_schema.SCHEMATA T
       WHERE SCHEMA_NAME NOT IN ( 'information_schema', 'mysql', 'performance_schema', 'sys' ) AND DEFAULT_CHARACTER_SET_NAME NOT IN ( 'utf8', 'utf8mb3', 'utf8mb4', 'euckr');
      
      • Source DB Collationのチェッククエリ
      SELECT DISTINCT (table_collation) as table_collate FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys'); 
      SELECT DISTINCT (COLLATION_CONNECTION) as table_collate FROM information_schema.views WHERE TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys'); 
      SELECT DISTINCT (COLLATION_CONNECTION) as table_collate FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys'); 
      SELECT DISTINCT (DATABASE_COLLATION) as table_collate FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys'); 
      SELECT DISTINCT (COLLATION_CONNECTION) as table_collate FROM information_schema.TRIGGERS WHERE TRIGGER_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys');
      SELECT DISTINCT (DATABASE_COLLATION) as table_collate FROM information_schema.TRIGGERS WHERE TRIGGER_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys');
      SELECT DISTINCT (DEFAULT_COLLATION_NAME) as table_collate FROM information_schema.SCHEMATA WHERE SCHEMA_NAME NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys');
      
      • Source DB Definerアカウントのチェッククエリ
      SELECT DEFINER FROM information_schema.ROUTINES
      WHERE ROUTINE_SCHEMA NOT IN ( 'information_schema', 'mysql', 'performance_schema', 'sys' ) AND SECURITY_TYPE = 'DEFINER';
      
      SELECT DEFINER FROM information_schema.VIEWS
      WHERE table_schema NOT IN ( 'information_schema', 'mysql', 'performance_schema', 'sys' ) AND SECURITY_TYPE = 'DEFINER' ;
      
    4. (MySQL 5.7から 8.0にマイグレーションする場合) sql_modeをチェックします。

      • MySQL 5.7バージョンと MariaDB 10.1.7以上バージョンで Default値でサポートする sql mode="NO AUTO CREATE USER"設定は MySQL 8.0バージョンからはサポートしません。
      • Source DBにその設定が適用されている場合は、以下の内容を参照して対処し、マイグレーションを行います。
      • sql_mode設定のチェッククエリ
      SELECT ROUTINE_SCHEMA, ROUTINE_NAME, SQL_MODE
      FROM information_schema.routines
      WHERE ROUTINE_SCHEMA NOT IN ('sys','mysql');
      
      SELECT TRIGGER_SCHEMA, TRIGGER_NAME, sql_mode
      FROM information_schema.triggers
      WHERE TRIGGER_SCHEMA NOT IN ('sys','mysql');
      
      SELECT @@sql_mode ; 
      
      • sql_mode互換性イシューの対処法
       - Source DB > [DB Config管理]で sql_mode="NO_AUTO_CREATE_USER"削除設定
       - Source DB > Procedure、Function、Triggerを削除してから再作成  
       1. Procedure、Function、Triggerに対してのみ dropと create構文が作成された sqlファイルを作成
          $ mysqldump -u {ユーザー名} -p -h {Source DBホスト名} --set-gtid-purged=OFF --routines --triggers  --no-create-info --no-data --no-create-db --add-drop-trigger {ユーザー DB} > backup.sql
       2. backup.sqlファイル内の NO_AUTO_CREATE_USER構文をすべて削除
          ex) SET sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'  => SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION'
       3. 適用する
          $ mysql -u {ユーザー名} -p -h {Source DBホスト名} {ユーザー DB} < backup.sql          
      

    同じ VPC内でマイグレーション

    Source Dbが NAVERクラウドプラットフォーム内の VPCに存在し、Target DBを同じ VPCに作成する場合にアクセス情報を設定する方法を説明します。
    次の手順を順に行います。

    1. Target DBアクセス設定

    Target DBから Source DBにアクセスできるように、Target DBサーバに適用した ACGの Outboundルールを設定します。

    参考

    ここでは、アクセス設定に必要な内容のみ説明します。ACG設定に関する詳細は、Serverご利用ガイドの ACGをご参照ください。

    ACGルールを設定する方法は、次の通りです。

    1. Target DBの詳細情報で Target DBサーバに適用した ACG を確認します。
    2. ACG 項目の i-dms-windowをクリックし、ACG画面に移動します。
    3. Target DBに適用した ACGをクリックし、 [ACG設定] ボタンをクリックします。
    4. [Outbound] タブをクリックします。
    5. 以下のルールを入力し、 [追加] ボタンをクリックします。
      • プロトコル : TCPを選択
      • 目的地 : Source DBを作成したサブネットの IPアドレス範囲を入力(例) 10.0.0.0/24)
      • 許可ポート : Source DBのアクセスポートを入力
    6. [適用] ボタンをクリックします。

    2. Source DBアクセス設定

    Source DBのアクセス情報を設定します。Source DBに適用した ACGルールと ACLを設定します。

    Source DBサーバの ACG設定

    • Source DBサーバのファイアウォール(ACG)を

    • 設定して Target DBからアクセスできるように設定します。
      以下のトラフィックを許可するように、Source DBサーバに適用された ACGの Inboundルールを修正します(ACGを参照)。

      • プロトコル: TCP
      • アクセスポート: Target DBを作成したサブネットの IPアドレスの範囲(例) 10.0.0.0/24)
      • 許可ポート: Target DBのアクセスポート
    • 以下のような場合、Source DBに Outboundを設定します。

      • Source DBが ACGではなく NACLポリシーを使用する NAVERクラウドプラットフォームサーバ
      • NAVERクラウドプラットフォームサーバでない場合
    参考
    • ACGは statefulに従うため、outboundを別途設定しなくても可能です。
    • Network ACLは statelessに従うため、outboundを設定します。

    Source DBアカウント作成と ACL設定

    Source DBと Target DBを接続するには、以下のアカウントを作成して ACLに追加します(DB User管理を参照)。

    Public Subnet内の Target DBにマイグレーション

    Source DBと Target DBのドメインが異なり、Target DBを Public Subnetに作成する場合にアクセス情報の設定方法を説明します。
    次の手順を順に行います。

    1. Target DBアクセス設定

    Target DBから Source DBにアクセスできるように、Target DBサーバに適用した ACGの Outboundルールを設定します。

    参考

    ここでは、アクセス設定に必要な内容のみ説明します。ACG設定に関する詳細は、Serverご利用ガイドの ACGをご参照ください。

    ACGルールを設定する方法は、次の通りです。

    1. Target DBの詳細情報で Target DBサーバに適用した ACG を確認します。
    2. ACG 項目の i-dms-windowをクリックし、ACG画面に移動します。
    3. Target DBに適用した ACGをクリックし、 [ACG設定] ボタンをクリックします。
    4. [Outbound] タブをクリックします。
    5. 以下のルールを入力し、 [追加] ボタンをクリックします。
      • プロトコル : TCPを選択
      • 目的地 : Source DBの Publicドメインの IPアドレスを入力(例) 101.101.220.90/32)
      • 許可ポート : Source DBのアクセスポートを入力
    6. [適用] ボタンをクリックします。

    2. Source DBアクセス設定

    Source DBのアクセス情報を設定します。Source DBに適用した ACGルールと ACLを設定します。

    Source DBサーバの ACG設定

    • Source DBサーバのファイアウォール(ACG)を設定して、Target DBからアクセスするように設定します。以下のトラフィックを許可するように、Source DBサーバに適用された ACGの Inboundルールを修正します。

      • プロトコル: TCP
      • アクセスソース: Target DBに割り当てられた Publicドメイン IPアドレス(例) 101.101.220.246/32)
      • 許可ポート: Target DBのアクセスポート
    • 以下のような場合、Source DBに Outboundを設定します。

      • Source DBが ACGではなく NACLポリシーを使用する NAVERクラウドプラットフォームサーバ
      • NAVERクラウドプラットフォームサーバでない場合
    参考
    • ACGは statefulに従うため、outboundを別途設定しなくても可能です。
    • Network ACLは statelessに従うため、outboundを設定します。

    Source DBアカウント作成と ACL設定

    Source DBと Target DBを接続するには、以下のアカウントを作成して ACLに追加します。

    Private Subnet/Public Subnet内の Target DBにマイグレーション

    Source DBと Target DBのドメインが異なり、Target DBを Private Subnetに作成する場合にアクセス情報の設定方法を説明します。
    Target DBが Public Subnetで作成された場合も、以下の方法で行えます。
    次の手順を順に行います。

    1. Target DBアクセス設定

    Target DBのアクセス情報を設定します。次の手順を順に行います。

    1. NAT Gateway作成

    Target DBサーバと接続する NAT Gatewayを作成します。

    参考

    ここでは、アクセス設定に必要な内容のみ説明します。NAT Gateway作成に関する詳細は、VPCご利用ガイドの NAT Gateway作成をご参照ください。

    NAT Gatewayを作成する方法は、次の通りです。

    1. NAVERクラウドプラットフォームコンソールで、 Services > Networking > VPC メニューを順にクリックします。
    2. Subnet Managementメニューをクリックします。
    3. [Subnet作成]ボタンをクリックします。
    4. Public NatGateway用途の Subnetを作成します。
      dms-natgateway-subnet-setting_ko.png
    5. NAT Gateway メニューをクリックします。
    6. [NAT Gateway作成] ボタンをクリックします。
    7. グローバル NAT Gatewayを作成します。
      NAT Gateway名を入力し、Target DBが作成された VPCサブネット を選択します。
      dms-create-natgateway_ko.png
    8. [作成] ボタンをクリックします。
    9. 作成した NAT Gatewayの IPアドレス を確認します。

    2. Route Table接続

    Route Tableを作成し、ルーティングルールに NAT Gatewayを追加します。Target DBがあるサブネットに Route Tableを適用します。

    参考

    ここでは、アクセス設定に必要な内容のみ説明します。Route Tableに関する詳細は、VPCご利用ガイドの Route Tableをご参照ください。

    Route Tableを適用する方法は、次の通りです。

    1. NAVERクラウドプラットフォームコンソールで、 Services > Networking > VPC メニューを順にクリックします。
    2. Route Table メニューをクリックします。
    3. [Route Table作成] ボタンをクリックします。
    4. Route Table名を入力し、 VPCSubnetサポートタイプ を選択します。
      • VPC : Target DBを作成した VPCを選択
      • Subnetサポートタイプ :
        • Target DBが Private Subnetの場合に、Public NatGatewayがある グローバル を選択
        • Target DBが Public Subnetの場合に、 グローバル を選択
    5. [作成] ボタンをクリックします。
    6. 作成した Route Tableをクリックし、 [Route設定] ボタンをクリックします。
    7. 必要な情報を入力し、 [作成] ボタンをクリックします。
      • Destination : Source DBに割り当てられた Publicドメインの IPアドレスを入力(例) 101.101.220.90/32)
      • Target Type : NATGWを選択
      • Target Name : 1. NAT Gateway作成で作成した NAT Gatewayを選択
    8. [確認] ボタンをクリックします。
    9. Route Tableをクリックし、 [関連 Subnet設定] ボタンをクリックします。
    10. Subnet名 で NatGatewayを作成したサブネットを選択し、[作成] ボタンをクリックします。
    11. [確認] ボタンをクリックします。

    3. Target DBサーバ ACGの設定

    Target DBから Source DBにアクセスできるように、Target DBサーバに適用した ACGの Outboundルールを設定します。

    参考

    ここでは、アクセス設定に必要な内容のみ説明します。ACG設定に関する詳細は、Serverご利用ガイドの ACGをご参照ください。

    ACGルールを設定する方法は、次の通りです。

    1. Target DBの詳細情報で Target DBサーバに適用した ACG を確認します。
    2. ACG 項目の i-dms-windowをクリックし、ACG画面に移動します。
    3. Target DBに適用した ACGをクリックし、 [ACG設定] ボタンをクリックします。
    4. [Outbound] タブをクリックします。
    5. 以下のルールを入力し、 [追加] ボタンをクリックします。
      • プロトコル : TCPを選択
      • 目的地 : Source DBの Publicドメインの IPアドレスを入力(例) 101.101.220.90/32)
      • 許可ポート : Source DBのアクセスポートを入力
    6. [適用] ボタンをクリックします。

    2. Source DBアクセス設定

    Source DBのアクセス情報を設定します。Source DBに適用した ACGルールと ACLを設定します。

    Source DBサーバの ACG設定

    • Source DBサーバのファイアウォール(ACG)を設定して、Target DBからアクセスするように設定します。以下のトラフィックを許可するように、Source DBサーバに適用された ACGの Inboundルールを修正します。

      • プロトコル: TCP
      • アクセスソース: 1. NAT Gateway作成で作成した NAT Gatewayの IPアドレス
      • 許可ポート: Target DBのアクセスポート
    • 以下のような場合、Source DBに Outboundを設定します。

      • Source DBが ACGではなく NACLポリシーを使用する NAVERクラウドプラットフォームサーバ
      • NAVERクラウドプラットフォームサーバでない場合
    参考
    • ACGは statefulに従うため、outboundを別途設定しなくても可能です。
    • Network ACLは statelessに従うため、outboundを設定します。

    Source DBアカウント作成と ACL設定

    Source DBと Target DBを接続するには、以下のアカウントを作成して ACLに追加します。

    マイグレーションのために必要な最初権限項目

    • Source DBが GTIDモードの場合、以下のコマンドを実行します。

    [Target DBが8.0.32バージョン以下の場合]

    GRANT PROCESS, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '[ユーザー名]'@'[HOST IPアドレス]';
    GRANT SELECT ON mysql.* TO '[ユーザー名]'@'[HOST IPアドレス]';
    GRANT SELECT、SHOW VIEW、LOCK TABLES、TRIGGER ON [ユーザー DB]。*TO '[ユーザー名]'@'[HOST IPアドレス]';
    

    [Target DBが8.0.32バージョン以上の場合]

    GRANT {RELOAD|FLUSH_TABLES}, PROCESS, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '[ユーザー名]'@'[HOST IPアドレス]';
    GRANT SELECT ON mysql.* TO '[ユーザー名]'@'[HOST IPアドレス]';
    GRANT SELECT、SHOW VIEW、LOCK TABLES、TRIGGER ON [ユーザー DB]。*TO '[ユーザー名]'@'[HOST IPアドレス]';
    
    • Source DBが GTIDモードでない場合、以下のコマンドを実行します。
    GRANT RELOAD, PROCESS , SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '[ユーザー名]'@'[HOST IPアドレス]';
    GRANT SELECT ON mysql.* TO '[ユーザー名]'@'[HOST IPアドレス]';
    GRANT SELECT、SHOW VIEW、TRIGGER ON [ユーザー DB]。*TO '[ユーザー名]'@'[HOST IPアドレス]';
    
    注意
    • GTIDモードでない場合は、Source DBユーザーに[RELOAD]権限が必要であり、ポリシー上の理由によりこれらを付与されない時は、Source DBを GTIDモードに変更してからマイグレーションを行います。
    • AWS RDS環境でマイグレーションを行う場合は、権限ポリシー上の理由により GTIDモードに変更してからマイグレーションを行います。
    • MySQL 8.0.20バージョン以降に Routine Dumpのためには、[SHOW_ROUTINE]権限が必要です。
    • Target DBバージョン8.0.32以降からは Source DBが GTIDモードの場合でも、[RELOAD]または[FLUSH_TABLES]権限が追加として必要です。ポリシー上の理由でこれを付与されなかった場合は、Target DBバージョン8.0.32以下で行います。

    この記事は役に立ちましたか?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.