118
PostgreSQLの冗長化の話 第三回 中国地方DB勉強会

PostgreSQLの冗長化について

Embed Size (px)

DESCRIPTION

第三回 中国地方DB勉強会の発表資料です。 http://dbstudychugoku.doorkeeper.jp/events/9698 DB勉強会についてはこちら。 http://dbstudychugoku.github.io/

Citation preview

Page 1: PostgreSQLの冗長化について

PostgreSQLの冗長化の話

第三回 中国地方DB勉強会

Page 2: PostgreSQLの冗長化について

What is it?

概念とか仕組みとかの難しい話はしません

Page 3: PostgreSQLの冗長化について

What is it?

今日、皆さんにお伝えしたいことは2つ

Page 4: PostgreSQLの冗長化について

What is it?

PostgreSQLの冗長化ってなによ?

Page 5: PostgreSQLの冗長化について

What is it?

出来る!冗長化!!

Page 6: PostgreSQLの冗長化について

What is it?

たったこれだけ

Page 7: PostgreSQLの冗長化について

What is it?

今日の細かいことは既にWebにある

Page 8: PostgreSQLの冗長化について

What is it?

今日はそんなDBのお話をします

Page 9: PostgreSQLの冗長化について

あじぇんだ

1 自己紹介

2 冗長化とは

3 PostgreSQLの冗長化

4 RDS For PostgreSQL

5 まとめ

Page 10: PostgreSQLの冗長化について

あじぇんだ

1 自己紹介

2 冗長化とは

3 PostgreSQLの冗長化

4 RDS For PostgreSQL

5 まとめ

Page 11: PostgreSQLの冗長化について

自己紹介

名前:曽根 壮大(そね たけとも)

年齢:29歳(三人の子供がいます)

職場:まほろば工房

所属:日本PostgreSQLユーザ会

技術的にはWeb系でLLとかRDB大好きです

Page 12: PostgreSQLの冗長化について

自己紹介

名前:曽根 壮大(そね たけとも)

年齢:29歳(三人の子供がいます)

職場:まほろば工房

所属:日本PostgreSQLユーザ会

PBXを作ったりVyattaの使ったりしてます

Page 13: PostgreSQLの冗長化について

自己紹介

名前:曽根 壮大(そね たけとも)

年齢:29歳(三人の子供がいます)

職場:まほろば工房

所属:日本PostgreSQLユーザ会

中国支部長やってます

Page 14: PostgreSQLの冗長化について

あじぇんだ

1 自己紹介

2 冗長化とは

3 PostgreSQLの冗長化

4 RDS For PostgreSQL

5 まとめ

Page 15: PostgreSQLの冗長化について

PostgreSQLとは

PostgreSQLとは

Page 16: PostgreSQLの冗長化について

PostgreSQLとは

オープンソースなリレーショナルデータベース

Page 17: PostgreSQLの冗長化について

PostgreSQLとは

特 徴

Page 18: PostgreSQLの冗長化について

PostgreSQLとは

高機能・高可用性

特 徴

Page 19: PostgreSQLの冗長化について

PostgreSQLとは

高機能・高可用性

日本語ドキュメントが豊富

特 徴

Page 20: PostgreSQLの冗長化について

PostgreSQLとは

高機能・高可用性

日本語ドキュメントが豊富

コミュニティが活発

特 徴

Page 21: PostgreSQLの冗長化について

PostgreSQLとは

ver. リリース日 主な追加機能

8.4 2009-07-01再帰クエリ, ウィンドウ関数, 列単位のアクセス制御, SQLと関数の性能解析機能

9.0 2010-09-20レプリケーション, 一括権限変更, 匿名プロシージャ, 64bit Windows サポート, 移動平均, 列/条件トリガ, 一意性制約の遅延, 排他制約

9.1 2011-09-12同期レプリケーション, 外部テーブル, パッケージ管理, UNLOGGEDテーブル, 更新可能なWITH句, 近傍検索, SELinux権限制御

