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

Responder a