SlideShare a Scribd company logo
Ap Camp: 15/10/2011



         Postgresql
Binary Streaming Replication
        www.pgtraining.com
          Enrico Pirozzi
Agenda


●   Ha: High Availability
Agenda


●   Ha: High Availability
●   Hot Backup - P.I.T.R. : Point in time recovery
Agenda


●   Ha: High Availability
●   Hot Backup - P.I.T.R. : Point in time recovery
●   Streaming Replication
Agenda


●   Ha: High Availability
●   Hot Backup - P.I.T.R. : Point in time recovery
●   Streaming Replication
●   Testing
High Availability

●   Cosa intendiamo per HA?
High Availability

●   Cosa intendiamo per HA?
●   Si intende alta disponibilità di un servizio
High Availability

●   Cosa intendiamo per HA?
●   Si intende alta disponibilità di un servizio
High Availability

●   Cosa intendiamo per HA?
●   Si intende alta disponibilità di un servizio
Hot Backup

●   Backup a caldo
Hot Backup

●   Backup a caldo
●   Tecnica utilizzata quando il database deve
    essere in esecuzione nel mentre che il backup
    viene effettuato
Point in time recovery

●   PITR: rappresenta la possibiltà di far tornare un
    cluster db in punto def nito nel tempo, sia esso
                          i
    presente che futuro
Point in time recovery

●   PITR: rappresenta la possibiltà di far tornare un
    cluster db in punto def nito nel tempo, sia esso
                          i
    presente che futuro
●   E' disponibile in maniera stabile dalla versione
    8.2x in poi
Point in time recovery

●   PITR: rappresenta la possibiltà di far tornare un
    cluster db in punto def nito nel tempo, sia esso
                            i
    presente che futuro
●   E' disponibile in maniera stabile dalla versione
    8.2x in poi
●   Questa tecnica utilizza un backup completo di
    un cluster database e i WAL (write ahead log)
    trovati nella directory pg_xlog
Point in time recovery



Server A                       Server B




               Copia dei dati
                     +
           Trasferimento dei WAL
Domande ??????
Streaming Replication



Master           Standby Server

10.0.0.3            10.0.0.4
Streaming Replication

● Abilita i WAL record ad essere ricevuti
ed eseguiti dalla macchina in standby nel
mentre la macchina master li genera.
Streaming Replication

● Abilita i WAL record ad essere ricevuti
ed eseguiti dalla macchina in standby nel
mentre la macchina master li genera
● Abilita le query in sola lettura sul server
standby
Streaming Replication

● Abilita i WAL record ad essere ricevuti
ed eseguiti dalla macchina in standby nel
mentre la macchina master li genera
● Abilita le query in sola lettura sul server
standby
●   Replicazione Asincrona
Streaming Replication
Streaming Replication




   Configurazione
Streaming Replication
Modifica del postgresql.conf
Macchina Master

●   listen_address = '*'
Streaming Replication
Modifica del postgresql.conf
Macchina Master

●   listen_address = '*'
●   wal_level = hot_standby
Streaming Replication
Modifica del postgresql.conf
Macchina Master

●   listen_address = '*'
●   wal_level = hot_standby
●   max_wal_senders = 3
Streaming Replication

Modifica del pg_hba.conf
Macchina Master

host   replication   all   10.0.0.4/32   trust
Streaming Replication

Modifica del postgresql.conf
Macchina Standby

●   hot_standby = on
Streaming Replication

Modifica del recovery.conf
Macchina Standby

●   standby_mode = 'on'
●   primary_conninfo = 'host=10.0.0.3'
Streaming Replication

Modifica del recovery.conf
Macchina Standby

●   standby_mode = 'on'
●   primary_conninfo = 'host=10.0.0.3'
●   trigger_file =
    '/usr/local/pgsql/data/failover'
Streaming Replication

Sincronizzazione del db remoto
Macchina Master

●   psql -U postgres
Streaming Replication

Sincronizzazione del db remoto
Macchina Master

●   psql -U postgres
●   # select pg_start_backup('clone',true);
Streaming Replication

Sincronizzazione del db remoto
Macchina Master