9.2 2012-09-10インデックスオンリースキャン, カスケードレプリケーション, JSON型, 範囲型

9.3 2013-09-09マテリアライズドビュー, 外部テーブルへの書き出し, イベントトリガ, データページ・チェックサム, LATERAL句

Page 22: PostgreSQLの冗長化について

PostgreSQLとは

高機能・高可用性

日本語ドキュメントが豊富

コミュニティが活発

特 徴

Page 23: PostgreSQLの冗長化について

冗長化とは

高可用性を実現すること

Page 24: PostgreSQLの冗長化について

冗長化とは

一部の設備が故障しても

サービスを継続して提供できる

ようにシステムを構築すること。

Page 25: PostgreSQLの冗長化について

冗長化とは

「どのくらいの稼働率を想定されていますか?」

Page 26: PostgreSQLの冗長化について

冗長化とは

稼働率 年間停止時間

90% 36.5日

99% 3.65日

99.9% 8.7時間

99.99% 52分

99.999% 5分

99.9999% 32秒

Page 27: PostgreSQLの冗長化について

冗長化とは

稼働率 年間停止時間 実現方法

90% 36.5日 バックアップ~リストアだけで十分。オンラインバックアップ取得を実施。

99% 3.65日 オンプレミスなら予備マシンが必要。大データならバックアップのリストア所要時間を把握しておく。

99.9% 8.7時間 保守停電のないクラウド~ハウジングが必要。平日日中のみ障害検知だとむずかしい。

99.99% 52分 バックアップのリストアがほぼ不可能。レプリケーション(データ同期)された待機サーバが必要。

99.999% 5分 HAクラスタソフトウェア等が必要。技術者のスキルが急に跳ね上がる。

99.9999% 32秒 無停止型サーバなどのハードが必要になってくる。コストが急に跳ね上がる。

Page 28: PostgreSQLの冗長化について

冗長化とは

今日は99.999%を目指します

Page 29: PostgreSQLの冗長化について

冗長化とは

今日は99.999%を目指します

※ただし、DB部分のみに限る

Page 30: PostgreSQLの冗長化について

あじぇんだ

1 自己紹介

2 冗長化とは

3 PostgreSQLの冗長化

4 RDS For PostgreSQL

5 まとめ

Page 31: PostgreSQLの冗長化について

PostgreSQLの冗長化

DBの冗長化のアプローチは複数あります

Page 32: PostgreSQLの冗長化について

PostgreSQLの冗長化

冗長化の手法

Page 33: PostgreSQLの冗長化について

PostgreSQLの冗長化

1 pgpool-II

冗長化の手法

Page 34: PostgreSQLの冗長化について

PostgreSQLの冗長化

1 pgpool-II

2 DRBD+Pacemaker

冗長化の手法

Page 35: PostgreSQLの冗長化について

PostgreSQLの冗長化

1 pgpool-II

2 DRBD+Pacemaker

3 Replication+Pacemaker

冗長化の手法

Page 36: PostgreSQLの冗長化について

PostgreSQLの冗長化

1 pgpool-II

2 DRBD+Pacemaker

3 Replication+Pacemaker

冗長化の手法

Page 37: PostgreSQLの冗長化について

pgpool-II

PostgreSQLとクライアントの間で

稼働するミドルウェア

http://www.pgpool.net/mediawiki/jp/

Page 38: PostgreSQLの冗長化について

pgpool-IIの場合

DB1

DB2

アプリ 一つのDBに見える

pgpool-IIがDBのクラスタを抽象化する

更新は両方に行う

参照は色々出来る

pgpool-II

Page 39: PostgreSQLの冗長化について

pgpool-IIの場合

DB1

DB2

アプリ 一つのDBに見える

pgpool-IIが検知してDB2のみを利用する

pgpool-II

Page 40: PostgreSQLの冗長化について

pgpool-IIの場合

DB1

DB2

アプリ 一つのDBに見える

pgpool-IIが単一障害点

pgpool-II

