# PostgreSQL Prático/Instalação/No Linux

O PostgreSQL roda em uma conta de usuário, chamada de postgres. Esta conta não é a mesma dos utilizadores das bases de dados: os usuários da base de dados devem ser criados pelo próprio PostgreSQL.

## Pré-requisitos para instalação do PostgreSQL num UNIX

make do GNU (gmake ou make)
compilador C, preferido GCC mais recente
gzip
biblioteca readline (para psql)
gettext (para NLS)
kerberos, openssl e pam (opcional, para autenticação)

## Instalação no Linux

Várias distribuições já contam com binários para instalação do PostgreSQL (Ubuntu, Debian, Slackware, RedHat, Fedora, etc).
Em uma instalação padrão do Ubuntu veja o que precisa para instalar os fontes:
Antes de instalar:
E use make ao invés de gmake.
Faça o download de http://www.postgresql.org/ftp/source/
e descompacte (gosto de descompactar em /usr/local/src e instalar no diretório default, que é /usr/local/pgsql).
Instalar pelos binários da distribuição tem as vantagens de já instalar e configurar praticamente tudo automaticamente, mas instalar dos fontes dá um maior controle sobre as configurações (você sabe que tudo ficará no /usr/local/pgsql) e temos a possibilidade de instalar sempre a última versão. Reflita sobre a melhor opção para você.
Idealmente mude para o superusuário logo aqui.
Copiar o script de inicialização “linux” para o /etc/init.d (Nos Debians):
De /usr/local/src/postgresql-8.1.4/contrib/start-script/linux para /etc/init.d/postgresql
Dar permissão de execução: chmod u+x /etc/init.d/postgresql
Se no Ubuntu ou outro Debian:
Depois execute:
Agora o postgres está no path.
Pós Instalação (sh, bash, ksh e zsh):
Ou no ~/.bash_profile do usuário postgres
* initdb – inicializa o cluster, cria os scripts de configuração default.
* postmaster – inicia o processo do servidor responsável por escutar por pedidos de conexão.
Para suporte aos locales do Brasil usar:
A instalação via fontes (sources) em algumas distribuições muito enxutas, voltadas para para desktop, pode não funcionar da primeira vez, pois faltarão algumas bibliotecas, compiladores, etc.
Após a instalação está criado o agrupamento principal (cluster main) de bancos de dados do PostgreSQL.
Caso não se tenha confiança nos usuários locais é recomendável utilizar a opção -W, --pwprompt ou –pwfile do initdb, que atribuirá uma senha ao superusuário.
No arquivo pg_hba.conf utilizar autenticação tipo md5, password ou cript, antes de iniciar o servidor pela primeira vez.
Quando o programa que inicia o servidor (postmaster) está em execução, é criado um PID e armazenado dentro do arquivo postmaster.pid, dentro do subdiretório data. Ele impede que mais de um processo postmaster seja executado usando o mesmo cluster e diretório de dados.
Baixar PostgreSQL via Anonymous CVS:
Baixar CVS de - http://www.nongnu.org/cvs/
Instalar e Logar com qualquer senha:
cvs -d :pserver:anoncvs@anoncvs.postgresql.org:/projects/cvsroot login Baixar fontes:
cvs -z3 -d :pserver:anoncvs@anoncvs.postgresql.org:/projects/cvsroot co -P pgsql Isto irá instalar o PostgreSQL num subdiretório pgsql do diretório atual.
Atualizar a última instalação via CVS:
Acesse o diretório pgsql e execute - cvs -z3 update -d -P
Isto irá baixar somente as alterações ocorridas após a última instalação.
Também podemos criar um arquivo .cvsrc no home do usuário com as duas linhas:
cvs -z3
update -d -P
Atualização do PostgreSQL entre Versões
Caso você tenha uma versão que não seja 8.1.x e esteja querendo instalar a 8.1.4, então precisa fazer um backup dos seus dados e restaurar logo após a instalação como sugerido em seguida. Será assumido que sua instalação foi em:
/usr/local/pgsql e seus dados no sub diretório data. Caso contrário faça os devidos ajustes.
1 – Atenção para que seus bancos não estejam recebendo atualização durante o backup. Se preciso proíba acesso no pg_hba.conf.
2 – Efetuando backup:
pg_dumpall > bancos.sql .Para preservar os OIDs use a opção -o no pg_dumpall.
3 – Pare o servidor
pg_ctl stop ou outro comando
Caso queira instalar a nova versão no mesmo diretório da anterior
mv /usr/local/pgsql /usr/local/pgsql.old
Então instale a nova versão, crie o diretório de dados e einicie o novo servidor.
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
Finalmente, restore seus dados usando o novo servidor com:
/usr/local/pgsql/bin/psql -d postgres -f bancos.sql
Para mais detalhes sobre os procedimentos de instalação, veja itens 14.5 e 14.6 do manual.
Plataformas Suportadas
Atualmente o PostgreSQL suporta muitas plataformas, entre elas o Windows, Linux, FreeBSD, NetBSD, OpenBSD, Mac OS e diversos outros. Plataformas suportadas e as não suportadas na seção 14.7 do manual oficial.
No PostgreSQL o processo postmaster escuta por conexões dos clientes.
Existem mais dois processos também iniciados, ambos com nome postgres. Eles cuidam da gravação dos logs ou tabelas e da manutenção das estatísticas.
Para cada conexão com uma aplicação cliente é criado um novo processo com o mesmo nome do usuário da conexão. Por isso é importante que cada aplicativo tenha seu usuário e se tenha um maior controle.
Os arquivos de configuração (postgresql.conf, pg_hba.conf e pg_ident.conf) a partir da versão 8 podem ficar em diretório diferente do PGDATA.
Sugestão de Padrão
Nomes de bancos no plural
Nomes de tabelas no singular
Exemplo:
banco – clientes
tabela - cliente
Criar Novo Cluster
Caso sinta necessidade pode criar outros clusters, especialmente indicado para grupos de tabelas com muito acesso.
O comando para criar um novo cluster na versão atual (8.1.3) do PostgreSQL é:
* banco=# \h create tablespace
* Comando: CREATE TABLESPACE
* Descrição: define uma nova tablespace
* Sintaxe:
* Exemplo:
O diretório deve estar vazio e pertencer ao usuário.
Criando um banco no novo cluster:
Obs: Podem existir numa mesma máquina vários agrupamentos de bancos de dados (cluster) gerenciados por um mesmo ou por diferentes postmasters.
Se usando tablespace o gerenciamento será de um mesmo postmaster, se inicializados por outro initdb será por outro.
Setar o Tablespace default:
Listar os Tablespaces existentes:
Detalhes extras no item 14.5 do manual oficial.
Somente Caso de ter que repetir os procedimentos use:
e repita a sequência acima.