19
PostgreSQL V9 レプリケーション解説 NTT OSSセンタ 藤井 雅雄

PostgreSQL V9 レプリケーション解説

Embed Size (px)

DESCRIPTION

@SRA OSS 5周年記念セミナー https://www.sraoss.co.jp/event_seminar/2010/0910.php

Citation preview

PostgreSQL V9レプリケーション解説

NTT OSSセンタ

藤井 雅雄

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. 7

特徴

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. 14

使いどころ

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

クライアント

マスタ

複数スタンバイ

Copyright(c)2010 NTT, Inc. All Rights Reserved. 19

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