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" startNos 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 [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