●    psql -U postgres
●    # select pg_start_backup('clone',true);
●   rsync -av --exclude pg_xlog --exclude
    postgresql.conf --exclude postgresql.pid 
    data/* 192.168.0.2:/usr/local/pgsql/data/
Streaming Replication

Sincronizzazione del db remoto
Macchina Master

●   psql -U postgres
●   # select pg_stop_backup();
Streaming Replication

Sincronizzazione del db remoto
Macchina Master

●   psql -U postgres
●   # select pg_stop_backup();
●   rsync -av data/pg_xlog
    192.168.0.2:/var/lib/postgresql/data/
Streaming Replication

Sincronizzazione del db remoto
Macchina Standby

●   /etc/rc.d/postgres start (Bsd)
●   /etc/init.d/postgres start (Debian)
Streaming Replication



           Al Lavoro ???
Contatti




       Enrico Pirozzi
http://www.pgtraining.com
   info@pgtraining.com

More Related Content

What's hot

PostgreSQL: Archtettura per la gestione dei pro
PostgreSQL: Archtettura per la gestione dei proPostgreSQL: Archtettura per la gestione dei pro
PostgreSQL: Archtettura per la gestione dei proEnrico Pirozzi
 
Glusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatileGlusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatile
Ivan Rossi
 
Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...
Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...
Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...KohaGruppoItaliano
 
Log files - Approcci al Troubleshooting
 Log files - Approcci al Troubleshooting Log files - Approcci al Troubleshooting
Log files - Approcci al Troubleshooting
Fulvio Corno
 
Agrillo Fedora 11 release party 18 giugno 2009
Agrillo Fedora 11 release party 18 giugno 2009Agrillo Fedora 11 release party 18 giugno 2009
Agrillo Fedora 11 release party 18 giugno 2009Giuseppe Agrillo
 
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL ClusterMySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
Par-Tec S.p.A.
 
Messa in rete
Messa in reteMessa in rete
Messa in rete
PgTraining
 
Tom EE appunti devoxx2012
Tom EE   appunti devoxx2012 Tom EE   appunti devoxx2012
Tom EE appunti devoxx2012 Nicola Pedot
 
Presentazione - Algoritmo di Dijkstra
Presentazione - Algoritmo di DijkstraPresentazione - Algoritmo di Dijkstra
Presentazione - Algoritmo di Dijkstra
MassimoPalmisano
 
Bookalive Klaus Kempf Presentazione: Record, Zend e archiviazione
Bookalive Klaus Kempf Presentazione: Record, Zend e archiviazioneBookalive Klaus Kempf Presentazione: Record, Zend e archiviazione
Bookalive Klaus Kempf Presentazione: Record, Zend e archiviazione
Informamuse srl
 
Sottoli in the cloud
Sottoli in the cloudSottoli in the cloud
Sottoli in the clouddema
 
8 Linux Comandi Di Sistema
8 Linux Comandi Di Sistema8 Linux Comandi Di Sistema
8 Linux Comandi Di SistemaMauro Ferrigno
 
Cloud storage in azienda: perche` Riak ci e` piaciuto
Cloud storage in azienda: perche` Riak ci e` piaciutoCloud storage in azienda: perche` Riak ci e` piaciuto
Cloud storage in azienda: perche` Riak ci e` piaciuto
BioDec
 
SAL 2018 - DevOps
SAL 2018 - DevOpsSAL 2018 - DevOps
SAL 2018 - DevOps
Mauro Sanfilippo
 
Richiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatoriRichiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatori
Fulvio Corno
 
Scheduling In Linux
Scheduling In LinuxScheduling In Linux
Scheduling In Linux
Marcello Missiroli
 
J huery
J hueryJ huery
J huery
nicrizzo
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioBack to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizio
MongoDB
 

What's hot (20)

PostgreSQL: Archtettura per la gestione dei pro
PostgreSQL: Archtettura per la gestione dei proPostgreSQL: Archtettura per la gestione dei pro
PostgreSQL: Archtettura per la gestione dei pro
 
Glusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatileGlusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatile
 
Prova In Itinere
Prova In ItinereProva In Itinere
Prova In Itinere
 
Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...
Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...
Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...
 
Log files - Approcci al Troubleshooting
 Log files - Approcci al Troubleshooting Log files - Approcci al Troubleshooting
Log files - Approcci al Troubleshooting
 
Agrillo Fedora 11 release party 18 giugno 2009
Agrillo Fedora 11 release party 18 giugno 2009Agrillo Fedora 11 release party 18 giugno 2009
Agrillo Fedora 11 release party 18 giugno 2009
 
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL ClusterMySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
 
Messa in rete
Messa in reteMessa in rete
Messa in rete
 
Tom EE appunti devoxx2012
Tom EE   appunti devoxx2012 Tom EE   appunti devoxx2012
Tom EE appunti devoxx2012
 
Presentazione - Algoritmo di Dijkstra
Presentazione - Algoritmo di DijkstraPresentazione - Algoritmo di Dijkstra
Presentazione - Algoritmo di Dijkstra
 
Bookalive Klaus Kempf Presentazione: Record, Zend e archiviazione
Bookalive Klaus Kempf Presentazione: Record, Zend e archiviazioneBookalive Klaus Kempf Presentazione: Record, Zend e archiviazione
Bookalive Klaus Kempf Presentazione: Record, Zend e archiviazione
 
Sottoli in the cloud
Sottoli in the cloudSottoli in the cloud
Sottoli in the cloud
 
Linux Day 2009 LAMP HowTo
Linux Day 2009 LAMP HowToLinux Day 2009 LAMP HowTo
Linux Day 2009 LAMP HowTo
 
8 Linux Comandi Di Sistema
8 Linux Comandi Di Sistema8 Linux Comandi Di Sistema
8 Linux Comandi Di Sistema
 
Cloud storage in azienda: perche` Riak ci e` piaciuto
Cloud storage in azienda: perche` Riak ci e` piaciutoCloud storage in azienda: perche` Riak ci e` piaciuto
Cloud storage in azienda: perche` Riak ci e` piaciuto
 
SAL 2018 - DevOps
SAL 2018 - DevOpsSAL 2018 - DevOps
SAL 2018 - DevOps
 
Richiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatoriRichiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatori
 
Scheduling In Linux
Scheduling In LinuxScheduling In Linux
Scheduling In Linux
 
J huery
J hueryJ huery
J huery
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioBack to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizio
 

Viewers also liked

PostgreSQL: Transazioni e locking
PostgreSQL: Transazioni e lockingPostgreSQL: Transazioni e locking
PostgreSQL: Transazioni e locking
Enrico Pirozzi
 
PostgreSQL: Integrità dei dati
PostgreSQL: Integrità dei datiPostgreSQL: Integrità dei dati
PostgreSQL: Integrità dei dati
Enrico Pirozzi
 
Vagrant e Docker a confronto;scegliere ed iniziare
Vagrant e  Docker a confronto;scegliere ed iniziareVagrant e  Docker a confronto;scegliere ed iniziare
Vagrant e Docker a confronto;scegliere ed iniziare
Daniele Mondello
 
Automation Night (Docker)
Automation Night (Docker)Automation Night (Docker)
Automation Night (Docker)
Giuliano Latini
 
PostgreSQL: Approximated searches
PostgreSQL: Approximated searchesPostgreSQL: Approximated searches
PostgreSQL: Approximated searches
Enrico Pirozzi
 
Livin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzioneLivin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzione
giacomos
 
Docker Fudamentals
Docker FudamentalsDocker Fudamentals
Docker Fudamentals
mvetro
 
Architetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerArchitetture a Microservizi con Docker Container
Architetture a Microservizi con Docker Container
Roberto Messora
 

Viewers also liked (8)

PostgreSQL: Transazioni e locking
PostgreSQL: Transazioni e lockingPostgreSQL: Transazioni e locking
PostgreSQL: Transazioni e locking
 
PostgreSQL: Integrità dei dati
PostgreSQL: Integrità dei datiPostgreSQL: Integrità dei dati
PostgreSQL: Integrità dei dati
 
Vagrant e Docker a confronto;scegliere ed iniziare
Vagrant e  Docker a confronto;scegliere ed iniziareVagrant e  Docker a confronto;scegliere ed iniziare
Vagrant e Docker a confronto;scegliere ed iniziare
 
Automation Night (Docker)
Automation Night (Docker)Automation Night (Docker)
Automation Night (Docker)
 
PostgreSQL: Approximated searches
PostgreSQL: Approximated searchesPostgreSQL: Approximated searches
PostgreSQL: Approximated searches
 
Livin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzioneLivin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzione
 
Docker Fudamentals
Docker FudamentalsDocker Fudamentals
Docker Fudamentals
 
Architetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerArchitetture a Microservizi con Docker Container
Architetture a Microservizi con Docker Container
 

Similar to Ap Camp 2011

100526 Sa 1.1 Platespin Forge Webinar (2)
100526 Sa 1.1 Platespin Forge Webinar (2)100526 Sa 1.1 Platespin Forge Webinar (2)
100526 Sa 1.1 Platespin Forge Webinar (2)
antonio_tonani
 
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Codemotion
 
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi ClusterCodemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Matteo Baccan
 
Kubernetes Core Concepts
Kubernetes Core ConceptsKubernetes Core Concepts
Kubernetes Core Concepts
Francesco Dammacco
 
Ha solutions su power i
Ha solutions su power iHa solutions su power i
Ha solutions su power i
PRAGMA PROGETTI
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Steve Maraspin
 
Atempo hyperstream server
Atempo hyperstream serverAtempo hyperstream server
Atempo hyperstream server
Pivari.com
 
Kubernetes as HA time series server, a proposal
Kubernetes as HA time series server, a proposalKubernetes as HA time series server, a proposal
Kubernetes as HA time series server, a proposal
Giuliano Latini
 
Benchmarking Cloud Native PostgreSQL
Benchmarking Cloud Native PostgreSQLBenchmarking Cloud Native PostgreSQL
Benchmarking Cloud Native PostgreSQL
EDB
 
Webminar del 12.03.2012
Webminar del 12.03.2012Webminar del 12.03.2012
Webminar del 12.03.2012
PgTraining
 
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Codemotion
 
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
Matteo Baccan
 
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
Imola Informatica
 
Hadoop analyzerJR
Hadoop analyzerJRHadoop analyzerJR
Hadoop analyzerJR
Simone Romano
 
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFSLa nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
Morlini Gabriele
 
SVN/TRAC
SVN/TRACSVN/TRAC
SVN/TRAC
Diego La Monica
 
Il Cloud chiavi in mano | Giampaolo Sticotti (CA Technologies)
Il Cloud chiavi in mano | Giampaolo Sticotti (CA Technologies)Il Cloud chiavi in mano | Giampaolo Sticotti (CA Technologies)
Il Cloud chiavi in mano | Giampaolo Sticotti (CA Technologies)
CA Technologies Italia
 
Alla scoperta di gRPC
Alla scoperta di gRPCAlla scoperta di gRPC
Alla scoperta di gRPC
Andrea Dottor
 

Similar to Ap Camp 2011 (20)

100526 Sa 1.1 Platespin Forge Webinar (2)
100526 Sa 1.1 Platespin Forge Webinar (2)100526 Sa 1.1 Platespin Forge Webinar (2)
100526 Sa 1.1 Platespin Forge Webinar (2)
 
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
 
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi ClusterCodemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
 
Kubernetes Core Concepts
Kubernetes Core ConceptsKubernetes Core Concepts
Kubernetes Core Concepts
 
Ha solutions su power i
Ha solutions su power iHa solutions su power i
Ha solutions su power i
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
 
Atempo hyperstream server
Atempo hyperstream serverAtempo hyperstream server
Atempo hyperstream server
 
Kubernetes as HA time series server, a proposal
Kubernetes as HA time series server, a proposalKubernetes as HA time series server, a proposal
Kubernetes as HA time series server, a proposal
 
Benchmarking Cloud Native PostgreSQL
Benchmarking Cloud Native PostgreSQLBenchmarking Cloud Native PostgreSQL
Benchmarking Cloud Native PostgreSQL
 
Webminar del 12.03.2012
Webminar del 12.03.2012Webminar del 12.03.2012
Webminar del 12.03.2012
 
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
 
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
 
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
 
Service Backup Online
Service Backup OnlineService Backup Online
Service Backup Online
 
Hadoop analyzerJR
Hadoop analyzerJRHadoop analyzerJR
Hadoop analyzerJR
 
Quickr In Real Life - casi di successo di QuickR
 Quickr In Real Life - casi di successo di QuickR Quickr In Real Life - casi di successo di QuickR
Quickr In Real Life - casi di successo di QuickR
 
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFSLa nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
 
SVN/TRAC
SVN/TRACSVN/TRAC
SVN/TRAC
 
Il Cloud chiavi in mano | Giampaolo Sticotti (CA Technologies)
Il Cloud chiavi in mano | Giampaolo Sticotti (CA Technologies)Il Cloud chiavi in mano | Giampaolo Sticotti (CA Technologies)
Il Cloud chiavi in mano | Giampaolo Sticotti (CA Technologies)
 
Alla scoperta di gRPC
Alla scoperta di gRPCAlla scoperta di gRPC
Alla scoperta di gRPC
 

Ap Camp 2011