Ele vasculhou a Web a procura de material sobre o pgpool-2. Encontrou vários artigos, tutoriais e receitas de bolo, mas nenhum conseguia fazer com que o replicador funcionasse. Foi então que decidi ajudá-lo, e a princípio fiz pra ele uma “receita de bolo”.
Eu não vou trazer nada de novo, e a maioria das informações aqui podem ser encontradas na própria Web, e inclusive me baseei no material do Dickson S. Guedes (http://guedesoft.net) apresentado no PGDay Brasília 2009.
A proposta deste tutorial é apresentar de forma prática a replicação com PgPoll-2. Então, não vou me ater aos detalhes teóricos sobre replicação, mas sim partir para a prática.
Antes de mais nada, precisamos que o PostgreSQL esteja instalado. Vamos fazer a instalação a partir dos fontes. A versão que utilizei foi a PostgreSQL 8.3.4, encontrado em http://wwwmaster.postgresql.org/download/mirrors-ftp/source/v8.3.4/postgresql-8.3.4.tar.bz2. Faça o download do arquivo e descompacte-o e compile o mesmo, seguindo os passos abaixo:
wget http://wwwmaster.postgresql.org/download/mirrors-ftp/source/v8.3.4/postgresql-8.3.4.tar.bz2 .
tar -xzjf postgresql-8.3.4.tar.bz2
cd postgresql-8.3.4
./configure && make && make install
Pronto, se não acontecer nenhum erro no processo vamos ter o PostgreSQL instalado na pasta /usr/local/pgsql.
Agora vamos instalar o pgpool. Eu utilizei a versão pgpool-II 2.2.2 encontrada em http://pgfoundry.org/frs/download.php/2191/pgpool-II-2.2.2.tar.gz.
Baixe, descompacte e compile o pgpool:
wget http://pgfoundry.org/frs/download.php/2191/pgpool-II-2.2.2.tar.gz .
tar -vzxf nomedoarquivo , exemplo: tar -vzxf pgpool-II-2.2.tar.gz
cd pgpool-II-2.2
./configure && make && make install
Depois de compilado, o pgpool cria alguns arquivos de exemplo para configuração. Vamos utilizar esses arquivos como base neste tutorial.
Acesse diretório: cd /usr/local/etc/ e faça uma copia dos seguintes arquivos:
cp pgpool.conf.sample pgpool.conf
cp pcp.conf.sample pcp.conf
cp pool_hba.conf.sample pool_hba.conf
Depois de ter feito nossa cópia de segurança, vamos começar alterando as configurações.
Edite arquivo pgpool.conf, e altere os parâmetros abaixo para preparar as configurações para replicação com o pgpool.
Em pgpool.conf
listen_addresses = '*'
port = 9999
pcp_port = 9898
replication_mode = true
load_balance_mode = true
Agora vamos editar o arquivo pcp.conf. Este arquivo é utilizado para armazenar o usuário e senha que o pgpool vai utilizar para se conectar ao banco de dados, e seus registros tem o formato:
USERID:MD5PASSWD
Exemplo:
postgres:e8a48653851e28c69d0506508fb27fc5
Se você não souber o MD5 da senha utilizada pelo usuário, basta utilizar o utilitário pg_md5. Por exemplo:
pg_md5 123456
O modo de autenticação do PostgreSQL deve ser colocado como “trust” no arquivo pg_hba.conf para o servidor que tenha o pgpool.
Para isto edite o arquivo pg_hba.conf
servidor_pgpool all all trust
Todas as outras formas de acesso podem ser bloqueadas, pois vamos utilizar o pgpool para controlar a autenticação.
Voltaremos agora para o arquivo pgpool.conf para informar as configurações de metadados da replicação do pgpool, que irár controlar todo o processo de replicação, para isto edite os seguintes parametros:
system_db_hostname = 'localhost'
system_db_port = 5432
system_db_dbname = 'pgpool'
system_db_schema = 'pgpool_catalog'
system_db_user = 'postgres'
system_db_password = '123456'
Agora vamos informar no arquivo pgpool.conf quais são os servidores de banco de dados que participarão da replicação, editando os parametros abaixo do arquivo pgpgool.conf:
backend_hostname, backend_port, backend_weight
Servidores de Banco Postgres que participarão do processo de replicação
backend_hostname0 = 'servidor_01'
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/usr/local/pgsql/data'
backend_hostname1 = 'servidor_02'
backend_port1 = 5432
backend_weight1 = 1
backend_data_directory1 = '/usr/local/pgsql/data2'
É fundamental para a replicação funcionar que todos os bancos tenham o usuário cadastrado com a mesma senha informados o arquivo pcp.conf, por isto nesta segunda instância de banco, vamos alterar a senha do usuário postgres para a senha informado na primeira instância de banco, que em nosso caso é '123456'. Para isto executaremos o seguinte comando após termos logado no banco da segunda instância.
# ALTER USER postgres WITH PASSWORD '123456';
Agora vamos criar o banco de dados onde o pgpool irá controlar todo o processo de replicação. Para isto vamos executar o script “system_db.sql“. Este arquivo encontra-se no diretório “/diretorio_descompactacao_pgpool/sql/system_db.sql”.
O banco de dados que vamos criar para controlar o processo de replicação deve ter o mesmo nome que definimos dentro do arquivo pgpool.conf. No nosso caso o banco é o pgpool definido no parâmetro “system_db_dbname = 'pgpool'”.
Então vamos conectar no banco de dados, e para isso podemos utilizar o comando.
~> /usr/local/pgsql/bin/psql -U postgres
Execute este comando DDL para criar o banco pgpool
create database pgpool;
Execute o script no prompt psql:
postgres=# \i /opt/pgpool-II-2.2/sql/system_db.sql
Após ter executado o scritpt acima, crie o diretório /var/run/pgpool/:
(como root)
mkdir -p /var/run/pgpool/
chown -R postgres:postgres /var/run/pgpool
chown -R postgres:postgres pcp.conf pgpool.conf pool_hba.conf
Agora execute o utilitário “pgpool”:
pgpool -n -d > /var/log/pgpool.log 2>&1 &
Importante: Execute o pgpool como usuário POSTGRES, e NÃO COMO ROOT!
Pronto, está replicando!!!
Para testarmos se a replicação está funcionando vamos conectar no pgpool II que é o responsável por executar as replicações nos bancos de dados.
~/bin> /usr/local/pgsql/bin/psql -U postgres -p 9999
Execute o comando:
create database varejao;
Depois se conecte aos bancos de dados e verifique se o database varejao foi criado corretamente em ambos!
Fontes:
http://pt.wikibooks.org/wiki/PostgreSQL_Pr%C3%A1tico/Replica%C3%A7%C3%A3o
http://pgpool.projects.postgresql.org/pgpool-II/doc/tutorial-en.html
http://postgresql.ribafs.org/
http://guialivre.governoeletronico.gov.br/guiaonline/guiacluster/node55.php
Olá amigo... Você começa explicando como instalar o Postgre e o Pgpool, mas nao fala em qual máquina eu tenho que instalar, se é no servidor principal ou no secundário... aí eu fiquei um pouco confuso... se tiver como vc poderia esclarecer melhor isso aí?
ResponderExcluir