Características
PostgreSQL é um SGBD (Sistema Gerenciador de Banco de Dados) objeto-relacional de código aberto, com mais de 15 anos de desenvolvimento. É extremamente robusto e confiável, além de ser extremamente flexível e rico em recursos.Suas características são:
Possui recursos como:
|
|
Instalando
Para instalar no CentOS Linux:Eu recomendo as versões que possuem instalação gráfica por já virem com quase tudo semi-configurado. No meu caso, optei por baixar do site a seguinte versão: $ wget http://get.enterprisedb.com/postgresql/postgresql-8.3.23-3-linux-x64.run Porém existem outras maneiras de instalar… Você pode optar em fazer a instalação como abaixo. Baixe a versão desejada em: Instale utilizando: $ ./configure Após instalado, faça os seguintes procedimentos… Adicione um grupo: # groupadd postgres Adicione um usuário: # useradd -g postgres -d /usr/local/pgsql postgres Crie a pasta data: # mkdir /usr/local/pgsql/data Troque o dono da pasta: # chown postgres:postgres /usr/local/pgsql/data Crie uma senha para o usuário postgres: # passwd postgres Acesse com o usuário postgres no sistema: # su – postgres Faça os seguintes comandos: $ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data Ou você pode instalar a versão mais recente do Postgres com o comando: # yum install postgresql-server Após instalado, vamos configurar… Primeiramente vamos configurar o arquivo pg_hba.conf localizado em: /opt/Postgres/versão/data Encontre as linhas: # “local” is for Unix domain socket connections only
local all all trust # IPv4 local connections: host all all 127.0.0.1/32 trust host all all IP_DE_ACESSO trust # IPv6 local connections: host all all ::1/128 trust E troque a palavra “md5” por “host”, como no exemplo acima e adicione os IPs de acesso. Salve o arquivo e saia. Agora vamos configurar o arquivo postgresql.conf que está na mesma pasta do arquivo anterior. Encontre as linhas abaixo e modifique-as para que fiquem iguais ao exemplo: listen_addresses = ‘*’
port = 5432 max_connections = 100 shared_buffers = 32MB max_fsm_pages = 204800 log_destination = ‘stderr’ logging_collector = on log_line_prefix = ‘%t ‘ datestyle = ‘iso, mdy’ lc_messages = ‘C’ lc_monetary = ‘C’ lc_time = ‘C’ default_text_search_config = ‘pg_catalog.english’ Agora, com tudo já configurado, reinicie o Postgres: # /etc/init.d/postgresql restart |
|
Manuseio do banco
Na pasta bin onde está instalado seu banco… No meu caso:$ ls /opt/Postgres/8.3/bin/
clusterdb createuser dropuser ipcclean pg_config pg_dump pg_restore pltcl_listmod postmaster vacuumdb createdb dropdb ecpg oid2name pg_controldata pg_dumpall pg_standby pltcl_loadmod psql vacuumlo createlang droplang initdb pgbench pg_ctl pg_resetxlog pltcl_delmod postgres reindexdbCada arquivo acima é responsável por algo, veremos os principais no decorrer da leitura…1. Criar um banco de dados:# ./createdb nome_do_banco -U postgres2. Visualizar o banco criado:# ./psql -U postgres -l3. Excluir o banco criado:# ./dropdb nome_do_banco -U postgres 4. Acessar o banco criado através do terminal interativo de gerenciamento do PostgreSQL (psql): # ./psql banco -U postgres Welcome to psql 8.3.23, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help with psql commands \g or terminate with semicolon to execute query \q to quit Cannot read termcap database; using dumb terminal settings. IVAI13=# Vamos executar alguns comandos do psql e algumas consultas.
5. Consultas básicas em SQL: SELECT — selecionar registros de tabelas Sintaxe resumida: SELECT * FROM tabela; — Retorna todos os registros da tabela com todos os campos 6. Atualizar uma tabela: UPDATE tabela SET coluna = { expressão | DEFAULT } [, …] 7. Deletando tabelas: DELETE FROM tabela; — Cuidado, este comando excluirá todos os registros da tabela Ajuda sobre os comandos: nome_comando –help |
|
pg_dump pg_restore e psql
Imagine que nós criamos um banco… e com informações gravadas. Agora vamos criar um backup dele.Obs.: certifique-se de estar na pasta bin do postgres. # ./pg_dump -Fc -h IP_D0_SERVIDOR -U postgres BANCO_PARA_BACKUP > /backup.backup Sendo:
Agora com este backup criado, vamos restaurar o banco de dados. Para restaurar existem alguns parâmetros… vejamos. Caso seu backup foi criado com a opção “-Fp”, precisamos restaurar por psql: # ./psql -U usuario -d banco < “/banco.sql” Caso seu banco foi criado usando parâmetro “-Fc”, podemos utilizar o pg_restore: # ./pg_restore -U postgres -d banco /backup.backup |
|
Otimizando o PostgreSQL
Vou mostrar cada opção válida no arquivo apresentado abaixo.# vim /opt/Postgres/versão/data postgresql.conf Procure as seguintes linhas: shared_buffers = 32MB # Uma boa configuração seria entre 8% a 12% do total de RAM do servidor.work_mem = 2048 # Este parâmetro configura o tamanho em KBytes utilizado no servidor para cada conexão efetivada ao SGBD (Configura 2 MBytes de RAM do servidor para operações de ORDER BY, CREATE INDEX e JOIN disponíveis para cada conexão ao banco.) maintenance_work_mem = 16384 # O total de memória configurada neste parâmetro é utilizado somente durante as operações de manutenção do banco (como VACUUM e REINDEX), sendo liberada durante o seu uso normal. Se o seu processo de VACUUM está muito custoso, tente aumentar o valor deste parâmetro. max_fsm_pages = 120000 # Realiza a procura por até 120.000 páginas sujas na limpeza pelo VACUUM utilizando cerca de 71 Kb de RAM para isto. wal_buffers = 64 # Seta para 512 KBytes a memória destinada ao buffer de escrita no WAL. effective_cache_size = 32768 # Seta o cache de dados do PostgreSQL para 256 MBytes de RAM. random_page_cost = 2 # Diminui o tempo para seleção aleatória de páginas do otimizador de consultas. Fonte: Otimizando bancos PostgreSQL – Parte 01 Desmarque as linhas abaixo para inicializar o autovacuum: #autovacuum = on#log_autovacuum_min_duration = -1
#autovacuum_max_workers = 3 #autovacuum_naptime = 1min #autovacuum_vacuum_threshold = 50#autovacuum_analyze_threshold = 50 #autovacuum_vacuum_scale_factor = 0.2 #autovacuum_analyze_scale_factor = 0.1 #autovacuum_freeze_max_age = 200000000 #autovacuum_vacuum_cost_delay = 20 # autovacuum, -1 means use # vacuum_cost_delay #autovacuum_vacuum_cost_limit = -1 |