Cloud DB for MSSQL を開始する

Prev Next

VPC環境で利用できます。

Cloud DB for MSSQLを開始するでは、Cloud DB for MSSQL動作環境とサポート環境を確認して全体使用シナリオ用語を熟知した後、Cloud DB for MSSQLを正常に使用するためにユーザーがすべきことを説明します。Cloud DB for MSSQLを開始するで説明する内容は、次の通りです。

  • NAVERクラウドプラットフォームコンソールでアプリケーションサーバを作成する方法
  • アプリケーションサーバへのアクセステストを行う方法
  • NAVERクラウドプラットフォームコンソールでの MSSQL Serverの作成方法
  • MSSQL Serverへのアクセステスト方法

ここまで完了したら、Cloud DB for MSSQL使用のための基本過程を完了したことになります。今後さらに効率的なサーバ管理や運用を行うために、以下のようなタスクも行えます。

  • NAVERクラウドプラットフォームの Cloud Insightを活用したイベントと通知(アラーム)の設定
  • NAVERクラウドプラットフォームの Sub Accountを活用した運用権限管理

このタスクは Cloud DB for MSSQLではなく Cloud Insight、Sub Accountでご利用の申し込み後に行えます。本ガイドでは詳しく説明いたしません。詳細は、Cloud Insight ご利用ガイドSub Account ご利用ガイドをご参照ください。

アプリケーションサーバ作成

NAVERクラウドプラットフォームコンソールでアプリケーションサーバを作成する方法は、次の通りです。

参考

ここでは、アプリケーションサーバの作成方法を簡単に説明します。全体作成方法についての詳細は、Serverご利用ガイドをご参照ください。

  1. NAVERクラウドプラットフォームコンソールにアクセスします。
  2. コンソール画面右上のリージョン&プラットフォームをクリックします。
  3. 利用中のリージョンと VPCプラットフォームを選択し、 [適用] ボタンをクリックします。
  4. コンソール画面左上の Menuをクリックします。
  5. All Services > Compute > Serverメニューを順にクリックします。
  6. [サーバ作成] ボタンをクリックします。
  7. Windowsサーバイメージをクリックして選択し、[次へ] ボタンをクリックします。
  8. 必要な情報を入力し、 [次へ] ボタンをクリックします。
  9. 保有中の認証キーがない場合、新しい認証キーを作成して [次へ] ボタンをクリックします。
  10. 保有中の ACGがない場合、新規 ACGを作成します。
  11. 最終確認後、 [サーバ作成] ボタンをクリックします。
注意
  • リモートデスクトップ接続のために3.で Windowsタイプのサーバイメージを選択します。
  • アプリケーションサーバの ACG名は、今後 MSSQL Serverに ACGを追加する時に使用します。

アクセス環境設定

NAVERクラウドプラットフォームコンソールの VPC環境でサーバアクセス環境を設定するには、パブリック IPアドレスを設定します。

参考

ここでは、アクセス環境の設定方法を簡単に説明します。アクセス環境の設定方法に関する詳細は、以下のガイドをご参照ください。

パブリック IPアドレスの設定

パブリック IPアドレスを設定する方法は、次の通りです。

  1. NAVERクラウドプラットフォームコンソールの VPC環境で、Menu > All Services > Compute > Serverメニューを順にクリックします。
  2. Public IPメニューをクリックします。
  3. [パブリック IPアドレスの申し込み] ボタンをクリックします。
  4. 適用サーバを選択してメモを入力した後、 [次へ] ボタンをクリックします。
  5. [作成] ボタンをクリックします。

管理者パスワードの確認

パブリック IPアドレスの設定後にアプリケーションサーバへのアクセスに必要な管理者(root)パスワードを確認する方法は、次の通りです。

  1. NAVERクラウドプラットフォームコンソールの VPC環境で、Menu > All Services > Compute > Serverメニューを順にクリックします。
  2. [サーバ管理と設定変更] ボタンをクリックし、管理者パスワードの確認メニューをクリックします。
  3. サーバの作成時に作った認証キーを入力します。
  4. [パスワード確認] ボタンをクリックします。
  5. パスワードを確認します。

アプリケーションサーバアクセステスト

リモートデスクトップ接続を利用してアプリケーションサーバに正常にアクセスできるかテストする方法は、次の通りです。

  1. スタート > すべてのプログラム > アクセサリ > リモートデスクトップ接続メニューを順にクリックします。
  2. コンピュータにサーバアクセス用パブリック IPアドレスを入力します。
    clouddbformssql-start-appconnect_vpc_ko
  3. [接続] ボタンをクリックします。
  4. ユーザー認証情報入力のポップアップが表示されたら、管理者パスワードの確認で取得した IDとパスワードを入力します。
    clouddbformssql-start-appconnect2_vpc_ko
  5. [確認] ボタンをクリックします。
  6. リモートデスクトップ接続警告画面が表示されたら、[はい(Y)] ボタンをクリックします。
    clouddbformssql-start-appconnect3_vpc_ko
