rds詳細 -ほぼ週刊awsマイスターシリーズ第8回-
TRANSCRIPT
AWSAWSAWSAWSマイスターシリーズマイスターシリーズマイスターシリーズマイスターシリーズ~~~~Amazon RDSAmazon RDSAmazon RDSAmazon RDS~~~~
2011年11月16日
大谷 晋平( @shot6)ソリューションアーキテクト
ほぼ週刊AWSマイスターシリーズへようこそ!~GoToMeetingの使い方~
参加者は、自動的にミュートになっています
質問を投げることができます!
� GoToMeetingのチャットの仕組みを使って、随時書き込んでください
� ただし環境によっては、日本語の直接入力ができないので、
お手数ですが、テキストエディタ等に打ち込んでから、
貼り付けててください
� 最後のQ&Aの時間で、できるだけ回答させて頂きます
� 書き込んだ質問は、主催者にしか見えません� 書き込んだ質問は、主催者にしか見えません
Twitterのハッシュタグは#jawsugでどうぞ
Copyright © 2011 Amazon Web Services
Webセミナーセミナーセミナーセミナーほぼ週刊ほぼ週刊ほぼ週刊ほぼ週刊AWSマイスターシリーズ(全マイスターシリーズ(全マイスターシリーズ(全マイスターシリーズ(全11回回回回?))))
� 11/16 第08回 RDS
� 11/22 第09回 Elastic Beanstalk
� 11/30 第10回 EMR
� 12/07 第11回 SES� 12/07 第11回 SES
� And more
� 12/15 第12回 S系全部載せ!SQS/SimpleDB/SNS
http://aws.amazon.com/jp/event_schedule/申し込みサイト
http://aws.amazon.com/jp/event_schedule/
プレゼントプレゼントプレゼントプレゼント
本日のプレゼントは・・・@KenTamagawa画伯の左絵の中にもある
本日のプレゼントは・・・左絵の中にもある超限定AWSマグネットセット(基本ブロック)を差し上げます!を差し上げます!
本スライドで使うアイコン
RDSマスター
RDSスレーブ
Oracle RDSRDSリードレプリカ
MySQL RDSRDS
ユーザー クライアント Internet マネージメントコンソール
Agenda
RDSとは
RDSデモRDSデモ
RDSの機能
RDSの事例
RDSのTips
� パラメータチューニング� パラメータチューニング
まとめ
Copyright © 2011 Amazon Web Services
Amazon Relational Database Service Amazon Relational Database Service
(RDS)とは
7
AWSプラットフォーム
サービスサービスサービスサービス
【【【【モバイルモバイルモバイルモバイルSDKSDKSDKSDK】】】】AWS SDK for AWS SDK for AWS SDK for AWS SDK for Android & Android & Android & Android & iOSiOSiOSiOS【【【【分散処理分散処理分散処理分散処理】】】】
AmzonAmzonAmzonAmzon Elastic Elastic Elastic Elastic MapReduceMapReduceMapReduceMapReduce
【【【【メール配信メール配信メール配信メール配信】】】】
Amazon SESAmazon SESAmazon SESAmazon SES【【【【コンテナ管理コンテナ管理コンテナ管理コンテナ管理】】】】
AWS Elastic AWS Elastic AWS Elastic AWS Elastic
【【【【RDBMSRDBMSRDBMSRDBMS】】】】Amazon RDSAmazon RDSAmazon RDSAmazon RDS
【【【【ロードバランサーロードバランサーロードバランサーロードバランサー】】】】
Amazon Elastic Amazon Elastic Amazon Elastic Amazon Elastic Load BalancingLoad BalancingLoad BalancingLoad Balancing
データデータデータデータベースベースベースベース
ネットワークネットワークネットワークネットワーク
【【【【仮想ディスク仮想ディスク仮想ディスク仮想ディスク】】】】
Amazon Elastic Amazon Elastic Amazon Elastic Amazon Elastic Block storeBlock storeBlock storeBlock store
【【【【キューサービスキューサービスキューサービスキューサービス】】】】
Amazon SQSAmazon SQSAmazon SQSAmazon SQS
【【【【NoSQLNoSQLNoSQLNoSQL】】】】Amazon Amazon Amazon Amazon SimpleDBSimpleDBSimpleDBSimpleDB
【【【【プッシュサービスプッシュサービスプッシュサービスプッシュサービス】】】】
Amazon SNSAmazon SNSAmazon SNSAmazon SNS
AWS Elastic AWS Elastic AWS Elastic AWS Elastic BeanstalkBeanstalkBeanstalkBeanstalk
【【【【デプロイ管理デプロイ管理デプロイ管理デプロイ管理】】】】CloudFormationCloudFormationCloudFormationCloudFormation
【【【【名前解決名前解決名前解決名前解決】】】】
Amazon Amazon Amazon Amazon Route 53Route 53Route 53Route 53
8
【【【【仮想サーバ仮想サーバ仮想サーバ仮想サーバ】】】】
Amazon EC2Amazon EC2Amazon EC2Amazon EC2【【【【ストレージストレージストレージストレージ】】】】
Amazon S3Amazon S3Amazon S3Amazon S3
【【【【コンテンツ配信コンテンツ配信コンテンツ配信コンテンツ配信】】】】
CloudFrontCloudFrontCloudFrontCloudFront
データセンターデータセンターデータセンターデータセンター
ネットワークネットワークネットワークネットワーク&インフラ&インフラ&インフラ&インフラ
エッジエッジエッジエッジロケーションロケーションロケーションロケーション
【【【【仮想ネットワーク仮想ネットワーク仮想ネットワーク仮想ネットワーク】】】】
Amazon VPC
Route 53Route 53Route 53Route 53
Amazon RDSとは?
RDBMS in the CloudRDBMS in the Cloud
�MySQL, Oracle
メンテナンスレス
スケーラブルで柔軟スケーラブルで柔軟
Amazon RDSとは?-詳細 -
2009年に登場したクラウド上RDBMSサービス
設定と運用が容易な”データベース in クラウド”設定と運用が容易な”データベース in クラウド”
EC2同様、管理の容易なDBサーバを数分で起動
自動バックアップ、パッチ更新、レプリケーションおよびリードレプリカはAWSにお任せ
既存MySQL/Oracleアプリケーションとツールが利用可能が利用可能
時間単位の従量課金 (DBインスタンスのクラスとリージョンで価格は変動)
10
自社構築 vs RDS
HWの購入ラックへ 電源とNW
OS
インスHWの購入設置
NWを設定
インストール
基本設定RDBMS
インストール
RDBMS
レプリケーション設定
RDBMS稼働確認
自社構築 vs RDS
RDSだと
RDSのオプ
ションを選んで起動!
アプリケーションを書く!!
自社構築 vs. RDS
数分で起動可能か?
単一APIコールまたは数クリックでスケールが可能か?単一APIコールまたは数クリックでスケールが可能か?
起動時に既に適切な設定がされているか?
同期レプリケーションと自動フェイルオーバー(option)
ポイントインタイムリカバリバックアップやクローンの為のDBスナップショット管理
ハードウェアや完全な環境の制御
自動パッチ更新(option)
13
自動パッチ更新(option)
既存MySQL製品との互換性
コスト0でダッシュボードでCPU/メモリ等メトリクス
RDSデモ
RDSの起動
GUIから
コマンドラインから
SDKから
RDSの起動
GUIから
コマンドラインから
SDKから
MySQLかOracleを選択MySQLかOracleを選択(通常はOracle SEも見えます)
ライセンスライセンスライセンスライセンス指定指定指定指定
DBバージョンをバージョンをバージョンをバージョンを指定指定指定指定
DBタイプをタイプをタイプをタイプを指定指定指定指定
マルチマルチマルチマルチAZオプションオプションオプションオプション指定指定指定指定
マイナーバージョンマイナーバージョンマイナーバージョンマイナーバージョン自動更新自動更新自動更新自動更新
DBサイズサイズサイズサイズ
データベースデータベースデータベースデータベース名名名名データベースデータベースデータベースデータベース名名名名
ポートポートポートポート番号番号番号番号
アベイラビリティゾーンアベイラビリティゾーンアベイラビリティゾーンアベイラビリティゾーン
DBパラメーターグループパラメーターグループパラメーターグループパラメーターグループDBパラメーターグループパラメーターグループパラメーターグループパラメーターグループ
DBセキュリティグループセキュリティグループセキュリティグループセキュリティグループ
自動自動自動自動バックアップバックアップバックアップバックアップ期間期間期間期間自動自動自動自動バックアップバックアップバックアップバックアップ期間期間期間期間
日時日時日時日時バックアップバックアップバックアップバックアップ時刻時刻時刻時刻
メンテナンスメンテナンスメンテナンスメンテナンス時刻時刻時刻時刻メンテナンスメンテナンスメンテナンスメンテナンス時刻時刻時刻時刻
パラメータのパラメータのパラメータのパラメータの確認確認確認確認
RDSの起動
GUIから
コマンドラインから
SDKから
RDSコマンドライン
RDS Command Line Tools� http://aws.amazon.com/developertools/2928� http://aws.amazon.com/developertools/2928
� 最新版は1.4.007 (API 2011-04-01)
Javaベース
� AWS_RDS_HOME/JAVA_HOME設定
キーの提供キーの提供
� アクセスキーのペア
� X.509の証明書
RDSコマンドラインrds-authorize-db-security-group-ingress
rds-create-db-instance
rds-create-db-instance-read-replica
rds-create-db-parameter-group
rds-create-db-security-group
rds-describe-db-snapshots
rds-describe-engine-default-parameters
rds-describe-events
rds-describe-orderable-db-instance-options
rds-describe-reserved-db-instancesrds-create-db-security-group
rds-create-db-snapshot
rds-delete-db-instance
rds-delete-db-parameter-group
rds-delete-db-security-group
rds-delete-db-snapshot
rds-describe-db-engine-versions
rds-describe-db-instances
rds-describe-db-parameter-groups
rds-describe-db-parameters
rds-describe-reserved-db-instances
rds-describe-reserved-db-instances-offerings
rds-modify-db-instance
rds-modify-db-parameter-group
rds-purchase-reserved-db-instances-offering
rds-reboot-db-instance
rds-reset-db-parameter-group
rds-restore-db-instance-from-db-snapshot
rds-restore-db-instance-to-point-in-time
rds-revoke-db-security-group-ingressrds-describe-db-parameters
rds-describe-db-security-groups
rds-revoke-db-security-group-ingress
rds-version
コマンドラインからRDSを起動する
rds-create-db-instance yourdb
--allocated-storage 5
--db-instance-class db.m1.small--db-instance-class db.m1.small
--engine mysql
--master-username admin
--master-user-password admin
--availability-zone ap-northeast-1a
--db-name hogedb--db-name hogedb
--db-security-groups default
--engine-version 5.5.8
--multi-az false
--region ap-northeast-1
RDSの起動
GUIから
コマンドラインから
SDKから
RDSのSDK
RDSの起動やメンテナンス等をSDKから行うことが出来る行うことが出来る
� Java
� .NET
� PHP
� など� など
Javaから起動するpublic static void main(String[] args) throws IOException {
AmazonRDS client = new AmazonRDSClient(…);
client.setEndpoint("rds.ap-northeast-1.amazonaws.com");
CreateDBInstanceRequest req = new CreateDBInstanceRequest();
req.setDBInstanceIdentifier(“mydb");
req.setDBName(“mydb");
req.setMultiAZ(Boolean.FALSE); //マルチマルチマルチマルチAZ設定設定設定設定req.setDBInstanceClass(“db.m1.small”); //m1.smallをををを利用利用利用利用req.setAllocatedStorage(new Integer(5)); // 5GB
req.setDBSecurityGroups(Arrays.asList("default"));
req.setEngine(“MySQL”); //MySQL 5.5.8をををを利用利用利用利用req.setEngineVersion("5.5.8");
req.setMasterUsername("admin");req.setMasterUsername("admin");
req.setMasterUserPassword("admin");
req.setAvailabilityZone(“ap-northeast-1a”);//AZをををを指定指定指定指定//DBをををを作成作成作成作成するするするするDBInstance result = client.createDBInstance(req);
}
RDSのエンドポイント
Region Endpoint Protocol
US East (Northern Virginia) Region
rds.us-east-1.amazonaws.com
HTTPSVirginia) Region 1.amazonaws.com
US West (Oregon) Region
rds.us-west-2.amazonaws.com
HTTPS
US West (Northern California) Region
rds.us-west-1.amazonaws.com
HTTPS
EU (Ireland) Region rds.eu-west-1.amazonaws.com
HTTPS
Asia Pacific (Singapore) rds.ap-southeast- HTTPSAsia Pacific (Singapore) Region
rds.ap-southeast-1.amazonaws.com
HTTPS
Asia Pacific (Tokyo) Region
rds.ap-northeast-1.amazonaws.com
HTTPS
RDS機能
RDS(MySQL)の全体アーキテクチャ
アベイラビリティゾーンA アベイラビリティゾーンB
自動バック自動バック データデータデータデータ同期同期同期同期自動バックアップ
スナップショット
自動バックアップ
スナップショット
データデータデータデータ同期同期同期同期
非同期非同期非同期非同期レプリケーションレプリケーションレプリケーションレプリケーション
自動自動自動自動フェイルオーバーフェイルオーバーフェイルオーバーフェイルオーバー
33
ョット
RDS(MySQL)アーキテクチャ
アベイラビリティゾーンA アベイラビリティゾーンB
自動バック自動バック データデータデータデータ同期同期同期同期自動バックアップ
スナップショット
自動バックアップ
スナップショット
データデータデータデータ同期同期同期同期
非同期非同期非同期非同期レプリケーションレプリケーションレプリケーションレプリケーション
自動自動自動自動フェイルオーバーフェイルオーバーフェイルオーバーフェイルオーバー
マルチAZデプロイメント(マルチAZ)
34
ョット
マルチAZデプロイメントとは(マルチAZ)
ワンクリックで適用可能な耐障害性耐障害性耐障害性耐障害性を高めるソリューション
DBA� 高い技術力を持つDBAが行っていた設計をそのままサービス化
同期レプリケーション+自動フェイルオーバ
� アプリ側での対処は必要なし
フェイルオーバのタイミングフェイルオーバのタイミング
� パッチ適用などのメンテナンス計画停止
� インスタンスやハードウェア障害
35
RDS(MySQL)アーキテクチャ
アベイラビリティゾーンA アベイラビリティゾーンB
自動バック自動バック データデータデータデータ同期同期同期同期自動バックアップ
スナップショット
自動バックアップ
スナップショット
データデータデータデータ同期同期同期同期
非同期非同期非同期非同期レプリケーションレプリケーションレプリケーションレプリケーション
自動自動自動自動フェイルオーバーフェイルオーバーフェイルオーバーフェイルオーバー
リードレプリカ
36
ョット
リードレプリカとは?
特定DBインスタンスの読み込み用のコピー
想定ユースケース想定ユースケース
� リードのスケーリング、ビジネスレポート
� マルチAZの耐障害性の代替の機能ではない
マルチAZとは異なり、MySQL本来の非同期レプリケーションをそのまま使う
最大5台まで設定可能最大5台まで設定可能
マルチAZとリードレプリカを併用はもちろん可能
37
RDS(MySQL)アーキテクチャ
アベイラビリティゾーンA アベイラビリティゾーンB
自動バック自動バック データデータデータデータ同期同期同期同期
自動バックアップ機能
自動バックアップ
スナップショット
自動バックアップ
スナップショット
データデータデータデータ同期同期同期同期
非同期非同期非同期非同期レプリケーションレプリケーションレプリケーションレプリケーション
自動自動自動自動フェイルオーバーフェイルオーバーフェイルオーバーフェイルオーバー
38
ョット
自動バックアップ機能
RDS標準装備
1日1回+トランザクションログ1日1回+トランザクションログ
保存期間は最大8日間
� それ以降はスナップショット保存
5分前までの任意の期間に復元可能
39
スケールアップ機能
マネージメントコンソールからスケールアップ可能
� 一度停止が必要� 一度停止が必要
コマンドラインからも勿論可能
� 例:rds-modify-db-instance hogedb -c db.m1.large --apply-immediately
CPUは1ECUから26ECUまで
メモリは1.7GBから68GBまでメモリは1.7GBから68GBまで
ディスクは5GBから1TBまで
� 大量書き込みなどスケールアウトでの対処が難しい場合にスケールアップで対処可能
� 増量できても削減できないので注意が必要40
スケールアップ機能
スケールアップ機能
・・・・DBインスタンスのタイプインスタンスのタイプインスタンスのタイプインスタンスのタイプ・割り当てたストレージ量・割り当てたストレージ量・割り当てたストレージ量・割り当てたストレージ量・マルチ・マルチ・マルチ・マルチAZ
・パラメータグループ・パラメータグループ・パラメータグループ・パラメータグループなど自由に変更可能など自由に変更可能など自由に変更可能など自由に変更可能
OracleOracle
RDSRDS
Oracle RDSとは
2011年Q2ロウンチ
� Oracle Database 11g Release 2� Oracle Database 11g Release 2
Oracle Database SE1, SE, EE + オプションパック
ライセンス持ち込み(BYOL) か従量課金(時間単位)
初期はシングルインスタンスでレプリケーションなどはすぐに機能追加の予定
OracleVMのハードパーティショニングで稼働OracleVMのハードパーティショニングで稼働
44
RDSのOracleサポート
ライセンス持ち込み(BYOL)
� RDS部分についてはAWSプレミアムサポート� RDS AWS(インフラ部分含む)
� AWSがパッチとアップグレードを管理
� Oracleデータベースに関してはOracleサポートIDを使ったOracle社のサポート
従量課金ライセンス従量課金ライセンス
� RDS部分およびOracleに関してもAWSプレミアムサポートでカバー
45
RDS価格
Amazon RDSプライシング
MySQLの標準価格
47
Amazon RDSプライシング
MySQLのMultiAZ価格
48
Amazon RDSプライシング
Oracleの標準価格
49
AWSライセンス BYOL
(ライセンス持込)
RDSプライシング注意点
マルチAZでは価格は2倍になる
ストレージで$0.12/GB$0.12/GB
IOで$0.12/100万リクエスト
バックアップ用ストレージは無料
RDS用リザーブドインスタンスもご提供
� 1年間、3年間のコミットによる価格を大幅削減
50
Oracle RDSプライシング
複数ライセンスオプションが今後利用可能に
� 既存のOracleライセンス� 既存のOracleライセンス
� OracleまたはOracleパートナーから新規にOracleライセンスを購入
� Amazonからの従量課金制での利用
Amazon RDSの2つのプライシングモデル
� オンデマンドな時間単位の従量課金モデル� オンデマンドな時間単位の従量課金モデル
� Amazon RDS リザーブドインスタンス
51
RDS事例
RDSのお客様代表事例
大規模事例 – gumi様
ソーシャルゲーム提供
AWS上で開発・運用AWS上で開発・運用
特にRDSを積極的にお使いいただいている
Gumiさんのサーバー構成
App
ELB
Appサーバ
Cacheサーバ
KVSサーバ
AppサーバAppサーバ
KVS
c1.xlarge - 60台
同期
ゾーンゾーンゾーンゾーンA
サーバ サーバサーバ
m1.large- 4台
m1.large- 8台 x 2
ゾーンゾーンゾーンゾーンB
RDS-マルチAZ
同期
gumi事例: AWS運用モデル
複数のゲームをAWSで運用(全体で25億PV/月)
� 最大ゲーム1本で6000万PV/日
� ゲーム毎に、ELB+EC2+RDSの同じセットを再利用
人気ゲーム ゲームA ゲームB ゲームC
AppサーバAppサーバAppサーバ
ELB
App
サーバ
Cach
KVS
App
サーバ
App
サーバ KV
S
ELB
App
サーバ
Cach
KVS
App
サーバ
App
サーバ KV
S
ELB
App
サーバ
Cach
KVS
サ
App
サーバ
App
サーバ
KVS
ELB
インフラエンジニアは1名!(~2011/8、今は3名!)
Cacheサーバ
KVSサーバKVSサーバ
che
サーバ
S
サーバ
S
サーバ
che
サーバ
S
サーバ
S
サーバ
he
サーバ
サーバ
S
サーバ
gumi事例: AWS運用モデルゲームのライフサイクルにあわせて、サーバー台数、サーバースペックを調整
開発時
Appサーバ
申請時 公開時
1台にまとめて
Appサーバ
ELB
Appサーバ
Cacheサーバ
KVSサーバ
AppサーバAppサーバ
KVS
c1.xlarge - 60台
ELB
同期
個人毎に
最小構成にAppサーバーを8台DBをマルチAZに(m1.large)
ゾーンゾーンゾーンゾーンA
サーバ サーバKVSサーバ
m1.large- 4台 m1.large
- 8台 x 2
ゾーンゾーンゾーンゾーンB
RDS-マルチAZ
同期
gumi事例: ピーク時のさばき方
突発的な対応が必要なときは、EC2、RDSのスペックを上げて、時間をかせぐ
AppサーバAppサーバAppサーバ
ELB
m1.large
メモリメモリメモリメモリ 7.5GB
CPU 4ECU
m2.4xlarge
メモリメモリメモリメモリ 68GB
CPU 26ECU
Cacheサーバ
KVSサーバKVSサーバ
CPU 4ECU CPU 26ECU
gumi事例: バックアップの仕組み
データベース部分
� RDSのポイントインタイムリカバリを利用(8日分)� RDSのポイントインタイムリカバリを利用(8日分)
• 5分前以前の何時の時点にも戻せる
� 8日前以前の分については、手動スナップショットを利用する
Gumiさんの事例からわかる事
非常にスケールが必要なアプリケーションでもRDSは有効RDSは有効
� スケールアップ
� スケールアウト(リードレプリカ)
DBの管理コストを劇的に削減し、アプリケーションを構築する部分にリソースを集中できる
RDSの柔軟さを活用する事で、ピークにもあわRDSの柔軟さを活用する事で、ピークにもあわてず対応できる
Tips
RDSのTips
DBセキュリティグループ
RDSへのデータの移行RDSへのデータの移行
パラメーターチューニング
タイムゾーンに関して
メトリクス
マルチAZに関しての考え方マルチAZに関しての考え方
いつRDSを使うべきか
DBセキュリティグループ
RDS専用のセキュリティグループ
� EC2のセキュリティグループを許可する� EC2のセキュリティグループを許可する
•または
� CIDRで許可するrds-create-db-security-group hoge --db-security-group-description "foo"rds-authorize-db-security-group-ingress hoge -g bar -o $ACCOUNT_ID
-o:アカウントID-o:アカウントID-g:EC2セキュリティグループ名
rds-revoke-db-security-group-ingress hoge -o $ACCOUNT_ID -g bar
RDSへのデータの移行
MySQLを使った一例
� mysqldump
• 少量データの場合直接インポート• 少量データの場合直接インポート
� mysqlimportでバルクインポート
• フラットなファイルで複数に分割、圧縮
• RDSを一旦停止、スナップショット作成
• スナップショットから新DB作成
• 自動バックアップを一旦停止• 自動バックアップを一旦停止
• mysqlimportでのデータのロード
• 自動バックアップ復旧
• サービス再開
パラメータチューニング
ManagementConsoleからは出来ない
DBパラメータグループを作成して、パラメータDBパラメータグループを作成して、パラメータをチューニングする
� RDSコマンドを使う必要がある
• rds-create-db-parameter-group
• rds-modify-db-parameter-group
//Slow queryを取得するよう変更した例を取得するよう変更した例を取得するよう変更した例を取得するよう変更した例rds-modify-db-parameter-group group1
-p "name=slow_query_log, value=ON, method=immediate"-p "name=long_query_time, value=1, method=immediate"
-p "name=min_examined_row_limit, value=100, method=immediate"
パラメータチューニング(2)
$ rds-describe-db-parameters group1 --source userDBPARAMETER long_query_time engine-default integer dynamic true DBPARAMETER min_examined_row_limit engine-default integer dynamic
$ rds-describe-db-parameters group1 --source userDBPARAMETER long_query_time 1 user integer dynamic true
DBPARAMETER min_examined_row_limit engine-default integer dynamic trueDBPARAMETER slow_query_log engine-default boolean dynamic true
DBPARAMETER long_query_time 1 user integer dynamic trueDBPARAMETER min_examined_row_limit 100 user integer dynamic trueDBPARAMETER slow_query_log 1 user boolean dynamic true
パラメータチューニング(3)
注意点
� チューニング出来る項目と出来ない項目がある� チューニング出来る項目と出来ない項目がある
• タイムゾーンは変更不可・・・
� rds-describe-db-parametersを使ってチェック
� または、ManagementConsoleでチェック
タイムゾーンに関して
rds-describe-db-parametersで見てみると、タイムゾーンは変更不可能な設定項目タイムゾーンは変更不可能な設定項目
� アプリケーション側でJSTなど適切なタイムゾーンを指定する必要あり
� init_connectパラメータによる、タイムゾーンの設定は現状保証されない
メトリクスと監視
CloudWatchにてRDSメトリクスを監視メトリクス名メトリクス名メトリクス名メトリクス名 説明説明説明説明
BinLogDiskUsage マスターのバイナリログサイズ
CPUUtilization CPU利用量CPUUtilization CPU利用量
DatabaseConnections DBのコネクション数
FreeableMemory 使えるメモリ量
FreeStorageSpace 使えるディスクスペース
ReadIOPS 読み込みの平均IOPS
ReadLatency 読み込みのレイテンシ
ReadThroughput 読み込みスループットReadThroughput 読み込みスループット
ReplicaLag リードレプリカのタイムラグ
SwapUsage DBで使用しているスワップ
WriteIOPS 書き込みの平均IOPS
WriteLatency 書き込みのレイテンシ
WriteThroughput 書き込みスループット
メトリクスと監視(2)
Amazon RDS Eventsでも監視可能
� ManagementConsoleで監視
� rds-describe-events� rds-describe-events
MultiAZにおけるリードレプリカの更新停止に関して(MySQL)
MultiAZ環境でフェイルオーバしたタイミングでリードレプリカの更新の伝播が停止する可能でリードレプリカの更新の伝播が停止する可能性がある
� 常にそうなるわけではない
非同期のMySQLレプリケーション
� binlogがディスクにフラッシュされていない状況下で、フェイルオーバした場合に稀に発生下で、フェイルオーバした場合に稀に発生
� レプリケーションのコストとの兼ね合い
MultiAZにおけるリードレプリカの更新停止に関して(MySQL)(2)
対応策1
� rds-modify-db-parameter-groupで� rds-modify-db-parameter-groupで
• binlogの同期:sync_binlog=1
• 2PCコミット:innodb_support_xa=1
• http://dev.mysql.com/doc/refman/5.1/en/binary-log.html
対応策2対応策2
� 問題が発生した場合に、リードレプリカを再度作り直す
マルチAZに対しての考え方
良く聞く声:マルチAZでマスターをWebアプリと同一のAZに割り当てたいと同一のAZに割り当てたい
マインドシフトが必要
� マルチAZでWebアプリが構築されていれば、RDSのマスターがどちらにあるかは意識しなくてよい
� マルチAZでの複数DCが利用できるものを最大限� マルチAZでの複数DCが利用できるものを最大限に活かしてWebアプリのコンポーネントを分散して配置するのが重要
いつRDSを使うべきか
RDSの代替案
� Amazon SimpleDB� Amazon SimpleDB
� EC2上でMySQLやOracleを展開
vs SimpleDB
� シンプルなクエリ、堅牢性・管理不要を追及したい場合はSimpleDB
� 既存MySQLの知識やツールを使いたい場合は� 既存MySQLの知識やツールを使いたい場合はRDS
いつRDSを使うべきか(2)
vs EC2上のMySQLやOracle
� 完全に自分でコントロールしたい場合、RDSの� 完全に自分でコントロールしたい場合、RDSの提供範囲外のものが欲しい場合はEC2
� RDSの機能セットや管理機能が必要十分で、運用保守の手間を下げたい場合はRDS
http://aws.amazon.com/running_databases/http://aws.amazon.com/running_databases/
今後のロードマップ
新しいリージョンでの展開
Oracle RDS、権限まわりの緩和Oracle RDS、権限まわりの緩和
エラーログアクセス
より小さなインスタンスタイプの提供
より大きなストレージの割り当て
76
まとめ
Amazon RDSまとめ
RDBMS in the CloudRDBMS in the Cloud
�MySQL, Oracle
メンテナンスレス
スケーラブルで柔軟スケーラブルで柔軟
参考文献RDSのDBインスタンスサイズガイド
� http://aws.amazon.com/articles/Amazon-RDS/2936
RDSのDBパラメータガイド
� http://aws.amazon.com/articles/Amazon-RDS/2935
RDSモニタリングガイド
� http://aws.amazon.com/articles/Amazon-RDS/2934
RDSへのデータインポートガイド
� MySQL編:http://aws.amazon.com/articles/Amazon-RDS/2933
� Oracle編:http://aws.amazon.com/articles/Amazon-� Oracle編:http://aws.amazon.com/articles/Amazon-RDS/4173109646282306
79
Q & A
次回の
ほぼ週刊AWSマイスターシリーズは、
11月22日 17:00~
~ Amazon Elastic Beanstalk ~
Copyright © 2011 Amazon Web Services
ご参加ありがとうご参加ありがとうございました
Copyright © 2011 Amazon Web Services