51
オンプレの DBA が Azure のデータベースを使ってみた JAZUG 小澤 真之 @Masayuki_Ozawa

オンプレのDbaがazureのデータベースを使ってみた

Embed Size (px)

Citation preview

Page 1: オンプレのDbaがazureのデータベースを使ってみた

オンプレの DBA がAzure のデータベースを使ってみた

JAZUG 小澤 真之

@Masayuki_Ozawa

Page 2: オンプレのDbaがazureのデータベースを使ってみた

自己紹介

• 普段は試される大地の有名キャラである縄神様のイメージ戦略を主業務として邁進する傍らで SQL Server を中心とした案件に携わっています。– 企業内に設置するオンプレミス環境の SQL Server を使用した案件

に携わる機会が多いです。

• Azure のユーザーグループ JAZUG や SQL Server のユーザーグループ SQLTO に参加させていただいています。– CLR/H さんは 2 回目の参加となります。

• ブログ : SE の雑記 (http://engineermemo.wordpress.com)

• Twitter : @Masayuki_Ozawa• Facebook : masayuki.ozawa

2

Page 3: オンプレのDbaがazureのデータベースを使ってみた

もしこんな時が訪れたら…

3

縄神部長

うちの部内システムの SQL Server をAzure に移行できない??

クマー¥

DBA の縄神君

Page 4: オンプレのDbaがazureのデータベースを使ってみた

クラウドでデータベース??

• Azure のデータベースのサービスを使用すると、今まで企業内の DBA をしていたエンジニアの仕事はどうなる??

– 移行は簡単??

– メンテナンスフリー??

• Azure の Database は全力でぶん回すことにしか使ったことがなかったので、次のようなシナリオを考えてみました。

4

Page 5: オンプレのDbaがazureのデータベースを使ってみた

想定する環境

5

SQL Server2012 SP1 CU3

社内 Windows Azure

Azure の DB

InternetAzure ConnectVirtual Network

シナリオ : 利用者が限られたサイズが小~中程度のDB移行

Page 6: オンプレのDbaがazureのデータベースを使ってみた

本日のアジェンダ

ベース環境構築編

データベース移行編

環境メンテナンス編

6

Page 7: オンプレのDbaがazureのデータベースを使ってみた

縄神君、移行する環境を考える の巻- ベース環境構築編 -

7

Azure でデータベースを使うには??

Page 8: オンプレのDbaがazureのデータベースを使ってみた

Azure で SQL Server ??

8

•従来から提供されている Azure の RDBMS

•PaaS 型のサービスとして RDBMS を提供

•物理環境上にホストされている (DB は 3 重化されている)

•利用する SQL Server のバージョンは選べない (現在は SQL Server 2012 相当)

•SQL Server 2012 と比較して多少制限はある (例) T-SQL がフルセットではなくサブセット)

SQL Database (旧 SQL Azure)

•新しく提供される (現在プレビュー) IaaS 型のサービスを利用

•自分で OS / ミドルウェア (今回は SQL Server) を導入

•Hyper-V のゲスト OS として導入する

•SQL Server 2012 / 2008 R2

SQL Server on Windows Azure Virtual Machine

Page 9: オンプレのDbaがazureのデータベースを使ってみた

提供範囲の違い (ざっくり)

9

SQL Database Virtual Machine

H/W リソースの割り当て

OS

SQL Server

Database

H/W リソースの割り当て

OS

SQL Server

Database

利用者が操作できる 利用者が操作できない

ホスト OS ホスト OS

Page 10: オンプレのDbaがazureのデータベースを使ってみた

SQL Database の利用料

10

• Web Edition– 最大 5 GB

• Business Edition– 最大 150 GB

データベース サイズ データベースの月額料金 ご利用明細に記載されるデータベース単位 (DU)

0 ~ 100 MB 定額 ¥414.79 0.5 DU

100 MB 超~ 1 GB 定額 ¥829.57 1 DU

1 GB 超~ 10 GB¥829.57 (最初の 1 GB) + 1 GB 増えるごとに ¥331.83

1 DU (最初の 1 GB)0.4 DU (1 GB 増えるごとに)

