КОЛОНТИТУЛ: ТЕМА ПРЕЗЕНТАЦИИ 
PostgreSQL: Master — Slave и PITR 
Сергей Бурладян 
sburladyan@avito.ru 
2014, Москва
КОЛОНТИТУЛ: ТЕМА ПРЕЗЕНТАЦИИ 2 
Failover 
● master 
● slave 
● pgbouncer master 
● create table demo(txtime timestamptz default now(), v text); 
● while sleep 5; do psql -At -d demo -p 6543 -c "insert into demo (v) 
values (1) returning txtime" 
● failover.sh 
● kill -9 master 
● Failover: pgbouncer slave, promote slave
КОЛОНТИТУЛ: ТЕМА ПРЕЗЕНТАЦИИ 3 
failover.sh
КОЛОНТИТУЛ: ТЕМА ПРЕЗЕНТАЦИИ 4 
Confs 
postgresql.conf 
- wal_level = hot_standby 
- archive_command = on 
- max_wal_senders = 5 
- hot_standby = on 
- log_min_messages = debug1 
pg_hba.conf 
- replication 
pgbouncer master 
- pool_mode = transaction 
- demo = host=localhost port=5432 
recovery.conf 
- restore_command 
- standby_mode = on 
- primary_conninfo 
pgbouncer slave 
- pool_mode = transaction 
- demo = host=localhost port=5433 
failover.sh 
- pg_isready (9.3+)
КОЛОНТИТУЛ: ТЕМА ПРЕЗЕНТАЦИИ 5 
PITR 
● master 
● slave 
● pg_basebackup 
● while sleep 5; do psql -At -d demo -p 5432 -c "insert into demo (v) 
values (1) returning txtime" 
● drop table demo; 
● cp -a backup master2 
● PITR: INSERT timestamp
КОЛОНТИТУЛ: ТЕМА ПРЕЗЕНТАЦИИ 6 
● https://github.com/eshkinkot/avito_pgmeetup/tree/2014-10-15/ 
– bin/failover.sh — скрипт переключения 
– etc/pgbouncer.init-* — конфиг. файлы pgbouncer 
– bin/init_demo — алиасы для демонстрации 
● База для демонстрации 
– create database demo 
– create table demo(txtime timestamptz default now(), v text); 
● Клиент 
– while sleep 5; do psql -At -d demo -p 5432 -c "insert into demo (v) values (1) 
returning txtime"
КОЛОНТИТУЛ: ТЕМА ПРЕЗЕНТАЦИИ 
Спасибо за внимание! 
Сергей Бурладян 
sburladyan@avito.ru 
БЦ «Белые сады», ул. Лесная, 7, Москва, 125047

2014.10.15 Сергей Бурладян, Avito.ru

  • 1.
    КОЛОНТИТУЛ: ТЕМА ПРЕЗЕНТАЦИИ PostgreSQL: Master — Slave и PITR Сергей Бурладян sburladyan@avito.ru 2014, Москва
  • 2.
    КОЛОНТИТУЛ: ТЕМА ПРЕЗЕНТАЦИИ2 Failover ● master ● slave ● pgbouncer master ● create table demo(txtime timestamptz default now(), v text); ● while sleep 5; do psql -At -d demo -p 6543 -c "insert into demo (v) values (1) returning txtime" ● failover.sh ● kill -9 master ● Failover: pgbouncer slave, promote slave
  • 3.
  • 4.
    КОЛОНТИТУЛ: ТЕМА ПРЕЗЕНТАЦИИ4 Confs postgresql.conf - wal_level = hot_standby - archive_command = on - max_wal_senders = 5 - hot_standby = on - log_min_messages = debug1 pg_hba.conf - replication pgbouncer master - pool_mode = transaction - demo = host=localhost port=5432 recovery.conf - restore_command - standby_mode = on - primary_conninfo pgbouncer slave - pool_mode = transaction - demo = host=localhost port=5433 failover.sh - pg_isready (9.3+)
  • 5.
    КОЛОНТИТУЛ: ТЕМА ПРЕЗЕНТАЦИИ5 PITR ● master ● slave ● pg_basebackup ● while sleep 5; do psql -At -d demo -p 5432 -c "insert into demo (v) values (1) returning txtime" ● drop table demo; ● cp -a backup master2 ● PITR: INSERT timestamp
  • 6.
    КОЛОНТИТУЛ: ТЕМА ПРЕЗЕНТАЦИИ6 ● https://github.com/eshkinkot/avito_pgmeetup/tree/2014-10-15/ – bin/failover.sh — скрипт переключения – etc/pgbouncer.init-* — конфиг. файлы pgbouncer – bin/init_demo — алиасы для демонстрации ● База для демонстрации – create database demo – create table demo(txtime timestamptz default now(), v text); ● Клиент – while sleep 5; do psql -At -d demo -p 5432 -c "insert into demo (v) values (1) returning txtime"
  • 7.
    КОЛОНТИТУЛ: ТЕМА ПРЕЗЕНТАЦИИ Спасибо за внимание! Сергей Бурладян sburladyan@avito.ru БЦ «Белые сады», ул. Лесная, 7, Москва, 125047