PostgreSQLの冗長化について

Preview:

DESCRIPTION

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

Citation preview

PostgreSQLの冗長化の話

第三回 中国地方DB勉強会

What is it?

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

What is it?

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

What is it?

PostgreSQLの冗長化ってなによ?

What is it?

出来る!冗長化!!

What is it?

たったこれだけ

What is it?

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

What is it?

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

あじぇんだ

1 自己紹介

2 冗長化とは

3 PostgreSQLの冗長化

4 RDS For PostgreSQL

5 まとめ

あじぇんだ

1 自己紹介

2 冗長化とは

3 PostgreSQLの冗長化

4 RDS For PostgreSQL

5 まとめ

自己紹介

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

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

職場:まほろば工房

所属:日本PostgreSQLユーザ会

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

自己紹介

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

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

職場:まほろば工房

所属:日本PostgreSQLユーザ会

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

自己紹介

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

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

職場:まほろば工房

所属:日本PostgreSQLユーザ会

中国支部長やってます

あじぇんだ

1 自己紹介

2 冗長化とは

3 PostgreSQLの冗長化

4 RDS For PostgreSQL

5 まとめ

PostgreSQLとは

PostgreSQLとは

PostgreSQLとは

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

PostgreSQLとは

特 徴

PostgreSQLとは

高機能・高可用性

特 徴

PostgreSQLとは

高機能・高可用性

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

特 徴

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句

PostgreSQLとは

高機能・高可用性

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

コミュニティが活発

特 徴

冗長化とは

高可用性を実現すること

冗長化とは

一部の設備が故障しても

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

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

冗長化とは

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

冗長化とは

稼働率 年間停止時間

90% 36.5日

99% 3.65日

99.9% 8.7時間

99.99% 52分

99.999% 5分

99.9999% 32秒

冗長化とは

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

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

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

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

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

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

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

冗長化とは

今日は99.999%を目指します

冗長化とは

今日は99.999%を目指します

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

あじぇんだ

1 自己紹介

2 冗長化とは

3 PostgreSQLの冗長化

4 RDS For PostgreSQL

5 まとめ

PostgreSQLの冗長化

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

PostgreSQLの冗長化

冗長化の手法

PostgreSQLの冗長化

1 pgpool-II

冗長化の手法

PostgreSQLの冗長化

1 pgpool-II

2 DRBD+Pacemaker

冗長化の手法

PostgreSQLの冗長化

1 pgpool-II

2 DRBD+Pacemaker

3 Replication+Pacemaker

冗長化の手法

PostgreSQLの冗長化

1 pgpool-II

2 DRBD+Pacemaker

3 Replication+Pacemaker

冗長化の手法

pgpool-II

PostgreSQLとクライアントの間で

稼働するミドルウェア

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

pgpool-IIの場合

DB1

DB2

アプリ 一つのDBに見える

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

更新は両方に行う

参照は色々出来る

pgpool-II

pgpool-IIの場合

DB1

DB2

アプリ 一つのDBに見える

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

pgpool-II

pgpool-IIの場合

DB1

DB2

アプリ 一つのDBに見える

pgpool-IIが単一障害点

pgpool-II

pgpool-IIの場合

DB1

DB2

アプリ

pgpool-IIの冗長化もできる

仮想IP

pgpool-II

pgpool-II

pgpool-IIの場合

DB1

DB2

アプリ

障害時に切り替え

仮想IP

pgpool-II

pgpool-II

pgpool-IIの場合

メリット

pgpool-IIの場合

高可用性

メリット

pgpool-IIの場合

高可用性

pgpool-IIが多機能

メリット

pgpool-IIの場合

高可用性

pgpool-IIが多機能

ドキュメントが豊富

メリット

pgpool-IIの場合

デメリット

pgpool-IIの場合

構成が複雑になる

デメリット

pgpool-IIの場合

構成が複雑になる

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

デメリット

pgpool-IIの場合

構成が複雑になる

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

多機能⇔使い分けが大変

デメリット

PostgreSQLの冗長化

1 pgpool-II

2 DRBD+Pacemaker

3 Replication+Pacemaker

冗長化の手法

DRBD

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

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

Pacemaker

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

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

DRBDの場合

HDD1