Page 41: PostgreSQLの冗長化について

pgpool-IIの場合

DB1

DB2

アプリ

pgpool-IIの冗長化もできる

仮想IP

pgpool-II

pgpool-II

Page 42: PostgreSQLの冗長化について

pgpool-IIの場合

DB1

DB2

アプリ

障害時に切り替え

仮想IP

pgpool-II

pgpool-II

Page 43: PostgreSQLの冗長化について

pgpool-IIの場合

メリット

Page 44: PostgreSQLの冗長化について

pgpool-IIの場合

高可用性

メリット

Page 45: PostgreSQLの冗長化について

pgpool-IIの場合

高可用性

pgpool-IIが多機能

メリット

Page 46: PostgreSQLの冗長化について

pgpool-IIの場合

高可用性

pgpool-IIが多機能

ドキュメントが豊富

メリット

Page 47: PostgreSQLの冗長化について

pgpool-IIの場合

デメリット

Page 48: PostgreSQLの冗長化について

pgpool-IIの場合

構成が複雑になる

デメリット

Page 49: PostgreSQLの冗長化について

pgpool-IIの場合

構成が複雑になる

ボトルネックが解りにくくなる

デメリット

Page 50: PostgreSQLの冗長化について

pgpool-IIの場合

構成が複雑になる

ボトルネックが解りにくくなる

多機能⇔使い分けが大変

デメリット

Page 51: PostgreSQLの冗長化について

PostgreSQLの冗長化

1 pgpool-II

2 DRBD+Pacemaker

3 Replication+Pacemaker

冗長化の手法

Page 52: PostgreSQLの冗長化について

DRBD

Linuxプラットフォームの分散ストレージシステム

ディスク領域をミラーリングする

Page 53: PostgreSQLの冗長化について

Pacemaker

"Linux-HA Japan“のソフトウェア

HAクラスタを実現するためのソフト

Page 54: PostgreSQLの冗長化について

DRBDの場合

HDD1

DB1

DB2

アプリ

ディスクをミラーリングする

HDD2

仮想IPミラーリング

Page 55: PostgreSQLの冗長化について

DRBDの場合

HDD1

DB1

DB2

アプリ

障害時はDB2にフェールオーバー

HDD2

仮想IP

Page 56: PostgreSQLの冗長化について

DRBDの場合

メリット

Page 57: PostgreSQLの冗長化について

DRBDの場合

構成がシンプル

メリット

Page 58: PostgreSQLの冗長化について

DRBDの場合

構成がシンプル

サーバの台数が必要最小限

メリット

Page 59: PostgreSQLの冗長化について

DRBDの場合

構成がシンプル

サーバの台数が必要最小限

DBの扱いはシングルの時と変わらない

メリット

Page 60: PostgreSQLの冗長化について

DRBDの場合

デメリット

Page 61: PostgreSQLの冗長化について

DRBDの場合

フェールオーバーに時間がかかる

デメリット

Page 62: PostgreSQLの冗長化について

DRBDの場合

フェールオーバーに時間がかかる

負荷分散は出来ない

デメリット

Page 63: PostgreSQLの冗長化について

DRBDの場合

フェールオーバーに時間がかかる

負荷分散は出来ない

1対1の組み合わせ以外だと難しくなる

デメリット

Page 64: PostgreSQLの冗長化について

PostgreSQLの冗長化

1 pgpool-II

2 DRBD+Pacemaker

3 Replication+Pacemaker

冗長化の手法

Page 65: PostgreSQLの冗長化について

Replication

PostgreSQL 9.0 以降で利用できる

本体組み込みのレプリケーション機能

Page 66: PostgreSQLの冗長化について

Replicationの場合

DB1

DB2

アプリ

ApplicationはDB2も呼べる

仮想IP レプリケーション

Read-Onlyでアクセス可能

Page 67: PostgreSQLの冗長化について

Replicationの場合

DB1

DB2

アプリ

フェールオーバーして更新可能になる