10 GB 超~ 50 GB¥3,816 (最初の 10 GB) + 1 GB 増えるごとに ¥165.75

4.6 DU (最初の 10 GB)0.2 DU (1 GB 増えるごとに)

50 GB 超~ 150 GB¥10,452.52 (最初の 50 GB) + 1 GB 増えるごとに ¥82.96

12.6 DU (最初の 50 GB)0.1 DU (1 GB 増えるごとに)

http://www.windowsazure.com/ja-jp/pricing/details/ より抜粋

Page 11: オンプレのDbaがazureのデータベースを使ってみた

SQL Server on Azure VM の利用料

• VM の利用料

11

サイズ CPU コア メモリ接続可能ディスク数

Windows 料金/時間 非 Windows 料金/時間

プレビュー GA プレビュー GA

XS 共有 768 MB 1 ¥1.08 ¥1.67 ¥1.08 ¥1.67

S 1 1.75 GB 2 ¥6.65 ¥9.55 ¥6.65 ¥7.06

M 2 3.5 GB 4 ¥13.29 ¥19.10 ¥13.29 ¥14.12

L 4 7 GB 8 ¥26.58 ¥38.20 ¥26.58 ¥28.24

XL 8 14 GB 16 ¥53.15 ¥76.40 ¥53.15 ¥56.47

サイズ CPU コア

Web Standard Enterprise

2008 R2 と 2012 2008 R2 と 2012

GA GA

XS 共有 該当なし 該当なし 該当なし

S 1 ¥3.74 ¥45.68 該当なし

M 2 ¥3.74 ¥45.68 該当なし

L 4 ¥3.74 ¥45.68 ○

XL 8 ¥7.48 ¥91.35 ○

• SQL Server の利用料– 1) leverage the license mobility benefits under Software Assurance– 2) pay per hour rate of SQL Server on a Windows Azure Virtual Machine.

ストレージ容量 地理冗長 ローカル冗長

最初の 1 TB/月 ¥7.89 (GB あたり) ¥5.82 (GB あたり)

次の 49 TB/月 ¥6.65 (GB あたり) ¥5.40 (GB あたり)

次の 450 TB/月 ¥5.82 (GB あたり) ¥4.99 (GB あたり)

次の 500 TB/月 ¥5.40 (GB あたり) ¥4.57 (GB あたり)

次の 4,000 TB/月 ¥4.99 (GB あたり) ¥3.74 (GB あたり)

次の 4,000 TB/月 ¥4.57 (GB あたり) ¥3.08 (GB あたり)

9,000 TB 超/月 お問い合わせ お問い合わせ

• ストレージの利用料

ストレージ トランザクション 料金

100,000 トランザクション¥0.84 (100,000 トランザクションあたり)

Page 12: オンプレのDbaがazureのデータベースを使ってみた

参考)以前調べた SQL Database の構成

• 自分で調べたものなので公式情報ではありません。

12

CPU コア数 7 ~ 8

物理ソケット数 2

データファイル数 10

tempdb ファイル数 10

Page 13: オンプレのDbaがazureのデータベースを使ってみた

縄神君、DBの持って行き方を考える の巻- データベース移行編 -

13

データベースはいちから作り直し??

Page 14: オンプレのDbaがazureのデータベースを使ってみた

SQL Server to SQL Database

•SQL データベースのデータ同期機能 (現在 プレビュー) を使用して、テーブルのスキーマとデータを移行

•データ同期は手動、特定間隔 (5 分~1か月) を設定可能

Data Sync

•データ層アプリケーションの DAC パッケージ (.bacpac) を使用しテーブル等のスキーマとデータを移行

BacPak

•データベースの移行 / 移行に伴う分析をすることができるツール

SQL Database Migration Wizard

•データのテキストファイルを BCP コマンドまたは SSIS パッケージで SQL Azure にインポート

BCP / SSIS

14

Page 15: オンプレのDbaがazureのデータベースを使ってみた

Windows Azure

SQL Database

DataSync (プレビュー)

15

• SQL Database をハブとして SQL Server / SQL Database 間のデータ同期を行うサービス(ハブの SQL Database データ同期対象として使用することも可能)– ストアドプロシージャ等移行されないオブジェクトもあるので移行対象は注意– Azure 上の既存データベースへの同期

