quinta-feira, 7 de maio de 2015

Configurando Stream Replication No PostgreSQL 9

Esse tutorial explica como configurar 2 servidores PosgreSQL como master e slave com stream replication, é bem simples.
Cenário:
  • Master 192.168.1.200 (Debian 6 – PostgreSQL 9)
  • Slave 192.168.1.201 (Debian 6 – PostgreSQL 9)
Configuração do Master: 
No arquivo postgresql.conf, alterar as seguintes opções:
listen_address = ‘*’ # Reponderá por qualquer ip cadastrado no server
wal_level = hot_standby
max_wal_senders = 1 # Número maximo de servidores slave
wal_keep_segments = 32
No arquivo pg_hba.conf, adicione o servidor slave para replicação:
host    replication     postgres         192.168.1.201/32        trust
Configuração do Slave 
Criar o arquivo recovery.conf no mesmo diretório do arquivo postgresql.conf, com o seguinte conteúdo:
standby_mode = ‘on’
primary_conninfo = ‘host=192.168.1.200 port=5432 user=postgres’
trigger_file = ‘/tmp/pgsql.trigger’
Parar o PostgreSQL dos 2 servidores:
[postgres@server ~]$ /usr/local/pgsql/bin/pg_ctl stop -D /usr/local/pgsql/data/
[postgres@client ~]$ /usr/local/pgsql/bin/pg_ctl stop -D /usr/local/pgsql/data/
Agora você deverá copiar todo o conteúdo do data do master para o data do slaver:
[postgres@server ~]$ rsync -a -v -e ssh /usr/local/pgsql/data/ 192.168.1.201:/usr/local/pgsql/data/ –exclude postmaster.pid
E no arquivo postgresql.conf do slave, alterar as seguintes opções:
hot_standby = on
Agora você pode iniciar os 2 serviços do PostgreSQL:
[postgres@server ~]$ /usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data/
[postgres@client ~]$ /usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data/
Para verificar se a replicação está certa você pode ver assim:
No master:
[postgres@server ~]$ ps ax | grep sender
1573 ?        Ss     0:00 postgres: wal sender process postgres 192.168.1.201(53314) streaming 0/C0000D0
No slave:
[postgres@server ~]$ ps ax | grep receiver
3180 ?        Ss     0:00 postgres: wal receiver process   streaming 0/C0000D0
Testando a replicação:
No master crie uma tabela teste e popule:
postgres=# CREATE TABLE tabelaTeste (valor varchar(30));
postgres=# INSERT INTO tabelaTeste VALUES(‘teste1′);
postgres=# INSERT INTO tabelaTeste VALUES(‘teste2′);
Agora no server slave (stand by) veja se a tabela “tabelaTeste| foi criada:
postgres=# SELECT * FROM tabelaTeste;
Se o resultado for esse abaixo, está correto:
valor
—————
teste1
teste2
(2 rows)

Nenhum comentário:

Postar um comentário