2008/11/25 Euler Taveira de Oliveira <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>>
Wagner Bonfiglio escreveu:
> Então a questão é se existe alguma maneira simplificada de rodar
duas
> instâncias de postgres na mesma máquina, apenas mandando executar
> novamente com outras configurações
>
Algumas dicas de como fazer isto.
*Conceito*
No PostgreSQL a primeira etapa para criação de um servidor de bancos de
dados é inicialização da área em disco para o armazenamento dos dados
(database cluster), ou no padrão do SQL ANSI o agrupamento de catálogos
(catalog cluster). Neste área ficam os arquivos de configuração e de
dados de um conjunto de bancos de dados gerenciados por uma única
instância do servidor de banco de dados. Os bancos de dados gerenciados
por um mesmo agrupamento compartilham as definições de configuração de
acesso, de memória, de área de armazenamento, de dicionário de dados e
outras definições. É possível ter vários agrupamentos / instâncias
executandos de forma concorrente na mesma máquina. Cada agrupamento pode
ter uma configuração diferente de memória, área em disco, etc.
Observação : para efeitos didáticos podemos dizer que o conceito
agrupamento de bancos de dados do PostgreSQL?
<https://wiki.serpro/unidades/supcd/artigos-tecnicos/bancos-de-dados/postgresql/AgrupamentoDeBancosDeDados/createform?page=PostgreSQL>
é equivalente ao conceito de instância do banco de dados Oracle.
A recomendação é a criação de agrupamentos diferentes de acordo com os
serviços a serem implantados, de preferência cada serviço deve possui
seu próprio agrupamento de banco de dados ou no casos de serviços
semelhantes, por exemplo do mesmo cliente, eles podem vir a compartilhar
o agrupamento.
*Padrão de nome de agrupamento / instância*
Em termos operacionais o agrupamento é o nome do diretório sobre o qual
os dados são armazenados. No diretório principal do agrupamento (PGDATA)
ficam os arquivos e diretórios de configuração do PostgreSQL?
<https://wiki.serpro/unidades/supcd/artigos-tecnicos/bancos-de-dados/postgresql/AgrupamentoDeBancosDeDados/createform?page=PostgreSQL>
O nome do agrupamento terá no máximo 15 caracteres e deve indicar a
finalidade do agrupamento.
Exemplo:
siape
siafi
O nome do diretório de dados (PGDATA) seguirá o padrão :
<filesystem>/pgsql/<nome do agrupamento>/
onde
<filesystem> é o nome do filesystem de acordo com o padrão definido.
Recomenda-se que o diretório do PGDATA seja criado no filesystem de
sequência 001.
<nome do agrupamento> é o nome do agrupamento de dados.
Exemplo :
/h21110001/pgsql/homologacao
/m99999001/pgsql/siape
*Criação do agrupamento*
O primeiro passo para a criação de uma agrupamento é criar o diretório
do agrupamento. Por motivo de segurança o diretório deve ter permissão
somente para o usuário postgres. Depois deve ser iniciado o agrupamento
com o utilitário initdb.
Exemplo :
mkdir -p /h30212001/pgsql/homol
chown postgres.postgres /h30212001/pgsql/homol
chmod -R 700 /h30212001/pgsql/homol
initdb -D /h30212001/pgsql/homol
*Inicialização da instância de bancos de dados*
O serviço do SGBD deve ser ativado usando os comandos postmaster ou pg_ctl.
Exemplo :
pg_ctl -D /h62122001/pgsql/hsiape -o "-p 5434" start
Nos sistemas operacionais Red Hat podemos configurar um serviço para
controlar a inicialização do servicos do postgres.
Para isto os seguintes passos são necessários :
1. Conecte como superusuário do sistema operacional (root)
2. Crie no diretório /etc/sysconfig/pgsql um arquivo texto contendo
as informaçoes do PGDATA do agrupamento de dados e a porta de conexão.
O padrão de nome deste arquivo é : postgres_<nome de do agrupamento>
3. Crie no diretório /etc/rc.d/init.d/ uma copia do arquivo postgres
colocando o mesmo nome do arquivo de configuração criado no
/etc/sysconfig/pgsql
4. Execute o comando chkconfig para cadastrar o novo serviço nos
arquivos de configuração do Red Hat.
5. Como usuário root podemos usar o script postgres para controlar os
serviços do postgres (start, stop, status, etc)
Exemplo : Configurar o sistema para iniciar o agrupamento homologacao
1. Criar o arquivo /etc/sysconfig/pgsql/postgres_homologacao com o
seguinte conteúdo
PGDATA=/h43344001/pgsql/homologacao PGPORT=5435
2. Criar uma cópia do arquivo /etc/rc.d/init.d/postgres
cp /etc/rc.d/init.d/postgres /etc/rc.d/init.d/postgres_homologacao
3. Cadastrar o serviço
chkconfig --add postgresql_homologacao
4. Agora o serviço pode ser controlado pelo script
/etc/rc.d/init.d/postgres_homologacao ou pelo utilitário service
/etc/rc.d/init.d/postgresql_homologacao start
/etc/rc.d/init.d/postgresql_homologacao stop
/etc/rc.d/init.d/postgresql_homologacao status
service postgresql_homologacao stop
service postgresql_homologacao start
service postgresql_homologacao status
Leandro Henrique Pereira Neto
Administração de bancos de dados - DBA/OC
SUPCD/CDSUT/CDSBB
"Esta mensagem do SERVIÇO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO), empresa
pública federal regida pelo disposto na Lei Federal nº 5.615, é enviada exclusivamente a
seu destinatário e pode conter informações confidenciais, protegidas por sigilo
profissional. Sua utilização desautorizada é ilegal e sujeita o infrator às penas da lei.
Se você a recebeu indevidamente, queira, por gentileza, reenviá-la ao emitente,
esclarecendo o equívoco."
"This message from SERVIÇO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO) -- a
government company established under Brazilian law (5.615/70) -- is directed exclusively
to its addressee and may contain confidential data, protected under professional secrecy
rules. Its unauthorized use is illegal and may subject the transgressor to the law's
penalties. If you're not the addressee, please send it back, elucidating the
failure."
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral