SQL Server 2017 からデータを移行する場合は、SQL Server 2017 と Cloud SQL for SQL Server 間でのバックアップ ファイルを使用してデータを移行するをご覧ください。
このチュートリアルは、SQL Server 2008 から Cloud SQL for SQL Server 2017 へのデータ移行、または SQL Server 2008 から SQL Server 2017 へのアップグレードを希望するシステム管理者、デベロッパー、エンジニア、データベース管理者、または DevOps エンジニアの方に役立ちます。
このチュートリアルでは、SQL Server 2008 のライセンスを所有していて、次の知識があることを前提としています。
- Microsoft SQL Server 2008
- Microsoft SQL Server 2017
- Microsoft PowerShell
- Cloud Storage
- Cloud SQL
目標
- Cloud SQL for SQL Server インスタンスを作成します。
- Cloud Storage バケットを作成します。
- データベースをバックアップします。
- Cloud SQL for SQL Server にデータベースをインポートします。
- インポートされたデータを検証します。
費用
このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。
始める前に
Google Cloud コンソールの [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
Google Cloud プロジェクトで課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法。
Cloud Storage API と Cloud SQL API を有効にします。
SQL Server 2008 を実行しているサーバーに Google Cloud CLI をインストールして初期化します。
Google Cloud コンソールで、Cloud Shell に移動します。
Google Cloud コンソールの下部で Cloud Shell セッションが開き、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。
Cloud SQL インスタンスと Cloud Storage バケットの作成
Cloud Shell で、Cloud SQL for SQL Server 2017 Enterprise インスタンスを作成し、その後データベースをそこに移行します。
gcloud beta sql instances create target \ --database-version=SQLSERVER_2017_ENTERPRISE \ --cpu=2 \ --memory=5GB \ --root-password=sqlserver12@ \ --zone=us-central1-f
インスタンスの作成には数分かかることがあります。デフォルトの root ユーザー名は
sqlserver
で、デフォルトのパスワードはsqlserver12@
です。このチュートリアルでは、インスタンスをus-central1-f
ゾーンに作成します。ゾーンの詳細については、クラウドのロケーションをご覧ください。データを Cloud SQL にインポートする前に、バックアップ ファイルを格納する Cloud Storage バケットを作成します。
gcloud storage buckets create "gs://bucket-name" --location=US
bucket-name
を Cloud Storage バケットの一意の名前に置き換えます。
データベースをバックアップする
このセクションでは、SQL Server 2008 を実行している Windows サーバーに接続し、データベースのバックアップの作成と Cloud Storage へのバックアップ データベースのアップロードを行います。
RDP を使用して SQL Server 2008 を実行している Windows サーバーに接続します。これをプライマリ サーバーまたはレプリカ サーバーにすることができます。
PowerShell コマンドライン ツールを起動します。
gcloud CLI をインストールしたターミナルで、バックアップ フォルダを作成します。
mkdir c:\backup
バックアップ フォルダにデータベースのバックアップを作成します。
osql -E -Q "BACKUP DATABASE db-name TO DISK='c:\backup\db-name.bak'"
db-name
を Cloud SQL に移行するデータベースの名前に置き換えます。バックアップ ファイルを Cloud Storage バケットにコピーします。
$PROJECT_ID = (gcloud sql instances describe target --format='value(project)' ) gcloud storage cp c:\backup\db-name.bak gs://bucket-name --no-clobber
バックアップ ファイルを Cloud SQL にインポートする
Cloud Shell で、Cloud SQL インスタンスに関連付けられたサービス アカウントを取得し、変数に保存します。
SVC_EMAIL_ADDRESS=$(gcloud sql instances describe target \ --format='value(serviceAccountEmailAddress)') echo $SVC_EMAIL_ADDRESS
Google Cloud は、Cloud SQL インスタンスの作成時にサービス アカウントを作成します。サービス アカウントを使用して、Cloud SQL インスタンスに必要なリソースへのアクセス権を付与します。
Cloud Storage バケットへの書き込み権限をサービス アカウントに付与します。
gcloud storage buckets add-iam-policy-binding gs://bucket-name \ --member=serviceAccount:${SVC_EMAIL_ADDRESS} \ --role=roles/storage.legacyBucketWriter
Cloud Storage バケット内のファイルを読み取る権限をサービス アカウントに付与します。
gcloud storage buckets add-iam-policy-binding gs://bucket-name \ --member=serviceAccount:${SVC_EMAIL_ADDRESS} \ --role=roles/storage.legacyObjectReader
バックアップ ファイルを Cloud SQL データベースにインポートします。
gcloud beta sql import bak target \ gs://bucket-namedb-name.bak \ --database db-name
データのインポートを検証する
このセクションでは、データが正常にインポートされたことを確認します。
Cloud Shell で、以下のように SQL Server ツールキットをインストールします。
sudo apt-get install -y mssql-tools
ライセンス条項に同意する場合は、表示されたプロンプトで「
yes
」と入力します。Cloud SQL インスタンスに安全にアクセスするために、Cloud SQL Proxy をダウンロードします。
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
Cloud SQL Proxy を起動します。
CONNECTION_NAME=$(gcloud sql instances describe target --format='value(connectionName)') ./cloud_sql_proxy -instances=${CONNECTION_NAME}=tcp:1433 &
クエリを実行して、テーブルのデータを検証します。
/opt/mssql-tools/bin/sqlcmd -U sqlserver -S 127.0.0.1 -Q "query-string"
query-string
を実行する SQL クエリに置き換えます。プロンプトが表示されたら、
sqlserver12@
パスワードを入力します。
クリーンアップ
課金を停止する最も簡単な方法は、チュートリアル用に作成した Google Cloud プロジェクトを削除することです。プロジェクトを削除する
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
次のステップ
- Cloud SQL for SQL Server の顧客管理の暗号鍵(CMEK) について確認する。
- Cloud SQL for SQL Server のプライベート IP 接続を構成するについて確認する。
- Google Cloud に関するリファレンス アーキテクチャ、図、ベスト プラクティスを確認する。Cloud アーキテクチャ センターをご覧ください。