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

Prev Next

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のバイナリログ設定を確認します(マイグレーションのために必要な MySQL設定を参照)。
  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で mysqldump方式を利用する場合) sql_modeをチェックします。
    • MySQL 5.7バージョンと MariaDB 10.1.7以上バージョンで Default値でサポートする sql_mode='NO_AUTO_CREATE_USER'設定は MySQL 8.0バージョンからはサポートしません。
    • 以下の点検は mysqldump方式で実行する際に必要です。 mydumper方式でマイグレーションを実行する際、sql_modeは Target DBの設定に従うので別途の点検は必要ありません。
    • 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クラウドプラットフォームコンソールの VPC環境で、i_menu > 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をご参照ください。

注意
  • DMSはパブリック通信を使用するので、Target DBがある Subnetの Route Tableに NAT Gateway設定を追加してください。
  • NAT Gatewayがある Subnetと、Target DBがある Subnetの Route Tableを分けて設定する必要があります。
  • 1つの Route Tableで NAT Gatewayの設定と関連 Subnetの追加を一緒に行う場合、パスの競合が発生することがあります。

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

  1. NAVERクラウドプラットフォームコンソールの VPC環境で、i_menu > 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が Private Subnetである場合のマイグレーション

Source DBと Target DBが異なる VPCにあり、Source DBを Private Subnetに作成する場合にアクセス情報を設定する方法について説明します。

次の手順を順に行います。

1. VPC Peering作成

Source DBと Target DB間の TCP通信ができるように VPC Peeringを構成する方法について説明します。TCPは双方向通信ベースであるため、Source DBが属する VPC、Target DBが属する VPCそれぞれをリクエスト VPCとして1~2つの VPC Peeringサービスを作成する必要があります。

参考

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

VPC Peeringを構成する方法は次の通りです。

  1. NAVERクラウドプラットフォームコンソールの VPC環境で、i_menu > Services > Networking > VPCメニューを順にクリックします。
  2. VPC Peeringメニューをクリックします。
  3. [VPC Peering作成] ボタンをクリックします。
    • リクエスト VPC: Target DBが属する VPCを選択
    • 承諾 VPC: Source DBが属する VPCを選択
  4. [作成] ボタンをクリックします。

双方向通信のために、VPC Peeringの追加作成が必要です。

  1. NAVERクラウドプラットフォームコンソールの VPC環境で、i_menu > Services > Networking > VPCメニューを順にクリックします。
  2. VPC Peeringメニューをクリックします。
  3. [VPC Peering作成] ボタンをクリックします。
    • リクエスト VPC: Source DBが属する VPCを選択
    • 承諾 VPC: Target DBが属する VPCを選択
  4. [作成] ボタンをクリックします。

2. Target DBアクセス設定

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サーバのプライベート IPアドレスを入力(例) 10.1.2.16/32)
      • プライベート IPアドレスの確認方法: nslookup {Privateドメイン}
    • 許可ポート: Source DBのアクセスポートを入力
  6. [適用] ボタンをクリックします。

Route Table接続

Route Tableを作成し、ルーティングルールに VPC Peeringを追加します。

参考

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

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

  1. NAVERクラウドプラットフォームコンソールの VPC環境で、i_menu > Services > Networking > VPCメニューを順にクリックします。
  2. Route Tableメニューをクリックします。
  3. [Route Table作成] ボタンをクリックします。
  4. Route Table名を入力し、VPCSubnetサポートタイプを選択します。
    • VPC: Target DBが属する VPCを選択
    • Subnetサポートタイプ:
      • Target DBが Private Subnetに属している場合、プライベートを選択
      • Target DBが Public Subnetに属している場合、パブリックを選択
  5. [作成] ボタンをクリックします。
  6. 作成した Route Tableをクリックし、 [Routes設定] ボタンをクリックします。
  7. 次の情報を入力して [作成] ボタンをクリックします。
    • Destination: Source DBが属する Subnetの IPアドレスを入力(例) 10.1.2.0/24)
    • Target Type: VPCPEERINGを選択
    • Target Name: VPC Peering作成で作成した VPC Peeringサービスを選択
  8. [確認] ボタンをクリックします。
  9. Route Tableをクリックし、 [関連 Subnet設定] ボタンをクリックします。
  10. Subnet名で VPC Peeringが作成された Subnetを選択し、 [作成] ボタンをクリックします。
  11. [確認] ボタンをクリックします。

3. Source DBアクセス設定

