postgresql 9.0 update ~ホット・スタンバイがやってきた!~

36
1 PostgreSQL 9.0 䜰䝑䝥䝕䞊䝖 䝩䝑䝖䞉䝇䝍䞁䝞䜲䛜䜔䛳䛶䛝䛯䟿 ᪥ᮏPostgreSQL䝴䞊䝄 / NTT OSS䝉䞁䝍 ᯈᇉ ㈗⿱ 2010.6.26 䜸䞊䝥䞁䝋䞊䝇䜹䞁䝣䜯䝺䞁䝇 2010 Hokkaido 䛾ㅮ₇㈨ᩱ䛷䛩䚹 http://www.ospn.jp/osc2010-do/ ᮏ㈨ᩱ䛿䜽䝸䜶䜲䝔䜱䝤䞉䝁䝰䞁䝈䞉䝷䜲䝉䞁䝇 䛾ୗ䛷බ㛤䛥䜜䛶䛔䜎䛩䚹

Upload: takahiro-itagaki

Post on 20-Jan-2015

10.780 views

Category:

Technology


8 download

DESCRIPTION

PostgreSQL 9.0の新機能を紹介し、特にホット・スタンバイ・レプリケーションについて、その動作や使い方を詳しく解説します。

TRANSCRIPT

Page 1: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

1

PostgreSQL 9.0

PostgreSQL / NTT OSS

2010.6.26

2010 Hokkaido http://www.ospn.jp/osc2010-do/

Page 2: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

2

PostgreSQL 9.0

/

Page 3: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

3

PostgreSQL 9.0

1977

20032004

2005

2006

20072008

2009

2000

19961986

PostgreSQL6.0

PostgreSQL6.0

7.37.3

7.47.4

IngressIngress

POSTGRESPOSTGRES

•Windows•• (PITR)

•Windows•• (PITR)

8.0

••2

••2

8.1

•CPU

••GIN:

•CPU

••GIN:

8.2

•HOT: •VACUUM

•HOT: •VACUUM

8.3

2010

Window•VACUUM• DBMS

Window•VACUUM• DBMS

8.

••• /

••• /

9.0 (2010/8 )

9.0 5

2 / 3

9.0.0

Page 4: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

4

PostgreSQL 9.0

1.

2. ( )

3. VACUUM FULL

/

LISTEN/NOTIFY /

Windows 64-bit

( URL )http://developer.postgresql.org/pgdocs/postgres/release-9-0.html

http://lets.postgresql.jp/documents/technical/9.0/

1 2 3

Page 5: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

5

1.

9.0 2

( )

VACUUM

/

PostgreSQL

••

==

Page 6: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

6

vs.

WAL pg_standbyarchive_command

( v8.4)

READ WRITE READ WRITE

(v9.0)

READ WRITE READ WRITE

wal receiverwal sender WAL

8.4

9.0 WAL( )

WAL( 1 )

9.09.0

Page 7: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

7

vs.

( )

DB( )DB

PK , DDL ※SQL

31010☆

2.32.09.0

pgpool-IISlony-I

※PK= , DDL=☆

Page 8: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

8

(UNIQUE)

“ ” “ ”

(EXCLUDE)

“ ” “ ”

GPS

2.

Page 9: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

9

text gist contrib/btree_gist

period ( 9.1 )

CREATE TABLE placement (

object text,

location box, --

EXCLUDE USING gist (location WITH &&)

);

CREATE TABLE reservation (

room text,

during period, -- { , }

EXCLUDE USING gist (room WITH =, during WITH &&)

);

&& “ ”

gist

Page 10: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

10

3. VACUUM FULL

VACUUM FULL

8.4 “ ”

9.0 “ ”

VACUUM ( )

FULL

FULL+TRUNCATE

VACUUM FULL UPVACUUM FULL UP

Page 11: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

11

PostgreSQL

,

,

,

,

9.0

8.4

-REINDEX

+CLUSTER

VACUUMFULL

VACUUM

VACUUM

VACUUM FULL (8.4) REINDEX

VACUUM FULL (9.0) CLUSTER REINDEXREINDEX

Page 12: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

