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 UNIXEditar

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 LinuxEditar

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.