仮想IP

Page 68: PostgreSQLの冗長化について

Replicationの場合

メリット

Page 69: PostgreSQLの冗長化について

Replicationの場合

フェールオーバーが早い

メリット

Page 70: PostgreSQLの冗長化について

Replicationの場合

フェールオーバーが早い

負荷分散が出来る

メリット

Page 71: PostgreSQLの冗長化について

Replicationの場合

フェールオーバーが早い

負荷分散が出来る

3台以上でも対応しやすい

メリット

Page 72: PostgreSQLの冗長化について

Replicationの場合

デメリット

Page 73: PostgreSQLの冗長化について

Replicationの場合

初期導入の技術コストは高い

デメリット

Page 74: PostgreSQLの冗長化について

Replicationの場合

初期導入の技術コストは高い

PostgreSQLの9系が必須

デメリット

Page 75: PostgreSQLの冗長化について

Replicationの場合

初期導入の技術コストは高い

PostgreSQLの9系が必須

レプリケーションのオーバーヘッドがある

デメリット

Page 76: PostgreSQLの冗長化について

PostgreSQLの冗長化

大事なこと

Page 77: PostgreSQLの冗長化について

PostgreSQLの冗長化

それぞれに特徴がある

大事なこと

Page 78: PostgreSQLの冗長化について

PostgreSQLの冗長化

それぞれに特徴がある

銀の弾丸はない

大事なこと

Page 79: PostgreSQLの冗長化について

PostgreSQLの冗長化

それぞれに特徴がある

銀の弾丸はない

要件に合わせて選ぶ

大事なこと

Page 80: PostgreSQLの冗長化について

続・大切なこと

サーバのNICとか

DB間のLANとか

サーバの設置箇所とか

単一障害点は他にもあり得る

Page 81: PostgreSQLの冗長化について

続・大切なこと

大規模災害とか

不正なデータが混入された時とか

ヒューマンエラーとか

冗長化してもバックアップは必要

Page 82: PostgreSQLの冗長化について

続・大切なこと

どの手法も日本語ドキュメントが豊富

ただし古い情報も多い

検証して詰まったらMLとかで聞くといい

情報の選択と検証が大事

Page 83: PostgreSQLの冗長化について

PostgreSQLの冗長化

単一障害点は他にもありえる

冗長化しても定期的なバックアップは必要

情報の選択と検証が大事

続・大事なこと

Page 84: PostgreSQLの冗長化について

PostgreSQLの冗長化

そしてデモ

Page 85: PostgreSQLの冗長化について

あじぇんだ

1 自己紹介

2 冗長化ってとは

3 PostgreSQLの冗長化

4 RDS For PostgreSQL

5 まとめ

Page 86: PostgreSQLの冗長化について

衝撃の事実稼働率99.999%?それAWSのRDSで出来るよ

Page 87: PostgreSQLの冗長化について

衝撃の事実

_人人人人人人人人人人_> それRDSで出来るよ < ̄Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

Page 88: PostgreSQLの冗長化について

AWS&RDSとは

AWS&RDSとは

Page 89: PostgreSQLの冗長化について

AWS&RDSとは

Amazon Web Servicesの略語です

AWS

Page 90: PostgreSQLの冗長化について

AWS&RDSとは

つまりAmazonが提供するIaaSです

AWS

Page 91: PostgreSQLの冗長化について

AWS&RDSとは

Relational Database Service

RDS

Page 92: PostgreSQLの冗長化について

AWS&RDSとは

AWS上でRDBを提供するサービスです

RDS

Page 93: PostgreSQLの冗長化について

RDS for PostgreSQLとは

RDSでPostgreSQLを構築します

Page 94: PostgreSQLの冗長化について

RDS for PostgreSQLとは

百聞(100説明)は一見(1デモ)に如かず

Page 95: PostgreSQLの冗長化について

RDS for PostgreSQLとは

デモなぅ

Page 96: PostgreSQLの冗長化について

RDS for PostgreSQLとは