12

+

Page 13: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

13

PostgreSQL 9.0

(HS)

(SR)WAL

8.3

8.0

9.0

2

Page 14: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

14

(PG8.0)

archive_command= cp, scp

rsync

Page 15: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

15

(PG8.0)

rsyncrestore_command= cp, scp

Page 16: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

16

(PG8.3)

restore_command= pg_standby

DB DB

Page 17: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

17

(PG9.0)

primary_conninfo

DB

OKrestore_command

= cp, scp

pg_standby

DB

Page 18: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

18

SQL ( )

master/standby /

(standby master )

Page 19: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

19

( OK)

SQL

Page 20: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

20

vs.

( )

( )

cf. MySQL 5.5 : Semi-Synchronous Replication

? ?

9.1

9.0

Page 21: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

21

WALWAL ?

① pg_current_xlog_location()

WAL / ② pg_last_xlog_receive_location()

③ pg_last_xlog_replay_location()

: ② ①

: ③ ①SQL

(32bit+32bit )

WAL

Page 22: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

22

pg_dump

– max_standby_delay

– /

– pg_start_backup() / pg_control

Page 23: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

23

Page 24: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

24

:

postgresql.conf

wal_level→ hot_standby, archive_mode→ on

archive_command

WAL

vacuum_defer_cleanup_age

VACUUM ?

max_wal_senders→

max_connections

wal_sender_delay

Page 25: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

25

:

postgresql.conf

hot_standby→ on?

max_standby_delay = 30s

recovery.conf

standby_mode = ‘on’?

off (WAL )

primary_conninfo

restore_command

WAL

trigger_file

pg_ctl stop→ start

recovery.conf

Page 26: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

26

: wal_level ( )

minimal ( )

WALCOPY TO, CREATE INDEX, CLUSTER, VACUUM FULL

8.4 archive_mode = off

archive

8.4 archive_mode = on

hot_standbyarchive

WAL

WAL

archive_mode

Page 27: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

27

max_standby_delay ( )

?

pg_dump

canceling statement due to conflict with recovery

terminating connection due to conflict with recovery

or

Page 28: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

28

vacuum_defer_cleanup_age ( )

?max_standby_delayVACUUM

PostgreSQL = UPDATE, DELETE

HOTVACUUM autovacuum HOT

Page 29: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

29

max_connections :

max_prepared_xacts : XA

max_locks_per_xact : �

max_connections =+ max_wal_senders

wal_level, archive_mode, max_wal_senders(pg_ctl reload)

Page 30: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

30

Page 31: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

31

EDIT $PGDATA1/postgresql.confEDIT $PGDATA1/pg_hba.confpg_ctl start -D $PGDATA1SELECT pg_start_backup(‘label’)rsync ( )

SELECT pg_stop_backup()

rsync ( )

chmod -R 0700mkdir $PGDATA2/pg_xlog

EDIT $PGDATA2/postgresql.confEDIT $PGDATA2/recovery.confpg_ctl start -D $PGDATA2

wal_level = hot_standbyarchive_mode = onarchive_command = 'cp %p /arclog/%f'max_wal_senders = 1

rsync -av –delete--exclude=pg_xlog --exclude=postmaster.pid$PGDATA1/* $BACKUP/pgdata

hot_standby = on※

restore_command = 'cp /arclog/%f %p'standby_mode = 'on'primary_conninfo = 'host=localhost'

host replication postgres ::1/128 trust

Page 32: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

32

trigger_file

pg_ctl stop

pg_ctl startstandby_mode = ‘on’pg_ctl stop

/

pg_ctl startstandby_mode = ‘off’

( )

Page 33: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

33

PostgreSQL “9.0”“ ”

“Let’s Postgres”

http://lets.postgresql.jp/documents/technical/9.0/1

SQL

=

Page 34: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

34

Page 35: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

35

PostgreSQL → 9.1

9.1

SQL/MED

SQL-DB

SQL/MED PostgreSQL

UPUP

SQL/MED DB

Page 36: PostgreSQL 9.0 Update ~ホット・スタンバイがやってきた!~

36

PostgreSQL 9.0