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 editar

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 editar

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:

 sudo apt-get install build-essential libreadline5-dev zlib1g-dev gettext

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.

./configure
make
make install
groupadd postgres
useradd -g postgres -d /usr/local/pgsql postgres
mkdir /usr/local/pgsql/data
chown postgres:postgres /usr/local/pgsql/data
passwd postgres
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data 
/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >logfile 2>&1 &
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data start
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test

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:

sudo gedit /etc/profile (e adicione a linha):
PATH=/usr/local/pgsql/bin:$PATH

Depois execute:

source /etc/profile

Agora o postgres está no path.

Pós Instalação (sh, bash, ksh e zsh):

LD_LIBRARY_PATH=/usr/local/pgsql/lib
export LD_LIBRARY_PATH

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:

/usr/local/pgsql/bin/initdb --locale=pt_BR -D /usr/local/pgsql/data

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:
CREATE TABLESPACE nome_tablespace [ OWNER usuário ] LOCATION 'diretório'
  • Exemplo:
CREATE TABLESPACE ncluster OWNER usuário LOCATION '/usr/local/pgsql/nc';
CREATE TABLESPACE ncluster [OWNER postgres] LOCATION 'c:\\ncluster';


O diretório deve estar vazio e pertencer ao usuário.

Criando um banco no novo cluster:

CREATE DATABASE bdcluster TABLESPACE = ncluster;

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:

SET default_tablespace = tablespace1;

Listar os Tablespaces existentes:

\db
SELECT spcname FROM pg_tablespace;

Detalhes extras no item 14.5 do manual oficial.

Somente Caso de ter que repetir os procedimentos use:

make distclean

e repita a sequência acima.