参考

Ctrl + Alt + End > パスワード変更を通じてパスワードを変更できます。

MSSQL Server作成

NAVERクラウドプラットフォームで提供するサービスの中から一部は、コンソールでご利用の申し込み手続を経た後、実際に使用することになります。しかし、Cloud DB for MSSQLの場合は別途ご利用の申し込みがなく、MSSQL Server作成と共に使用を開始します。NAVERクラウドプラットフォームコンソールで MSSQL Serverを作成する方法は、次の通りです。

参考
  • ここでは、DB Serverの作成方法を簡単に説明します。全体作成方法に関する詳細は、 MSSQL Server作成をご参照ください。
  • Cloud DB for MSSQLは別途のご利用の申し込みがないため、解約の手続も別途存在しません。Cloud DB for MSSQLの使用を停止して課金されないようにするには、作成して運用中であった MSSQL Serverを削除します。MSSQL Serverを削除する方法は、MSSQL Server削除をご参照ください。
  1. NAVERクラウドプラットフォームコンソールの VPC環境で、Menu > All Services > Database > Cloud DB for MSSQLメニューを順にクリックします。
  2. DB Serverメニューをクリックします。
  3. [DB Server作成] ボタンをクリックします。
  4. サービスの申し込み画面が表示されたら、必要な情報を入力した後に [次へ] ボタンをクリックします。
  5. [作成] ボタンをクリックします。

ACG設定

NAVERクラウドプラットフォームコンソールで MSSQL Serverの Access Control Group(ACG)を設定する方法は、次の通りです。

参考

ここでは、ACGの設定方法を簡単に説明します。ACGの設定方法に関する詳細は、ACG ご利用ガイドをご参照ください。

  1. NAVERクラウドプラットフォームコンソールの VPC環境で、Menu > All Services > Database > Cloud DB for MSSQLメニューを順にクリックします。
  2. ACGメニューをクリックします。
    clouddbformssql-start_acg_vpc_ko
  3. 設定する ACGをクリックして選択した後、 [ACG設定] ボタンをクリックします。
    • 自動で作成された MSSQLサーバの ACGを選択
  4. アクセスソースにアプリケーションサーバの ACG名を入力します。
  5. 許可ポートにポート番号を入力します。
  6. [追加] ボタンをクリックします。
  7. [適用] ボタンをクリックします。

MSSQL Serverアクセステスト

MSSQL Clientをインストールして作成した MSSQL Serverに正常にアクセスできるかテストする方法は、次の通りです。

  1. MSSQL Serverにアクセスするための DNS名、DBアクセスポート、アカウント IDとパスワード情報を確認します。
    • Menu > All Services > Database > Cloud DB for MSSQL > DB Serverメニューをクリックします。
    • アクセスする MSSQL Serverのサービス名をクリックした後、次を確認します。
      • DNS名: Privateドメインの確認
      • DBアクセスポート: DBアクセスポートの確認
    • [DB管理] > DB User管理でアカウント IDとパスワードを確認します。
  2. アプリケーションサーバにアクセスした後、SSMSダウンロードしてインストールします。
  3. SSMSにアクセスします。
  4. サーバ接続のポップアップに DBサーバ情報を入力します。
    database-9-1-501_ko
    • サーバタイプ: データベースエンジン
    • サーバ名: DNS名、DBアクセスポート(コンマで区分して入力)
      • DNS名: アクセスする MSSQL Serverの Privateドメイン
      • DBアクセスポート: アクセスする MSSQL Serverのアクセスポート
    • 認証: SQL Server認証
    • ログイン: アクセスする MSSQL Serverのユーザーアカウント名
    • パスワード: アクセスする MSSQL Serverのユーザーアカウントパスワード
  5. [接続] ボタンをクリックします。

データマイグレーション(バックアップ復旧)

オンプレミスで運用中であったデータベースを Cloud DB for MSSQL(CDB-MSSQL)にマイグレーションしたり、CDB-MSSQLからオンプレミスに移動するためにはWindowsアプリケーションサーバを作成します。データマイグレーションは SQL Serverのバックアップと復旧を利用して実行し、アプリケーションサーバにオンプレミスで運用中であったデータベースのバックアップをアップロードした後に行ったり、CDB-MSSQLのバックアップを当該アプリケーションサーバを対象に実行できます。