• SQL Database 間 (Azure to Azure) のデータ同期も可能

SQL Database(ハブ)

SQL Server(Data Sync

エージェント)

社内

TCP:443*.sync.azure.com

Page 16: オンプレのDbaがazureのデータベースを使ってみた

DataSync の管理画面

16

旧ポータル

現行ポータル

Page 17: オンプレのDbaがazureのデータベースを使ってみた

BacPac

• データベーススキーマ + データ (2012 SP1 以降は Native BCP / それ以前は JSON) をZIP 圧縮したファイル– テーブルの他にストアドプロシージャ等も移行される。

• sqlvariant 型や暗号化されたオブジェクトは移行できないという制限はある

• オンプレミスでエクスポート → SQL Database にインポートが可能– 新しいデータベースとしてインポート (配置)

17

SQL Server

社内

Azure Storage

Windows Azure

SQL Database

Page 18: オンプレのDbaがazureのデータベースを使ってみた

BacPac を使用した移行 (1/2)

18

Page 19: オンプレのDbaがazureのデータベースを使ってみた

BacPac を使用した移行 (2/2)

19

Page 20: オンプレのDbaがazureのデータベースを使ってみた

SQL Database Migration Wizard

20

• データベースのスクリプト生成 + BCP によるデータインポート

– codeplex で提供されているツールのためサポートはない

Windows Azure

SQL DatabaseSQL Server

社内

SQLDatabaseMW

Page 21: オンプレのDbaがazureのデータベースを使ってみた

MW を使用した移行 (1/4)

21

Page 22: オンプレのDbaがazureのデータベースを使ってみた

MW を使用した移行 (2/4)

22

Page 23: オンプレのDbaがazureのデータベースを使ってみた

MW を使用した移行 (3/4)

23

Page 24: オンプレのDbaがazureのデータベースを使ってみた

MW を使用した移行 (4/4)

24

Page 25: オンプレのDbaがazureのデータベースを使ってみた

BCP / SSIS

25

• スキーマ定義等は手動でスクリプトを作成– SSMS では SQL Database 向けのスクリプトを作成可能

• データは BCP or SSIS を使用してインポート– 並列インポートで高速ロード

– インポート対象のデータを Azure ストレージに配置等の考慮点あり

SQL Server

社内 Windows Azure

SQL DatabaseAzure Storage Azure Instance

Page 26: オンプレのDbaがazureのデータベースを使ってみた

SSIS を使用した並列ロード

26

Page 27: オンプレのDbaがazureのデータベースを使ってみた

BCP コマンドの例

• エクスポート

– bcp.exe “<データベース名>.<所有者名>.<テーブル名>” out “<ファイル名> -E -n -F <開始行> -L <終了行> -a 16384 -q -S <サーバー名> -T

• インポート

– bcp.exe “<データベース名>.<所有者名>.<テーブル名>” in “<ファイル名> -E -n -b 10000 -a 16384 -q -S <サーバー名(FQDN)> -U “<ユーザー名>@<サーバー名>” -P “<パスワード>"

27

Page 28: オンプレのDbaがazureのデータベースを使ってみた

スクリプトの作成

28

Page 29: オンプレのDbaがazureのデータベースを使ってみた

SQL Server to SQL Server On VM

• BacPac

• BCP / SSIS

SQL Server to SQL Database の移行方法

• SQL Server 2012 SP1 CU2 以降の新機能

• Azure ストレージに直接バックアップを取得可能

データベースバックアップを復元

• オンプレミスのデータベースをデタッチしてファイルを VM にコピーしてアタッチ

データベースのデタッチ / アタッチ

29

Page 30: オンプレのDbaがazureのデータベースを使ってみた

データベースバックアップを復元

30

• SQL Server 2012 SP1 CU2 からの機能

• Azure ストレージに SQL Server のバックアップを直接取得、リストア可能

SQL Server

社内 Windows Azure

SQL DatabaseAzure Storage

Page 31: オンプレのDbaがazureのデータベースを使ってみた

Azure ストレージにバックアップ

