Upload
masao-fujii
View
2.662
Download
0
Embed Size (px)
DESCRIPTION
@SRA OSS 5周年記念セミナー https://www.sraoss.co.jp/event_seminar/2010/0910.php
Citation preview
Copyright(c)2010 NTT, Inc. All Rights Reserved. 2
目次
• レプリケーションとは?
• V9レプリケーションの特徴
• V9レプリケーションの使いどころ
• まとめ
Copyright(c)2010 NTT, Inc. All Rights Reserved. 3
レプリケーションとは?
• DBを自動的に複製する機能
– 複数のDBサーバが同じデータを持つという状況を作り出す
クライアントクライアント
更新更新
DBサーバ
更新
複製
DBサーバ
更新
中継サーバ
Copyright(c)2010 NTT, Inc. All Rights Reserved. 4
なぜレプリケーションが必要か?
• 高可用– 1台が故障しても、別サーバが処理を引き継げる
– システム全体としてDBサービスが停止するのを回避できる
• 負荷分散– SQL実行の負荷を複数のサーバに分散できる
– 負荷が一箇所に集中しないので、システム全体として性能向上できる
24時間365日システムを安定運用するのに必要
クライアントクライアント
SQL SQLSQL
高可用性 負荷分散
DBサーバ DBサーバ
Copyright(c)2010 NTT, Inc. All Rights Reserved. 5
これまでのPostgreSQLレプリケーション
• コミュニティは本体にレプリケーションを入れない方針– 幅広い用途を本体機能1つでカバーするのは不可能
– 用途ごとに外部ツールを用意した方が便利
• 多くのレプリケーションの外部ツールが存在
• シンプルなレプリケーションが本体に欲しいとの声– 基本的な用途で手軽に使えるレプリケーション
– 他DBMSは本体内蔵のレプリケーションあり
本体内蔵のレプリケーションを9.0で採用
Slony-I Bucardo
LondisteSequoia
PGCluster PostgresForest
Postgres-R
Mammoth
PyReplica
PL/Proxy
pgpool
rubyrepPostgres-XC
GridSQL
syncreplicator
Copyright(c)2010 NTT, Inc. All Rights Reserved. 6
ストリーミング・レプリケーション
更新情報
ホット・スタンバイ
PostgreSQL V9のレプリケーションとは?• PostgreSQL本体内蔵のレプリケーション
– シンプルなマスタ(原本)/スタンバイ(複製)型– 以下2つの機能をあわせてV9のレプリケーション
• ストリーミング・レプリケーション– マスタの更新内容を自動的にスタンバイに複製する機能
• ホット・スタンバイ– スタンバイで参照SQLを実行可能にする機能
クライアント
更新SQL 参照SQL
マスタ スタンバイ
Copyright(c)2010 NTT, Inc. All Rights Reserved. 8
マスタ/スタンバイ型
• マスタ1台– 更新/参照SQLを実行できる
• スタンバイ複数台– 参照SQLだけ実行できる– VACUUM等のメンテナンスもマスタでの実行結果がスタンバイに伝播– カスケード接続(スタンバイにスタンバイを接続)はNG
• マスタ/スタンバイ間はNW接続– 高価な共有ディスクは不要– 遠隔地にマスタとスタンバイを配置できる
更新情報
更新/参照SQL参照SQL
クライアント
マスタ
複数スタンバイ
スタンバイ
Copyright(c)2010 NTT, Inc. All Rights Reserved. 9
非同期レプリケーション
• マスタで完了した更新がスタンバイに届いていない可能性あり– フェイルオーバ時に直前(数ミリ秒前)の更新結果は失われるかも
– 直前の更新結果をスタンバイで参照できない
• レプリケーションのオーバーヘッドは小さい– スタンバイに更新情報が届くのを待たずに更新SQLを完了できる
• 同期レプリケーションは9.1に提案中– 完了した更新がスタンバイに届いていることを保証
クライアント
更新SQLOK
マスタ スタンバイ
更新SQLは成功
更新情報が届いていない
Copyright(c)2010 NTT, Inc. All Rights Reserved. 10
テーブル構成とSQL
• テーブル構成の変更不要– Slony-Iだとテーブルに主キーを追加する必要あり
– 既存システムのDBデータを再利用できる
• SQLの書き換え不要– マスタはPostgreSQLがサポートするすべてのSQLを実行可能
– Slony-IだとTRUNCATE等のDDLはレプリケーションされない
– 既存システムのAPを再利用できる
既存システムをレプリケーション構成に移行するのが容易
※スタンバイで参照SQLを実行する場合は注意– スタンバイが実行できるのは参照SQLのみ
– 更新SQLはマスタに、参照SQLはスタンバイにというSQLの振り分けをAPに実装する必要あり
– 振り分けを自動化するにはpgpool等の外部ツールと連携
Copyright(c)2010 NTT, Inc. All Rights Reserved. 11
レプリケーション対象
• DB全体をレプリケーション
– レプリケーションするテーブルは選択できない
DB全体 テーブルごと
マスタ スタンバイ マスタ スタンバイ
Copyright(c)2010 NTT, Inc. All Rights Reserved. 12
フェイルオーバとオンライン再組み込み
• 手動フェイルオーバ– スタンバイからマスタへの昇格
– 自動フェイルオーバにはpgpool等の製品との連携が必要
• オンライン再組み込み– マスタ無停止で新たにスタンバイを組み込める
クライアント
更新SQL
スタンバイ
クライアント
更新SQL
マスタマスタ
昇格 新スタンバイ
手動フェイルオーバ
オンライン再組み込み
Copyright(c)2010 NTT, Inc. All Rights Reserved. 13
PostgreSQL本体内蔵
• セットアップが容易– インストールするのはPostgreSQLだけ– 編集するのはPostgreSQLの設定ファイルのみ– セットアップ例が記載されたハンズオン資料:
http://www.postgresql.jp/wg/shikumi/postgresql17/shikumi17_materials/view
• Windows上のレプリケーション– PostgreSQLが動作するプラットホームであればどこでも利用可能
• 日本語ドキュメントの提供– PostgreSQLの日本語ドキュメントにレプリケーションも記載
• 活発なコミュニティ活動– 継続的な機能改善・バグ修正
Copyright(c)2010 NTT, Inc. All Rights Reserved. 15
参照スケールアウト
• スタンバイを増やして参照処理を負荷分散
更新より参照が多く、高い参照性能が求められるシステム– 例) Web系システム
– Slony-IやMySQLレプリケーションの置き換え
– スケールアップより一般的に低コスト
負荷に応じて拡張・縮小するシステム(スモールスタート)– オンラインでスタンバイを追加
複数スタンバイマスタ
更新SQL 参照SQL
クライアント
Copyright(c)2010 NTT, Inc. All Rights Reserved. 16
バッチサーバ
• バッチをスタンバイで走らせマスタを性能向上
オンライン業務中にバッチが走るシステム– 例) 月末のデータ集計、バックアップ
– 特にオンライン業務に性能要件があり、バッチによる影響を回避したい場合
クライアント
オンライン業務
スタンバイマスタ
バッチ
Copyright(c)2010 NTT, Inc. All Rights Reserved. 17
適さない使いどころ
• 更新スケールアウト– 参照より更新が多く、高い更新性能が求められるシステム– 更新SQLを実行可能なマスタは増やせないためNG
• 高可用– データの損失を許さないシステム– 非同期レプリケーションのためNG
• レプリケーション対象の選択– レプリケーション不要なデータが膨大なシステム– レプリケーション対象のテーブルを選択できないためNG
用途に応じてレプリケーション・ツールの使い分けが必要!
Copyright(c)2010 NTT, Inc. All Rights Reserved. 18
まとめ
• 本体組み込みのレプリケーションが9.0で採用
– マスタ/複数スタンバイの非同期レプリケーション
– 参照スケールアウトやバッチサーバに利用できる
– 手軽にレプリケーション環境を構築できる
更新情報
更新/参照SQL参照SQL
クライアント
マスタ
複数スタンバイ