Administração Do PostgreSQL
Administração Do PostgreSQL
Administração Do PostgreSQL
Arquitetura do PostgreSQL
Configuração de ambiente
Gerenciamento de banco de dados
Autenticação de clientes
Administração de segurança lógica e física
Manutenção do banco de dados
Write Ahead Log
Monitorando o PostgreSQL
Instalação e administração do software
Arquitetura do PostgreSQL
Introdução
O servidor PostgreSQL pode manipular
múltiplas conexões simultâneas de
clientes .Para cada conexão, um novo
processo servidor é iniciado para tratar
as requisições sem a interferência do
processo postmaster original.
Introdução
O processo postmaster está sempre
rodando e esperando novas conexões
de clientes, enquanto os processos
clientes e seus processos servidores
associados são finalizados após o
encerramento da execução.
Conexões ao PostgreSQL
Arquitetura do PostgreSQL
A biblioteca LIBPQ é responsável por
tratar da comunicação entre o processo
cliente e o postmaster. Ele passa
adiante, ao processo postmaster
dedicado, os comandos recebidos do
processo cliente.
Arquitetura do PostgreSQL
O lado servidor é composto por dois
processos: o postmaster e o processo
postgres dedicado. O postmaster é
responsável por realizar a autenticação das
novas conexões e iniciar um processo
postgres dedicado ‘a nova conexão. O
processo postgres trata as queries e
comandos enviados pelos clientes. Existe um
processo postgres para cada cliente.
Configuração de Ambiente
Codificação
O PostgreSQL é um servidor de banco
de dados que suporta vários character
set, permitindo uma internacionalização
simples de aplicações.
Num mesmo servidor é possível ter
vários bancos de dados com diferentes
character sets. O character set padrão é
o SQL_ASCII
Definindo um character set
Pode ser feito na configuração do initdb
# initdb –E LATIN1
Na criação do banco
# createdb –E LATIN1 banco1
Exemplos de character set
SQL_ASCII
UNICODE
LATIN1
ISO_8859_5
EUC_JP
EUC_CN
Variáveis de ambiente
PGDATA
mostra o diretório onde estão os dados
PGUSER
PGPASSWORD
mantém o user e o password para facilitar a
conexão com o banco
PGHOST
PGPORT
PGOPTIONS
O arquivo postgresql.conf
As configurações do servidor
PostgreSQL estão definidas e
armazenadas no arquivo
$PGDATA/postgresql.conf
Opções
AUTOCOMMIT
AUTHENTICATION_TIMEOUT
CLIENT ENCODING
DATESTYLE
DEADLOCK_TIMEOUT
DEFAULT_TRANSACTION_ISOLATION
FSYNC
MAX_CONNECTIONS
PASSWORD_ENCRYPTIONS
Opções
SEARCH_PATH
STATEMENT_TIMEOUT
SHARED_BUFFERS
SORT_MEM
SSL
SUPERUSER_RESERVED_CONNECTIONS
TCPIP_SOCKET
VACUUM_MEM
Gerenciamento do banco de
dados
Iniciando um cluster
PostgreSQL
Antes de criar um banco de dados, os
arquivos de sistemas devem ser
configurados no diretório $PGDATA
# initdb –D /postgres
dropdb dbname
do shell.
Banco de dados template
É possível especificar qual banco será usado
como template , caso não seja especificado ,
o banco template1 é utilizado
Se adicionarmos objetos ao banco template1,
os bancos criados posteriormente serão
criados com estes objetos
Existe um segundo banco de dados padrão
chamado template0. Não são permitidos
conexões neste banco e ele pode ser utilizado
para criação de banco de dados zerados
Catálogo de Dados
Tabelas de Sistema
O PostgreSQL utiliza intensamente o recurso
de dicionário de dados, conhecida como
catalog, para armazenar e controlar as
atividades sobre o banco de dados
As tabelas e views do dicionário de dados são
prefixadas com pg_ e em sua maior parte ,
são acessíveis a todos os usuários.
Principais Tabelas de Sistema
pg_attribute
Armazena as informações sobre as colunas
das tabelas
Attrelid: oid da tabela que a coluna pertence
Attname: nome da coluna
Attypid: oid do tipo de dado da coluna
Attnum: posição da coluna na tabela
Attnotnull: valor true se a coluna for not null
Pg_class
Armazena definições de tabelas, índices, views e seqüências
Relname: nome do objeto
Relnamespace: nome do schema onde se encontra o objeto
Relowner: proprietário da tabela
Relpages: numero de blocos ocupados no disco pela tabela
Reltuples: numero de linhas da tabela
Relhasindex: true se a tabela possui índices
Relkind: tipo do objeto(r=tabela, i=indice, s= seqüência,
v=view)
Relnatts: numero de colunas na tabela
Reltriggers: numero de triggers na tabela
Relacl: array com permissões de acesso
Pg_constraint
Armazena definições das restrições de tabelas e
colunas
Conname: nome da constraint
Connamespace: nome do schema onde se encontra o
objeto
Contype: tipo da constraint
Conrelid: oid da tabela que possui a constraint
Confupdtype: ação da foreign key no UPDATE
Confdeltype: ação da foreign key no DELETE
Consrc: código fonte da constraint check
Pg_database
Armazena as informações sobre todos os
bancos de dados
Datname: nome do banco de dados
Encoding: código da codificação
Datpath: determina o local alternativo de
armazenamento do banco
Datacl: lista de acesso ao banco
Pg_group
Armazena as informações sobre os grupos
de usuários
Groname: nome do grupo
Grosysid: código do grupo
Grolist: array com os usuários que pertencem
ao grupo
Pg_shadow
Armazena as informações dos usuarios.
Existe uma view chamada pg_user sem
informações de senha
Usename: nome do usuário
Usesysid: código do usuário
Usecreatedb: true se o usuário pode criar
bancos
Usesuper: true se super-usuario
Passwd: senha do usuário
Autenticação de clientes
Pg_hba.conf
A autenticação de clientes é configurada no
arquivo pg_hba.conf. Este arquivo se localiza
no diretorio $PG_DATA
O formato geral do pg_hba.conf é um
conjunto de registros, um por linha, com as
regras de acesso. Linhas em branco ou
iniciando com # são ignoradas
O primeiro registro que casa com os dados da
requisição é utilizado para a autenticação
Administração de Segurança
Lógica
Gerenciando Schemas
Um schema é um espaço onde podem ser criados
objetos de banco de dados como tabelas, funções,
etc.
Com o uso de schemas é possível ter mais de uma tabela ou
objeto com o mesmo nome
Todos os bancos possuem um schema chamado public
Existem muitas razões para utilizar schemas
Possibilita que vários usuarios utilizem o mesmo banco sem
interferência
Facilita a organização lógica dos objetos no banco
Aplicações podem ser colocadas em outros schemas sem
problemas de colisão de nomes com outros objetos
Create schema nome [AUTHORIZATION
usuário];
Onde nome é o nome do schema
Onde usuário é o proprietário do schema
#gmake –version
#gcc --version
#adduser postgres
#passwd postgres
Descompactar o software
#./configure
#gmake
#gmake check
#gmake install