• バックアップ

BACKUP DATABASE [tpcc]

TO URL = 'http://clr81demo.blob.core.windows.net/sqldatabase/tpcc.bak'

WITH STATS=10, CREDENTIAL = 'AzureStorage', COMPRESSION

• リストア

RESTORE DATABASE tpcc

FROM URL = 'http://clr81demo.blob.core.windows.net/sqldatabase/tpcc.bak'

WITH CREDENTIAL = 'AzureStorage', STATS = 5,

MOVE N'tpcc' TO N'F:¥Database¥tpcc.mdf',

MOVE N'tpcc_log' TO N'F:¥Database¥tpcc_log.ldf'

GO

31

Page 32: オンプレのDbaがazureのデータベースを使ってみた

DEMOAzure Storage に SQL Server のバックアップを取得

32

Page 33: オンプレのDbaがazureのデータベースを使ってみた

移行方法概要

方法 対象 既存 DB への移行 テーブルスキーマ データ ストアドプロシージャ

DataSync SQL Database 差分更新化 ○ ○ -

BacPacSQL DatabaseSQL Server

- ○ ○ ○

SQL Database MWSQL Database

オブジェクト単位で洗い替え

○ ○ ○

BCP / SSISSQL DatabaseSQL Server

テキストの内容に依存

△ ○ -

Database Backupデタッチ / アタッチ

SQL Server DB 洗い替え ○ ○ ○

33

Page 34: オンプレのDbaがazureのデータベースを使ってみた

縄神君、日々の作業を考える の巻- 環境メンテナンス編 -

34

クラウドを使うとメンテナンスは不要??

Page 35: オンプレのDbaがazureのデータベースを使ってみた

運用

• SQL Database は自動適用

• SQL Server on Azure VM は利用者が OS / SQL Server に手動適用

パッチ適用 (バージョンアップ)

• どちらの利用形態でもインデックスは断片化するので解消が必要

• 稼働状態の確認

メンテナンス

• BacPac を使用したデータのバックアップ

• DATABASE COPY を使用したバックアップ

バックアップ

35

Page 36: オンプレのDbaがazureのデータベースを使ってみた

パッチ適用

36

SQL Database Virtual Machine

H/W リソースの割り当て

OS

SQL Server

Database

H/W リソースの割り当て

OS

SQL Server

Database

ホスト OS ホスト OS

パッチ適用は利用者!

利用者が操作できる 利用者が操作できない

Page 37: オンプレのDbaがazureのデータベースを使ってみた

SQL Server on Azure VM のパッチ適用

• インスタンスを利用者が手動でメンテナンスする必要がありデータベースの停止を最小限に抑えた更新が難しい

– Azure VM で負荷分散エンドポイントを使用したデータベースの環境構築 (すべてのインスタンスが更新可能なスケールアウト構成の DB) は難しい。

– AlwaysOn 可用性グループ を使うことで、ダウンタイムを抑えてパッチ適用をすることが可能となる。

• オンプレミスの高可用性環境のスキルを活かせる

37

Page 38: オンプレのDbaがazureのデータベースを使ってみた

負荷分散エンドポイント

38

アプリケーション

インスタンス 1

インスタンス 2

インスタンス 3

負荷分散エンドポイント

Page 39: オンプレのDbaがazureのデータベースを使ってみた

AlwaysOn Availability Group on Azure VM

39

• オンプレミスの AlwaysOn Availability Group

• AlwaysOn Availability Group on Azure VM (現状)

– リスナーを Azure のエンドポイント経由で公開することが現状はできない

更新可能(1 台のみ)

読み取り専用(最大 4 台)

リスナー(代表 IP)

アプリケーション

更新可能(1 台のみ)

読み取り専用(最大 4 台)

アプリケーション

Page 40: オンプレのDbaがazureのデータベースを使ってみた

メンテナンス

• クラウドのデータベースはメンテナンス不要??

• SQL Database / SQL Server 共にテーブルの断片化が発生するのでインデックスの再構築が必要

– SQL Database ではインデックスのオンライン再構築が可能