デモだん!

Page 97: PostgreSQLの冗長化について

RDS for PostgreSQL

つまり、RDSを使うと冗長化出来るんです!

Page 98: PostgreSQLの冗長化について

RDS for PostgreSQL

RDSを使うと・・・

Page 99: PostgreSQLの冗長化について

RDS for PostgreSQL

• 冗長化構成を容易に実現できる(ただし有料

RDSを使うと・・・

Page 100: PostgreSQLの冗長化について

RDS for PostgreSQL

• 冗長化構成を容易に実現できる(ただし有料

• バックアップも自動取得(5分おき

RDSを使うと・・・

Page 101: PostgreSQLの冗長化について

RDS for PostgreSQL

• 冗長化構成を容易に実現できる(ただし有料

• バックアップも自動取得(5分おき

• 稼働率99.999%が実現出来る

RDSを使うと・・・

Page 102: PostgreSQLの冗長化について

RDS for PostgreSQL

• 冗長化構成を容易に実現できる(ただし有料

• バックアップも自動取得(5分おき

• 稼働率99.999%が実現出来る

• 運用コストが削減できる

RDSを使うと・・・

Page 103: PostgreSQLの冗長化について

RDS for PostgreSQL

注意点

Page 104: PostgreSQLの冗長化について

RDS for PostgreSQL

• 一部の拡張が使えない(日本語の全文検索とか

注意点

Page 105: PostgreSQLの冗長化について

RDS for PostgreSQL

• 一部の拡張が使えない(日本語の全文検索とか

• 参照の負荷分散は出来ない

注意点

Page 106: PostgreSQLの冗長化について

RDS for PostgreSQL

• 一部の拡張が使えない(日本語の全文検索とか

• 参照の負荷分散は出来ない

• 99.999%以上を実現するには工夫が必要

注意点

Page 107: PostgreSQLの冗長化について

RDS for PostgreSQL

• 一部の拡張が使えない(日本語の全文検索とか

• 参照の負荷分散は出来ない

• 99.999%以上を実現するには工夫が必要

• デフォルトのDBのロケールがCじゃない

注意点

Page 108: PostgreSQLの冗長化について

あじぇんだ

1 自己紹介

2 冗長化ってとは

3 PostgreSQLの冗長化

4 RDS For PostgreSQL

5 まとめ

Page 109: PostgreSQLの冗長化について

まとめ

DBの死=システムの死

Page 110: PostgreSQLの冗長化について

まとめ

トイ・ストーリー2は死にかけた

https://www.youtube.com/watch?feature=player_embedded&v=EL_g0tyaIeE

データを守ることはとても大切

Page 111: PostgreSQLの冗長化について

まとめ

出来る範囲で稼働率を決めて冗長化

Page 112: PostgreSQLの冗長化について

RDS for PostgreSQLの使い方

このデモの詳細はこちらにまとめてあります

AWSのPostgreSQL(RDS)を

使えるようになるまでの手順

http://soudai1025.blogspot.jp/2014/01/awspostgresqlrds.html

Page 113: PostgreSQLの冗長化について

まとめ

One more thing…

Page 114: PostgreSQLの冗長化について

告知

MySQL User Forum 大阪

2014年4月23日(水)12:30~17:00

Oracle主催のセミナー

http://soudai1025.blogspot.jp/2014/01/awspostgresqlrds.html

Page 115: PostgreSQLの冗長化について

告知

MySQL勉強会 in 大阪(第6回)

2014年4月24日(木)18:30~21:00

MySQLコミュニティのセミナー

http://atnd.org/events/49005

Page 116: PostgreSQLの冗長化について

告知

OSS-DB最新トレンド!データベース活用の最適解

2014年5月27日(火) 14:00~16:50

アシスト主催のセミナー

詳細のリンク

Page 117: PostgreSQLの冗長化について

Q&A

マサカリがあればどうぞ

Page 118: PostgreSQLの冗長化について

ご静聴ありがとうございました。