Source DBサーバの ACG設定

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

  • プロトコル: TCP
  • 目的地: Target DBサーバのプライベート IPアドレスを入力(例) 10.2.0.7/32)
    • プライベート IPアドレスの確認方法: nslookup {Privateドメイン}
  • 許可ポート: Target DBのアクセスポートを入力

Route Table接続

Route Tableを作成し、ルーティングルールに VPC Peeringを追加します。

参考

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

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

  1. NAVERクラウドプラットフォームコンソールの VPC環境で、i_menu > Services > Networking > VPCメニューを順にクリックします。
  2. Route Tableメニューをクリックします。
  3. [Route Table作成] ボタンをクリックします。
  4. Route Table名を入力し、VPCSubnetサポートタイプを選択します。
    • VPC: Source DBが属する VPCを選択
    • Subnetサポートタイプ: Source DBが Private Subnetに属しているため、プライベートを選択
  5. [作成] ボタンをクリックします。
  6. 作成した Route Tableをクリックし、 [Routes設定] ボタンをクリックします。
  7. 次の情報を入力して [作成] ボタンをクリックします。
    • Destination: Target DBが属する Subnetの IPアドレスを入力(例) 10.2.0.0/24)
    • Target Type: VPCPEERINGを選択
    • Target Name: VPC Peering作成で作成した VPC Peeringサービスを選択
  8. [確認] ボタンをクリックします。
  9. Route Tableをクリックし、 [関連 Subnet設定] ボタンをクリックします。
  10. Subnet名で VPC Peeringが作成された Subnetを選択し、 [作成] ボタンをクリックします。
  11. [確認] ボタンをクリックします。

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

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

4. Endpoint設定

Migrationのための Source DB Endpointを設定する方法について説明します。

参考

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

  • Endpoint URL: Source DBの Private Domain
  • DB PORT: Source DBアクセスポート
  • DB User: Source DBアクセスアカウント
  • DB Password: Source DBアクセスパスワード

Proxy Serverを利用したマイグレーション

Source DBが Private Subnetにあり、Target DBが Public Subnetにある場合、Proxy Serverを構築してアクセス情報を設定する方法について説明します。Proxy Serverのパブリック IPアドレスのみで Target DBから Source DBにアクセスしたい場合に使用します。この場合、Source DBと Proxy Serverは同じ VPC内に位置している必要があります。

次の手順を順に行います。

1. Nginxを利用した Proxy Serverの構築

Target DBが Serverのパブリック IPアドレスのみで Source DBにアクセスするための Proxy Serverの構築方法について説明します。事前に Target DBがある Public Subnetに Serverサービスを作成した後、パブリック IPアドレスの発行が必要です。

参考

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

Proxy Serverを構成する方法は次の通りです。

  1. Serverにアクセスした後、Nginxをインストールします。

    wget https://nginx.org/download/nginx-1.24.0.tar.gz
    
  2. インストールしたファイルを解凍します。

     tar -zxvf nginx-1.24.0.tar.gz
    
  3. 解凍したディレクトリに入り、コンパイルします。

     ./configure --with-stream
     sudo make install
    
参考

通信設定には Streamモジュールが必須なので、--with-streamオプションと一緒にコンパイルしてインストールしてください。

  1. Nginxを実行するための nginx.serviceファイルを作成します。

    # vi /etc/systemd/system/nginx.service
    ---
    [Unit]
    Description=nginx
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/usr/local/nginx/sbin/nginx
    ExecReload=/usr/local/nginx/sbin/nginx -s reload
    ExecStop=/usr/local/nginx/sbin/nginx -s stop
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    
    
  2. Nginxサービスを登録します。

     systemctl daemon-reload # 登録
     systemctl enable --now nginx # サーバ再起動時に nginxも自動再起動
     systemctl status nginx # 実行ステータスを確認
    
参考

エラー発生時、journalctl -xe コマンドでエラーを確認できます。

注意

Nginxステータスの確認時、Couldn't stat /var/log/lastlog: No such file or directory エラーが表示された場合、当該ファイルを同じパスに作成してください。

 touch /var/log/lastlog
  1. nginx.confファイルを以下のように変更します。

    #user  nobody;
    worker_processes  1;
    
    error_log  logs/error.log;
    error_log  logs/error.log  notice;
    error_log  logs/error.log  info;
    
    pid        logs/nginx.pid;
    
    stream {
        upstream db_servers {
                server [Source DBプライベート IPアドレス]:[Source DB Port];
        }
        server {
                listen [Target DBと通信するポート] so_keepalive=on;
                proxy_pass db_servers;
                proxy_socket_keepalive on;
                proxy_connect_timeout 30s;
        }
    }
    
    events {
        worker_connections  1024;
    }
    
    
  2. Nginxを再実行します。

     systemctl restart nginx
    