• ALTER INDEX [ORDER_LINE_I1] ON [dbo].[ORDER_LINE] REBUILD WITH (ONLINE=ON)

• SQL Database では、再構築 (REBUILD) はできるが再構成(REORGANIZE) はできない

– SQL Server では Enterprise Edition の機能

40

Page 41: オンプレのDbaがazureのデータベースを使ってみた

バックアップ

• SQL Server on Azure VM は通常の SQL Server のバックアップ方法と同じ

• SQL Database のバックアップ方法は以下の方法等で取得可能

– DATABASE COPY

– BACPAC をエクスポート

41

Page 42: オンプレのDbaがazureのデータベースを使ってみた

DATABASE COPY

• SQL Database のデータベースのコピーを同一サーバーや別のサーバーに取得するための機能– CREATE DATABASE <コピー先データベース名> AS COPY OF [<コピー元

サーバー名>.] <コピー元データベース名>• master データベースに接続して実行する必要がある

– コピーは非同期で行われるため [sys.dm_database_copies] [sys.databases] でコピー状況を確認

42

SQL Database

Windows Azure

SQL Database

Page 43: オンプレのDbaがazureのデータベースを使ってみた

コマンドで BacPac を取得

• SQLPackage.exe を使用して BacPac をコマンドで取得することが可能– cd C:¥Program Files (x86)¥Microsoft SQL Server¥110¥DAC¥bin

– sqlpackage.exe /a:Export /ssn:"<サーバー名>.database.windows.net" /sdn:"<データベース名>" /su:"<ログイン名>" /sp:"<パスワード>" /tf:"C:¥temp¥tpcc.bacpac"

– Azure ストレージに直接取得することはできないのでローカルに保存してからアップロード

• AZCopy を使用するとコマンドで Azure ストレージを操作可能

43

Page 44: オンプレのDbaがazureのデータベースを使ってみた

BACPAC はポータルからも取得可能

44

Page 45: オンプレのDbaがazureのデータベースを使ってみた

縄神君、ここまでの内容を振り返る の巻

45

ナワー¥

Page 46: オンプレのDbaがazureのデータベースを使ってみた

最後に

• Azure のデータベースを使う場合でも DBA の活躍する場所はあります。– オンプレミスの SQL Server の利用経験を活かし Azure のデータ

ベースを有効に活用

– 今回は時間の関係でお話しできませんでしたが管理ツールも SSMS / SSDT / ブラウザベースといろいろあり、取得できる管理用の情報もいろいろとあります。

• 設置する場所を選ばない、ハイブリッドな環境を触れるDBA を目指していくとよいかもしれないです。– 私はオンプレミスの SQL Server 特化なので、大きなことは言えま

せんが…。

46

Page 47: オンプレのDbaがazureのデータベースを使ってみた

Appendix

47

Page 48: オンプレのDbaがazureのデータベースを使ってみた

参考情報 (1/4)

• ライセンス– 料金の詳細

• http://www.windowsazure.com/ja-jp/pricing/details/

– Licensing FAQ• http://www.windowsazure.com/en-us/pricing/licensing-faq/?fb=ja-jp

– ライセンス早わかりガイド サービス プロバイダー向けライセンス• http://www.microsoft.com/ja-jp/server-cloud/windows-server/licenseguide/spla-01.aspx

– Windows Azure でのソフトウェア アシュアランスによるライセンス モビリティ• http://www.windowsazure.com/ja-jp/pricing/license-mobility/

• 構築– Provisioning a SQL Server Virtual Machine on Windows Azure

• http://www.windowsazure.com/en-us/manage/windows/common-tasks/install-sql-server/

– Windows Azure 仮想マシンの正式リリースまだか!!SQL Server 編• http://blogs.msdn.com/b/daisukei/archive/2013/03/21/windows-azure-sql-server.aspx

48

Page 49: オンプレのDbaがazureのデータベースを使ってみた

参考情報 (2/4)

• 移行– Windows Azure SQL データベース (以前の SQL Azure) へのデータベース移行

• http://msdn.microsoft.com/ja-jp/library/windowsazure/ee730904.aspx

– サポートされている Transact-SQL ステートメント (Windows Azure SQL データベース)• http://msdn.microsoft.com/ja-jp/library/ee336270.aspx