参考
  • アプリケーションサーバは CDB-MSSQLと同じ VPCネットワーク環境にします。
  • アプリケーションサーバを利用したバックアップ復旧のために、アプリケーションサーバのネットワークと共有センターで「パスワード保護共有オフ」を設定します。
  • アプリケーションサーバデータを保護するための適切な ACG設定が必要です(アプリケーションサーバ TCP 445 Portは必ずオープン)。
  1. アプリケーションサーバ作成
    • CDB-MSSQLの VPCと Subnetを確認
      clouddbformssql-start-vpc_backup

    • アプリケーションサーバの VPCと Subnetを確認
      clouddbformssql-start-vpc_appserver

    • 作成されたアプリケーションサーバで backupフォルダの作成後に共有設定(Everyone、 Read/Write)
      clouddbformssql-start-vpc_backup-everyone

    • パスワード保護共有オフ

      • Control Panel > Network and Internet > Network and Sharing Center > Advanced sharing settings
      • Password protected sharingオプション > Turn off password protected sharing選択 > 適用
        clouddbformssql-start-vpc_password-setting
  • アプリケーション Serverの ACG設定
    • アプリケーション Serverインバウンド445ポートが VPC帯域でオープンされている必要があります。
      clouddbformssql-start-vpc_appserver-agc-setting_1
  • MSSQL Serverの ACG設定
    • MSSQL Serverアウトバウンド445ポートが VPC帯域でオープンされている必要があります。
      clouddbformssql-start-vpc_appserver-agc-setting_2
  1. バックアップ(サンプル)

    backup database testdb to disk ='\\10.0.1.9\backup\testdb.bak'
    

    database-mssql-backup-sample_ko

  2. 復旧(サンプル)

    • データベースの復旧時に、必ず d:\dataフォルダに復旧します。その他のパスで復旧されたデータベースの安定性は保障しません。
    restore database testdb2 from disk ='\\10.0.1.9\backup\testdb.bak'
    with
      move 'testdb' to 'd:\data\testdb2.mdf',
      move 'testdb-log' to 'd:\data\testdb2_log.ldf'
    

    clouddbformssql-start-vpc_restore_ko

注意
  • 正常に使用するには、ON-PREMISE復旧対象データベースに CDB-MSSQL管理者アカウントがデータベースの所有者の状態でバックアップを行います。
  • ON-PREMISEと CDB-MSSQLユーザーアカウントが同じ場合でも、SIDが異なると復旧後にデータベースを使用できません。
  • 以下のスクリプトを参照し、SIDを同一に設定して ON-PREMISEでバックアップした後、CDB-MSSQLに復元します。

SID のトラブルシューティング

データマイグレーション(バックアップ復旧)で SIDが一致しないために発生した問題に対する解決ガイドです。

  1. ソースサーバで db_ownerを変更して復元する方法(ON-PREMISE → CDB-MSSQL)
タスクサーバ 実行スクリプトの説明と参照 T-SQL Queryの例
CDB-MSSQL
  • T-SQLコマンドで SIDを確認
    • SELECT SID FROM master.sys.sql_logins WHERE name='dbuserid'
      • dbuserid: 作成したデフォルト管理者のアカウント
  • SIDの確認結果
    • 0xDBB5F4FE1DBC594FBF806E807AFE72D6
ON-PREMISE
  • ユーザーがマイグレーション先のローカルサーバにコマンドでログインを作成(ソースサーバとパスワードが異なっていても問題なし)
    • CREATE LOGIN [dbuserid] WITH PASSWORD = 'P@ssw0rd', SID =0xDBB5F4FE1DBC594FBF806E807AFE72D6, DEFAULT_DATABASE=[master], CHECK_POLICY=OFF, CHECK_EXPIRATION=OFF
  • 既存のデータベース所有者に sysadmin権限を付与し、所有者変更によるエラーが発生しないように対処
  • マイグレーション対象データベース [userdatabase] でデータベース所有者を上記で作成したユーザーに変更
  • ローカル対象サーバで sa、または administratorアカウントでアクセスして以下のコマンドを実行
    • USE [userdatabase]
      GO
      EXEC sp_changedbowner 'dbuserid'
      GO
  • マイグレーション対象のデータベースをバックアップ
    • BACKUP DATABASE [userdatabase] TO disk = 'C:\temp\userdatabase.full'
  • バックアップしたデータベースのバックアップファイルを同じ VPC帯域に作成されたアプリケーションサーバに移動