参考

ここでは、Nginx-1.24.0という特定のバージョンのダウンロード方法を説明しましたが、あくまでも例であり、該当する環境に合わせて最新バージョンをダウンロードしてください。

2. Target DBアクセス設定

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を選択
  • 目的地: 作成した Serverのパブリック IPアドレスを入力(例) 223.101.151.223/32)
  • 許可ポート: Target DBと通信するポートを入力
  1. [適用] ボタンをクリックします。

3. Source DBアクセス設定

Proxy Serverと通信するための Source DBの ACGルール設定が必要です。通信を許可するように、Source DBサーバに適用された ACGの Inboundルールを設定します。

以下のルールを [Inbound] ルールに追加します。

  • プロトコル: TCP
  • 目的地: 作成した Serverに適用された ACG(例) mysql-vpc-default-acg)
  • 許可ポート: Source DBのアクセスポートを入力

4. Proxy Serverアクセス設定

Source DBと Target DBが Proxy Serverを介して通信できるように作成した Serverサービスの ACGルールを設定する必要があります。Serverに適用された ACGの Inboundルールと Outboundルールを変更します。

参考

この場合、ACG設定のために Public Subnetに作成した Target DBのパブリック IPアドレスが必要です。[Cloud DB for MySQL > DB Server > Target DB選択 > DB管理 > Public Domain管理] のプロセスを経て Target DBの Publicドメインを発行してください。

  • パブリック IPアドレスの確認方法
 nslookup {Target DB Public 도메인}
  1. 以下のルールを [Inbound] ルールに追加します。
  • プロトコル: TCP
  • 目的地: Target DBのパブリック IPアドレスを入力(例) 211.101.130.211/32)
  • 許可ポート: Target DBと通信するポートを入力
  1. 以下のルールを [Outbound] ルールに追加します。
  • プロトコル: TCP
  • 目的地: Source DBのプライベート IPアドレスを入力(例) 10.1.2.16/32)
  • 許可ポート: Source DBのアクセスポートを入力

5. Endpoint設定

Migrationのための Source DB Endpointを設定する方法について説明します。Proxyサーバで通信できるように構築したため、別途の Source DB URLがなくても Serverのパブリック IPアドレスで Endpointを設定できます。

参考

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

  • Endpoint URL: 作成した Serverのパブリック IPアドレスを入力
  • DB PORT: Source DBアクセスポート
  • DB User: Source DBアクセスアカウント
  • DB Password: Source DBアクセスパスワード

マイグレーションのために必要な MySQL設定

マイグレーションを実行するために、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
参考

Source DBが AWS Aurora / AWS RDSの場合、NCP Cloud DB for MySQLへのマイグレーションのために、以下のように log_bin、GTID設定の変更が必要です。

  • binlog_format = ROW
  • log_bin = ON
  • gtid_mode = ON
  • enforce_gtid_consistency = ON

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

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

バックアップ方式: mysqldumpを選択した場合

  • Target DBが8.0.32バージョン未満の場合
GRANT PROCESS, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT, SHOW_ROUTINE 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, SHOW_ROUTINE 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, SHOW_ROUTINE 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] の権限が追加で必要です。
  • システムテーブル権限 [Y] の設定が必要です。

バックアップ方式: mydumperを選択した場合

GRANT BACKUP_ADMIN, {RELOAD|FLUSH_TABLES}, PROCESS, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT, SHOW_ROUTINE ON *.*TO '[ユーザー名]'@'[HOST IP]';
GRANT SELECT ON mysql.*TO '[ユーザー名]'@'[HOST IP]';
GRANT SELECT ON sys.*TO '[ユーザー名]'@'[HOST IP]';
GRANT SELECT、SHOW VIEW、LOCK TABLES、TRIGGER ON [ユーザー DB].*TO '[ユーザー名]'@'[HOST IP]';
参考
  • mydumperを使用するには、Source DBユーザーアカウントに BACKUP_ADMIN, {RELOAD|FLUSH_TABLES} の権限が必要です。
    当該権限を確認した後、必要な場合はサポートまでにお問い合わせください。
  • システムテーブル権限 [Y] の設定が必要です。