Upload
masayuki-ozawa
View
1.037
Download
0
Embed Size (px)
Citation preview
オンプレの DBA がAzure のデータベースを使ってみた
JAZUG 小澤 真之
@Masayuki_Ozawa
自己紹介
• 普段は試される大地の有名キャラである縄神様のイメージ戦略を主業務として邁進する傍らで SQL Server を中心とした案件に携わっています。– 企業内に設置するオンプレミス環境の SQL Server を使用した案件
に携わる機会が多いです。
• Azure のユーザーグループ JAZUG や SQL Server のユーザーグループ SQLTO に参加させていただいています。– CLR/H さんは 2 回目の参加となります。
• ブログ : SE の雑記 (http://engineermemo.wordpress.com)
• Twitter : @Masayuki_Ozawa• Facebook : masayuki.ozawa
2
もしこんな時が訪れたら…
3
¥
縄神部長
うちの部内システムの SQL Server をAzure に移行できない??
クマー¥
DBA の縄神君
クラウドでデータベース??
• Azure のデータベースのサービスを使用すると、今まで企業内の DBA をしていたエンジニアの仕事はどうなる??
– 移行は簡単??
– メンテナンスフリー??
• Azure の Database は全力でぶん回すことにしか使ったことがなかったので、次のようなシナリオを考えてみました。
4
想定する環境
5
SQL Server2012 SP1 CU3
社内 Windows Azure
Azure の DB
InternetAzure ConnectVirtual Network
シナリオ : 利用者が限られたサイズが小~中程度のDB移行
本日のアジェンダ
ベース環境構築編
データベース移行編
環境メンテナンス編
6
縄神君、移行する環境を考える の巻- ベース環境構築編 -
7
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
提供範囲の違い (ざっくり)
9
SQL Database Virtual Machine
H/W リソースの割り当て
OS
SQL Server
Database
H/W リソースの割り当て
OS
SQL Server
Database
利用者が操作できる 利用者が操作できない
ホスト OS ホスト OS
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/ より抜粋
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 トランザクションあたり)
参考)以前調べた SQL Database の構成
• 自分で調べたものなので公式情報ではありません。
12
CPU コア数 7 ~ 8
物理ソケット数 2
データファイル数 10
tempdb ファイル数 10
縄神君、DBの持って行き方を考える の巻- データベース移行編 -
13
データベースはいちから作り直し??
¥
SQL Server to SQL Database
•SQL データベースのデータ同期機能 (現在 プレビュー) を使用して、テーブルのスキーマとデータを移行
•データ同期は手動、特定間隔 (5 分~1か月) を設定可能
Data Sync
•データ層アプリケーションの DAC パッケージ (.bacpac) を使用しテーブル等のスキーマとデータを移行
BacPak
•データベースの移行 / 移行に伴う分析をすることができるツール
SQL Database Migration Wizard
•データのテキストファイルを BCP コマンドまたは SSIS パッケージで SQL Azure にインポート
BCP / SSIS
14
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
DataSync の管理画面
16
旧ポータル
現行ポータル
BacPac
• データベーススキーマ + データ (2012 SP1 以降は Native BCP / それ以前は JSON) をZIP 圧縮したファイル– テーブルの他にストアドプロシージャ等も移行される。
• sqlvariant 型や暗号化されたオブジェクトは移行できないという制限はある
• オンプレミスでエクスポート → SQL Database にインポートが可能– 新しいデータベースとしてインポート (配置)
17
SQL Server
社内
Azure Storage
Windows Azure
SQL Database
BacPac を使用した移行 (1/2)
18
BacPac を使用した移行 (2/2)
19
SQL Database Migration Wizard
20
• データベースのスクリプト生成 + BCP によるデータインポート
– codeplex で提供されているツールのためサポートはない
Windows Azure
SQL DatabaseSQL Server
社内
SQLDatabaseMW
MW を使用した移行 (1/4)
21
MW を使用した移行 (2/4)
22
MW を使用した移行 (3/4)
23
MW を使用した移行 (4/4)
24
BCP / SSIS
25
• スキーマ定義等は手動でスクリプトを作成– SSMS では SQL Database 向けのスクリプトを作成可能
• データは BCP or SSIS を使用してインポート– 並列インポートで高速ロード
– インポート対象のデータを Azure ストレージに配置等の考慮点あり
SQL Server
社内 Windows Azure
SQL DatabaseAzure Storage Azure Instance
SSIS を使用した並列ロード
26
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
スクリプトの作成
28
SQL Server to SQL Server On VM
• BacPac
• BCP / SSIS
SQL Server to SQL Database の移行方法
• SQL Server 2012 SP1 CU2 以降の新機能
• Azure ストレージに直接バックアップを取得可能
データベースバックアップを復元
• オンプレミスのデータベースをデタッチしてファイルを VM にコピーしてアタッチ
データベースのデタッチ / アタッチ
29
データベースバックアップを復元
30
• SQL Server 2012 SP1 CU2 からの機能
• Azure ストレージに SQL Server のバックアップを直接取得、リストア可能
SQL Server
社内 Windows Azure
SQL DatabaseAzure Storage
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
DEMOAzure Storage に SQL Server のバックアップを取得
32
移行方法概要
方法 対象 既存 DB への移行 テーブルスキーマ データ ストアドプロシージャ
DataSync SQL Database 差分更新化 ○ ○ -
BacPacSQL DatabaseSQL Server
- ○ ○ ○
SQL Database MWSQL Database
オブジェクト単位で洗い替え
○ ○ ○
BCP / SSISSQL DatabaseSQL Server
テキストの内容に依存
△ ○ -
Database Backupデタッチ / アタッチ
SQL Server DB 洗い替え ○ ○ ○
33
縄神君、日々の作業を考える の巻- 環境メンテナンス編 -
34
クラウドを使うとメンテナンスは不要??
¥
運用
• SQL Database は自動適用
• SQL Server on Azure VM は利用者が OS / SQL Server に手動適用
パッチ適用 (バージョンアップ)
• どちらの利用形態でもインデックスは断片化するので解消が必要
• 稼働状態の確認
メンテナンス
• BacPac を使用したデータのバックアップ
• DATABASE COPY を使用したバックアップ
バックアップ
35
パッチ適用
36
SQL Database Virtual Machine
H/W リソースの割り当て
OS
SQL Server
Database
H/W リソースの割り当て
OS
SQL Server
Database
ホスト OS ホスト OS
パッチ適用は利用者!
利用者が操作できる 利用者が操作できない
SQL Server on Azure VM のパッチ適用
• インスタンスを利用者が手動でメンテナンスする必要がありデータベースの停止を最小限に抑えた更新が難しい
– Azure VM で負荷分散エンドポイントを使用したデータベースの環境構築 (すべてのインスタンスが更新可能なスケールアウト構成の DB) は難しい。
– AlwaysOn 可用性グループ を使うことで、ダウンタイムを抑えてパッチ適用をすることが可能となる。
• オンプレミスの高可用性環境のスキルを活かせる
37
負荷分散エンドポイント
38
アプリケーション
インスタンス 1
インスタンス 2
インスタンス 3
負荷分散エンドポイント
AlwaysOn Availability Group on Azure VM
39
• オンプレミスの AlwaysOn Availability Group
• AlwaysOn Availability Group on Azure VM (現状)
– リスナーを Azure のエンドポイント経由で公開することが現状はできない
更新可能(1 台のみ)
読み取り専用(最大 4 台)
リスナー(代表 IP)
アプリケーション
更新可能(1 台のみ)
読み取り専用(最大 4 台)
アプリケーション
メンテナンス
• クラウドのデータベースはメンテナンス不要??
• 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
バックアップ
• SQL Server on Azure VM は通常の SQL Server のバックアップ方法と同じ
• SQL Database のバックアップ方法は以下の方法等で取得可能
– DATABASE COPY
– BACPAC をエクスポート
41
DATABASE COPY
• SQL Database のデータベースのコピーを同一サーバーや別のサーバーに取得するための機能– CREATE DATABASE <コピー先データベース名> AS COPY OF [<コピー元
サーバー名>.] <コピー元データベース名>• master データベースに接続して実行する必要がある
– コピーは非同期で行われるため [sys.dm_database_copies] [sys.databases] でコピー状況を確認
42
SQL Database
Windows Azure
SQL Database
コマンドで 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
BACPAC はポータルからも取得可能
44
縄神君、ここまでの内容を振り返る の巻
45
ナワー¥
最後に
• Azure のデータベースを使う場合でも DBA の活躍する場所はあります。– オンプレミスの SQL Server の利用経験を活かし Azure のデータ
ベースを有効に活用
– 今回は時間の関係でお話しできませんでしたが管理ツールも SSMS / SSDT / ブラウザベースといろいろあり、取得できる管理用の情報もいろいろとあります。
• 設置する場所を選ばない、ハイブリッドな環境を触れるDBA を目指していくとよいかもしれないです。– 私はオンプレミスの SQL Server 特化なので、大きなことは言えま
せんが…。
46
Appendix
47
参考情報 (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
参考情報 (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
参考情報 (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
参考情報 (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