DB1

DB2

アプリ

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

HDD2

仮想IPミラーリング

DRBDの場合

HDD1

DB1

DB2

アプリ

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

HDD2

仮想IP

DRBDの場合

メリット

DRBDの場合

構成がシンプル

メリット

DRBDの場合

構成がシンプル

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

メリット

DRBDの場合

構成がシンプル

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

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

メリット

DRBDの場合

デメリット

DRBDの場合

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

デメリット

DRBDの場合

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

負荷分散は出来ない

デメリット

DRBDの場合

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

負荷分散は出来ない

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

デメリット

PostgreSQLの冗長化

1 pgpool-II

2 DRBD+Pacemaker

3 Replication+Pacemaker

冗長化の手法

Replication

PostgreSQL 9.0 以降で利用できる

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

Replicationの場合

DB1

DB2

アプリ

ApplicationはDB2も呼べる

仮想IP レプリケーション

Read-Onlyでアクセス可能

Replicationの場合

DB1

DB2

アプリ

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

仮想IP

Replicationの場合

メリット

Replicationの場合

フェールオーバーが早い

メリット

Replicationの場合

フェールオーバーが早い

負荷分散が出来る

メリット

Replicationの場合

フェールオーバーが早い

負荷分散が出来る

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

メリット

Replicationの場合

デメリット

Replicationの場合

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

デメリット

Replicationの場合

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

PostgreSQLの9系が必須

デメリット

Replicationの場合

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

PostgreSQLの9系が必須

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

デメリット

PostgreSQLの冗長化

大事なこと

PostgreSQLの冗長化

それぞれに特徴がある

大事なこと

PostgreSQLの冗長化

それぞれに特徴がある

銀の弾丸はない

大事なこと

PostgreSQLの冗長化

それぞれに特徴がある

銀の弾丸はない

要件に合わせて選ぶ

大事なこと

続・大切なこと

サーバのNICとか

DB間のLANとか

サーバの設置箇所とか

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

続・大切なこと

大規模災害とか

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

ヒューマンエラーとか

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

続・大切なこと

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

ただし古い情報も多い

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

情報の選択と検証が大事

PostgreSQLの冗長化

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

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

情報の選択と検証が大事

続・大事なこと

PostgreSQLの冗長化

そしてデモ

あじぇんだ

1 自己紹介

2 冗長化ってとは

3 PostgreSQLの冗長化

4 RDS For PostgreSQL

5 まとめ

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

衝撃の事実

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

AWS&RDSとは

AWS&RDSとは

AWS&RDSとは

Amazon Web Servicesの略語です

AWS

AWS&RDSとは

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

AWS

AWS&RDSとは

Relational Database Service

RDS

AWS&RDSとは

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

RDS

RDS for PostgreSQLとは

RDSでPostgreSQLを構築します

RDS for PostgreSQLとは

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

RDS for PostgreSQLとは

デモなぅ

RDS for PostgreSQLとは

デモだん!

RDS for PostgreSQL

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

RDS for PostgreSQL

RDSを使うと・・・

RDS for PostgreSQL

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

RDSを使うと・・・

RDS for PostgreSQL

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

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

RDSを使うと・・・

RDS for PostgreSQL

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

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

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

RDSを使うと・・・

RDS for PostgreSQL

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

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

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

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

RDSを使うと・・・

RDS for PostgreSQL

注意点

RDS for PostgreSQL

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

注意点

RDS for PostgreSQL

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

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

注意点

RDS for PostgreSQL

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

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

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

注意点

RDS for PostgreSQL

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

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

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

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

注意点

あじぇんだ

1 自己紹介

2 冗長化ってとは

3 PostgreSQLの冗長化

4 RDS For PostgreSQL

5 まとめ

まとめ

DBの死=システムの死

まとめ

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

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

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

まとめ

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

RDS for PostgreSQLの使い方

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

AWSのPostgreSQL(RDS)を

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

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

まとめ

One more thing…

告知

MySQL User Forum 大阪

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

Oracle主催のセミナー

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

告知

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

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

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

http://atnd.org/events/49005

告知

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

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

アシスト主催のセミナー

詳細のリンク

Q&A

マサカリがあればどうぞ

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

Recommended