CDB-MSSQL
  • RESTOREの実行前に、バックアップファイルの論理ファイルリストを確認
    • RESTORE FILELISTONLY FROM disk='\\10.0.0.7\backup\userdatabase.full'
      • 10.0.0.7: ユーザーが作成したアプリケーションサーバの VPC IPアドレス
  • 確認されたファイルリストに基づいて、d:\dataフォルダにデータベースを復元(同じ名前のファイルが既に存在する場合、エラーが発生することがある)
    • RESTORE DATABASE userdatabase FROM disk='\\\10.0.0.7\backup\userdatabase.full'
      with
      MOVE 'userdatabase' TO 'd:\data\userdatabase.mdf', MOVE 'userdatabase_log' TO 'd:\data\userdatabase.log.ldf'
      • 同じ名前のファイルが既に存在する場合、エラーが発生
  1. 復旧対象サーバに db_ownerを追加して使用する方法(CDB-MSSQL → CDB-MSSQL)
タスク内容、サーバ、ユーザー 実行スクリプトの説明と参照 T-SQL Queryの例
  • AServerAdmin SIDを確認
  • ソースサーバ(AServer)上で AServerAdminとして実行
  • ソースサーバ(AServer)上で AServerAdminとして実行し、SIDを確認
    • SELECT SID FROM master.sys.sql_logins WHERE name='AServerAdmin'
  • SIDの確認結果
    • 0xB1CFFCE0AEF0234FB49273E7DD713FFA
  • AServerDBを復旧(RESTORE)
  • 復旧対象(BServer)上で BServerAdminとして実行
  • AServerAdminの SIDと同じく BServerに AServerAdminを作成
  • 復旧対象(BServer)上で BServerAdminとして実行
  • AServerとパスワードが異なっていても問題なし
    • CREATE LOGIN [AServerAdmin] WITH PASSWORD='P@ssw0rd', SID=0xB1CFFCE0AEF0234FB49273E7DD713FFA, DEFAULT_DATABASE=[master], CHECK_POLICY=OFF, CHECK_EXPIRATION=OFF
      GO
  • BServerに復旧した AServerDBに対し、BServerAdminに db_owner権限を付与
  • 復旧対象(BServer)上で AServerAdminとして実行
  • AServerDBで BServerAdminユーザーを作成し、db_ownerロールを付与
    • USE AServerDB
      GO
      CREATE USER BServerAdmin FOR LOGIN BServerAdmin
      GO
      ALTER ROLE [db_owner] ADD MEMBER BServerAdmin
      GO
  • BServer上に一時的に作成した AServerAdminを削除
  • 復旧対象(BServer)上で BServerAdminとしてログイン後に実行
  • SELECT SPID FROM sysprocesses WHERE loginame = 'AServerAdmin' コマンドで照会されたすべての SPIDを KILLした後、AServerAdminを削除
    • DROP LOGIN [AServerAdmin]
      GO
参考

SIDが一致しないためにデータベースを使用できない場合は、コンソールでデータベースを削除できます。

Agent Jobの設定

高可用性サーバを選択して作成したサーバで、SQL Server Agent Jobは Principalデータベースサーバでのみ動作するように適切に構成する必要があります。そうでない場合、Mirrorサーバにレプリケーションされた Agent Jobがミラー中のデータベースを対象に動作してエラーを発生させます。
以下のスクリプトを参照して設定します。スクリプトは冗長化構成サーバでも動作し、冗長化構成で Stand-Aloneに変更しても正常に動作します。

  1. データベース作成および冗長化のためのオプション変更

    • データベースの復旧レベルが単純の場合、データベースの冗長化ができません。
    CREATE DATABASE DBTEST1
    GO
    ALTER DATABASE DBTEST1 SET RECOVERY FULL 
    GO
    
    USE DBTEST1 
    GO
    
    CREATE TABLE TBLX 
    (
    IDX INT IDENTITY(1,1)
    ,CDATETIME DATETIME
    ,CINT INT
    )
    GO
    
    CREATE OR ALTER PROC USP_A 
    AS 
    INSERT INTO TBLX (CDATETIME, CINT) VALUES (GETDATE(), 1)
    GO
    
  2. Agent Jobの Step設定

    • 対象データベースを指定して、exec ('databasename.schemaname.userproc')の形で実行します。
      clouddbformssql-start-vpc_agentjob_ko
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
    DECLARE @DB_NAME VARCHAR(1000) = 'DBTEST1'
    
    IF EXISTS (
        SELECT *
        FROM SYS.DATABASES A 
        WHERE HAS_DBACCESS(DB_NAME(A.[DATABASE_ID])) = 1 
             AND DB_NAME(A.DATABASE_ID) = @DB_NAME
    ) 
    BEGIN 
        EXEC ('DBTEST1.DBO.USP_A')
    END 
    ELSE 
    BEGIN 
        SELECT 'MIRROR SERVER JOB SKIPPED'
    END