More Related Content Similar to 20120508 aws meister-rds-public Similar to 20120508 aws meister-rds-public (20) More from Amazon Web Services Japan More from Amazon Web Services Japan (20) 20120508 aws meister-rds-public2. Agenda
RDSとは
RDSデモ
RDSの機能
RDSの事例
RDSのTips
パラメータチューニング
まとめ
Copyright © 2011 Amazon Web Services
4. AWS のビルディングブロック
お客様のアプリケーション
運用と管理
Building Block Services
Web インターフェー 認証 &アクセス デプロイ&自動化
AWS IAM モニタリング
ス Identity Federation
AWS Elastic Beanstalk
Amazon CloudWatch
Management Console Consolidated Billing
AWS CloudFormation
アプリケーションプラットフォームサービス
メッセージング ライブラリ&SDK
コンテンツ配信Amazon Amazon SNS 分散処理 Java, PHP, Python,
CloudFront Amazon SQS Elastic MapReduce
Ruby, .NET
Amazon SES
基盤サービス
ストレージ データベース ネットワーク
コンピュート Amazon S3 Amazon RDS
Amazon VPC
Amazon EC2 Elastic Load Balancing
Amazon EBS Amazon DynamoDB
Auto Scale Amazon Route 53
AWS Storage Gateway Amazon Elasticache
AWS Direct Connect
アベイラビリティゾーン
AWSのグローバルなインフラ エッジロケーション
リージョン
6. Amazon RDSとは?- 詳細 -
2009年に登場したクラウド上RDBMSサービス
設定と運用が容易な”データベース in クラウド”
EC2同様、管理の容易なDBサーバを数分で起動
自動バックアップ、パッチ更新、レプリケーションおよびリードレプリ
カはAWSにお任せ
既存MySQL/Oracleアプリケーションとツールが利用可能
時間単位の従量課金 (DBインスタンスのクラスとリージョンで価格
は変動)
6
7. 自社構築 vs RDS
電源とNWを OS
HWの購入 ラックへ設置
設定 インストール
RDBMS
RDBMS RDBMS
基本設定 レプリケーシ
インストール 稼働確認
ョン設定
16. データベース名
ポート番号
アベイラビリティゾーン
DBパラメーターグループ
DBセキュリティグループ
21. RDSコマンドライン
RDS Command Line Tools
http://aws.amazon.com/developertools/2928
最新版は1.8.001 (API 2012-04-23)
Javaベース
AWS_RDS_HOME/JAVA_HOME設定
キーの提供
アクセスキーのペア
X.509の証明書
22. RDSコマンドライン
rds-authorize-db-security-group-ingress rds-describe-db-snapshots
rds-create-db-instance rds-describe-engine-default-parameters
rds-create-db-instance-read-replica • rds-describe-events
rds-create-db-parameter-group • rds-describe-orderable-db-instance-options
rds-create-db-security-group • rds-describe-reserved-db-instances
rds-create-db-snapshot • rds-describe-reserved-db-instances-offerings
rds-delete-db-instance • rds-modify-db-instance
rds-delete-db-parameter-group • rds-modify-db-parameter-group
rds-delete-db-security-group • rds-purchase-reserved-db-instances-offering
rds-delete-db-snapshot • rds-reboot-db-instance
rds-describe-db-engine-versions • rds-reset-db-parameter-group
rds-describe-db-instances • rds-restore-db-instance-from-db-snapshot
rds-describe-db-parameter-groups • rds-restore-db-instance-to-point-in-time
rds-describe-db-parameters • rds-revoke-db-security-group-ingress
rds-describe-db-security-groups • rds-version
26. 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.setMasterUserPassword("admin");
req.setAvailabilityZone(“ap-northeast-1a”);//AZを指定
//DBを作成する
DBInstance result = client.createDBInstance(req);
}
27. RDSのエンドポイント
Region Endpoint Protocol
US East (Northern Virginia) Region rds.us-east-1.amazonaws.com HTTPS
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) Region rds.ap-southeast-1.amazonaws.com HTTPS
Asia Pacific (Tokyo) Region rds.ap-northeast-1.amazonaws.com HTTPS
29. RDS(MySQL) の全体アーキテクチャ
アベイラビリティゾーンA アベイラビリティゾーンB
自動バックア
自動バックア データ同期
ップ
ップ 自動フェイルオーバー
非同期レプリケーション
スナップショ
スナップショ
ット
ット
29
30. RDS(MySQL) アーキテクチャ
アベイラビリティゾーンA アベイラビリティゾーンB
自動バックア
自動バックア データ同期
ップ
ップ 自動フェイルオーバー
非同期レプリケーション
マルチAZデプロイメント
スナップショ
スナップショ
ット
ット
(マルチAZ)
30
32. RDS(MySQL) アーキテクチャ
アベイラビリティゾーンA アベイラビリティゾーンB
自動バックア
自動バックア データ同期
ップ
ップ 自動フェイルオーバー
非同期レプリケーション
リードレプリカ
スナップショ
スナップショ
ット
ット
32
34. RDS(MySQL) アーキテクチャ
アベイラビリティゾーンA アベイラビリティゾーンB
自動バックアップ機能
自動バックア
自動バックア データ同期
ップ
ップ 自動フェイルオーバー
非同期レプリケーション
スナップショ
スナップショ
ット
ット
34
38. スケールアップ機能
・DBインスタンスのタイプ
・割り当てたストレージ量
・マルチAZ
・パラメータグループ
など自由に変更可能
40. Oracle RDSとは
2011年Q2ロウンチ
Oracle Database 11g
プロビジョニング、バックアップ、パッチ適用、監視、スケーリング
はRDSが管理
ライセンス持ち込み(BYOL) か 従量課金(時間単位)
リザーブドDBインスタンスも購入可能
Multi-AZ対応
30種の文字セットをサポート(Shift-JISを含む)
40
47. Oracle RDSプライシング
複数ライセンスオプションが今後利用可能に
既存のOracleライセンス
OracleまたはOracleパートナーから新規にOracleライセンスを購
入
Amazonからの従量課金制での利用
Amazon RDSの2つのプライシングモデル
オンデマンドな時間単位の従量課金モデル
Amazon RDS リザーブドインスタンス
47
51. Gumiさんのサーバー構成
ELB
App
App
サーバ
App c1.xlarge
サーバ
サーバ
Cache KVS
KVS
サーバ サーバ 同期
サーバ
m1.large m1.large RDS
- マルチAZ
ゾーンA ゾーンB
52. gumi事例: AWS運用モデル
複数のゲームをAWSで運用(全体で数十億PV/月)
ゲーム毎に、ELB+EC2+RDSの同じセットを再利用
人気ゲーム ゲームA ゲームB ゲームC
ELB ELB ELB
ELB
App
App
App
App App App
App App ササ
サー
サー サーApp サ
サー ー
App バサー
バ バサー ーー
App
サーバ バ バ ババ
App バ Cacバ KV
サーバ KV
サーバ he S
Cach KVS Cach KVS S
KVS KVS サ サ
e サー e サー サ
サー サー ー ー
サー バ サー バ ー
バ バ バ バ
バ バ バ
Cache KVS
サーバ KVS
サーバ
サーバ
インフラエンジニアは1名!
(~2011/8、今は3名!)
53. gumi事例: AWS運用モデル
ゲームのライフサイクルにあわせて、
サーバー台数、サーバースペックを調整
開発時 申請時 公開時
ELB
ELB
App
サーバ
App App
App
サーバ サーバ
App
サーバ
サーバ
c1.xlarge
- 60台
1台にまとめて Cache KVS
KVS 同期
サーバ サーバ
サーバ
個人毎に m1.large
- 4台 m1.large RDS
- 8台 x 2 - マルチAZ
ゾーンA ゾーンB
最小構成に
Appサーバーを8台
DBをマルチAZに(m1.large)
55. gumi事例: バックアップの仕組み
データベース部分
RDSのポイントインタイムリカバリを利用(8日分)
• 5分前以前の何時の時点にも戻せる
8日前以前の分については、
手動スナップショットを利用する
56. gumi事例: モニタリング
CloudWatch + SNS
CloudWatch + SNSで負荷やディスク残量を監視
ディスクク容量が少なくなるとメールで通知
60. DBセキュリティグループ
RDS専用のセキュリティグループ
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
-g:EC2セキュリティグループ名
rds-revoke-db-security-group-ingress hoge -o $ACCOUNT_ID -g bar
61. RDSへのデータの移行
MySQLを使った一例
mysqldump
• 少量データの場合直接インポート
mysqlimportでバルクインポート
• フラットなファイルで複数に分割、圧縮
• RDSを一旦停止、スナップショット作成
• スナップショットから新DB作成
• 自動バックアップを一旦停止
• mysqlimportでのデータのロード
• 自動バックアップ復旧
• サービス再開
62. パラメータチューニング
ManagementConsoleからは出来ない
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"
63. パラメータチューニング(2)
$ rds-describe-db-parameters group1 --source user
DBPARAMETER long_query_time engine-default integer dynamic true
DBPARAMETER min_examined_row_limit engine-default integer dynamic true
DBPARAMETER slow_query_log engine-default boolean dynamic true
$ rds-describe-db-parameters group1 --source user
DBPARAMETER long_query_time 1 user integer dynamic true
DBPARAMETER min_examined_row_limit 100 user integer dynamic true
DBPARAMETER slow_query_log 1 user boolean dynamic true
64. パラメータチューニング(3)
注意点
チューニング出来る項目と出来ない項目がある
• タイムゾーンは変更不可・・・
rds-describe-db-parametersを使ってチェック
または、ManagementConsoleでチェック
66. メトリクスと監視
CloudWatchにてRDSメトリクスを監視
メトリクス名 説明
BinLogDiskUsage マスターのバイナリログサイズ
CPUUtilization CPU利用量
DatabaseConnections DBのコネクション数
FreeableMemory 使えるメモリ量
FreeStorageSpace 使えるディスクスペース
ReadIOPS 読み込みの平均IOPS
ReadLatency 読み込みのレイテンシ
ReadThroughput 読み込みスループット
ReplicaLag リードレプリカのタイムラグ
SwapUsage DBで使用しているスワップ
WriteIOPS 書き込みの平均IOPS
WriteLatency 書き込みのレイテンシ
WriteThroughput 書き込みスループット
71. いつRDSを使うべきか
RDSの代替案
Amazon SimpleDB
EC2上でMySQLやOracleを展開
vs SimpleDB
シンプルなクエリ、堅牢性・管理不要を追及したい場合は
SimpleDB
既存MySQLの知識やツールを使いたい場合はRDS
76. Amazon RDS まとめ
わずらわしいDB管理作業から解放し
データを失う心配からの解放し
使うことだけに集中できる
メンテナンスレス、スケーラブル、柔軟な
RDB(MySQL, Oracle)サービス