– SQL Database Migration Wizard• http://sqlazuremw.codeplex.com/

– データベースをインポート/エクスポートする方法 (Windows Azure SQL Database)• http://msdn.microsoft.com/ja-jp/library/windowsazure/hh335292.aspx

– SQL Server データベースを SQL Azure へ移行する (DAC インポート/エクスポート サービスの使用)• http://code.msdn.microsoft.com/windowsazure/SQLAzure-howto-80cbce75

– Loading data to SQL Azure the fast way• http://blogs.msdn.com/b/sqlcat/archive/2010/07/30/loading-data-to-sql-azure-the-fast-way.aspx

– Announcing Updates to Windows Azure SQL Database • http://blogs.msdn.com/b/windowsazure/archive/2012/09/19/announcing-updates-to-windows-azure-sql-database.aspx

– SQL Server オブジェクトとバージョンの DAC サポート• http://msdn.microsoft.com/ja-jp/library/ee210549.aspx

• 移行 (その他の RDBMS)– Microsoft SQL Server Migration Assistant for MySQL v5.2

• http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=28764

– Microsoft SQL Server Migration Assistant for Access v5.2• http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=28763

– Microsoft SQL Server Migration Assistant for Oracle v5.2• http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=28766

– Microsoft SQL Server Migration Assistant for Sybase v5.2• http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=28765

49

Page 50: オンプレのDbaがazureのデータベースを使ってみた

参考情報 (3/4)

• Data Sync– SQL データ同期プレビュー

• http://msdn.microsoft.com/ja-jp/library/hh456371.aspx

– SQL Azure Data Sync Agent Preview• http://go.microsoft.com/fwlink/?LinkID=223590

– Microsoft® SQL Server® 2012 SP1 Feature Pack• http://www.microsoft.com/en-us/download/details.aspx?id=35580

– Windows Azure Datacenter IP Ranges• http://www.microsoft.com/en-us/download/details.aspx?id=29840

• バックアップ– Windows Azure SQL データベースでのデータベースのコピー

• http://msdn.microsoft.com/ja-jp/library/windowsazure/ff951624.aspx

– Windows Azure SQL データベースのバックアップと復元• http://msdn.microsoft.com/ja-jp/library/windowsazure/jj650016.aspx

– SQL Server 2012 SP1 用の累積的な更新プログラム 2 での新機能の説明• http://support.microsoft.com/kb/2792921/ja

– チュートリアル: Windows Azure BLOB ストレージ サービスへの SQL Server のバックアップと復元の概要• http://msdn.microsoft.com/ja-jp/library/jj720558.aspx

– Windows Azure SQL データベースのバックアップの自動化• http://msdn.microsoft.com/ja-jp/library/windowsazure/jj900675.aspx

– SqlPackage.exe• http://msdn.microsoft.com/ja-jp/library/hh550080(v=vs.103).aspx

– AZCopy• http://go.microsoft.com/fwlink/?LinkId=287086• http://blogs.msdn.com/b/windowsazurestorage/archive/2013/04/01/azcopy-using-cross-account-copy-blob.aspx

50

Page 51: オンプレのDbaがazureのデータベースを使ってみた

参考情報 (4/4)

• メンテナンス– [Windows Azure] 更新ドメインと障害ドメインについて

• http://blogs.msdn.com/b/dsazurejp/archive/2011/06/29/windows-azure-fault-domain-upgrade-domain.aspx

– インプレース アップグレードの実行• http://technet.microsoft.com/ja-jp/library/gg457922.aspx

– ALTER INDEX (Windows Azure SQL データベース)• http://msdn.microsoft.com/ja-jp/library/windowsazure/ee336278.aspx

– Test Lab: Create an AlwaysOn Availability Group in Windows Azure End-to-End• http://blogs.msdn.com/b/sqlalwayson/archive/2013/01/23/test-lab-create-

an-alwayson-availability-group-in-windows-azure-end-to-end.aspx

– Tutorial: AlwaysOn Availability Groups in Windows Azure• http://msdn.microsoft.com/en-us/library/windowsazure/jj870963.aspx

51