SlideShare una empresa de Scribd logo
PostgreSQL `a la Debian
PostgreSQL `a la Debian
Pacote: postgresql-common
Leonardo Cezar
DATAPREV - PostgreSQL Brasil
10 de novembro de 2010
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Introdu¸c˜ao
Conte´udo
1 Introdu¸c˜ao
Resumo
2 Gerenciamento de Software
Processo de instala¸c˜ao
Su´ıte postgresql-common
Gerenciando o servidor
3 Biblioteca PgCommon
Introdu¸c˜ao
API
4 Migra¸c˜ao de Software
Situa¸c˜ao
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Introdu¸c˜ao
Resumo
Resumo
• Utilit´ario para gerenciar instˆancias do PostgreSQL (aka
cluster) com algumas ferramentas interessantes para
administra¸c˜ao, configura¸c˜ao e atualiza¸c˜ao do PostgreSQL
para vers˜oes maiores.
• API para desenvolvimento de software de gerenciamento de
bancos
• Processo Unificado de Migra¸c˜ao de bases de dados h´ıbridas
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Gerenciamento de Software
Conte´udo
1 Introdu¸c˜ao
Resumo
2 Gerenciamento de Software
Processo de instala¸c˜ao
Su´ıte postgresql-common
Gerenciando o servidor
3 Biblioteca PgCommon
Introdu¸c˜ao
API
4 Migra¸c˜ao de Software
Situa¸c˜ao
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Gerenciamento de Software
Processo de instala¸c˜ao
Digress˜ao: M´etodos de instala¸c˜ao
• Sistema Gerenciador de Pacotes
• Aptitude, Yum, Zypee, Up2date, AppSnap, Ports, Fink
• Bin´ario de instala¸c˜ao
• deb, rpm, pkg, mpkg, msi
• C´odigos fontes disponibilizados pelo fornecedor
• GCC, libbc6-dev, bison, yapcc
• Obter fontes, parametrizar, compilar, configurar, ...
• Instalar estritamente o necess´ario
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Gerenciamento de Software
Processo de instala¸c˜ao
Instala¸c˜ao `a la Debian
Bash
# aptitude install postgresql
Opcionalmente:
Bash
# aptitude install postgresql-9.0
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Gerenciamento de Software
Su´ıte postgresql-common
Objetivos postgresql-commom
• postgresql-common:
• Agregar software do servidor postgresql-$PGVERSION
• postgresql-client-common
• Agregar software do cliente postgresql-client-$PGVERSION
• Solucionar problema de atualiza¸c˜ao de vers˜ao do pacotes
Debian
• Substituir o antigo postgresql-dump dos pacotes Debian/Red
Hat;
• Executar instˆancias em vers˜oes diferentes do PostgreSQL;
• Gerenciar instˆancias atrav´es do utilit´ario pg wrapper;
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Gerenciamento de Software
Su´ıte postgresql-common
Arquivos
• /etc/postgresql-common/user clusters
- Mapear usu´arios contra ´area de dados e banco de dados
• $HOME/.postgresqlrc
- Configura¸c˜oes de usu´arios. Semelhante a user clusters, mas
com precedˆencia
• /etc/postgresql-common/autovacuum.conf
- Configura¸c˜oes de limpeza autom´atica para vers˜oes inferiores
`a 8.0
• /etc/postgresql/8.4/main/
- Configura¸c˜oes de arquivos da ´area de dados categorizados
por vers˜ao
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Gerenciamento de Software
Su´ıte postgresql-common
Arquivos
• /usr/lib/postgresql/vers˜ao/bin
- Arquivos execut´aveis (–bindir – pg dump, pg restore,
pg dumpall, ...) do servidor categorizados por vers˜ao
• /usr/share/postgresql/vers˜ao
- Arquivos de configura¸c˜ao distribu´ıdos
• /usr/share/doc/postgresql/postgresql-doc-version
- Documenta¸c˜ao de uma vers˜ao espec´ıfica
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Gerenciamento de Software
Su´ıte postgresql-common
Arquivos
Execut´aveis do servidor
• /usr/bin/bindir
- Links simb´olicos (psql, pg dump, pg ctl, pg restore,
pg controdata)
• /usr/bin/pg lsclusters
- Listagem de todas ´areas de dados dispon´ıveis no servidor
• /usr/bin/pg ctlcluster
- Realiza o trabalho da ferramenta pg ctl
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Gerenciamento de Software
Su´ıte postgresql-common
Arquivos
Execut´aveis do servidor
• /usr/bin/pg dropcluster
- Realiza a sequˆencia de comandos para excluir uma ´area de
dados
• /usr/bin/pg upgradecluster
- Atualiza os arquivos do servidor para uma nova
”maior”vers˜ao do PostgreSQL
• /usr/bin/pg createclusters
- Realiza o trabalho do software initdb
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Gerenciamento de Software
Gerenciando o servidor
Configura¸c˜ao
• Configurando arquivos:
• user cluster: Define em qual instˆancia determinado usu´ario se
conecta por padr˜ao:
# USU´ARIO GRUPO VERS˜AO ´AREA DE DADOS BANCO
DE DAODS
• $HOME/.postgresqlrc: Sobrescreve user clusters
• $PGCLUSTER: Vari´avel de ambiente que possui o nome e
porta do cluster
• Utilizando a diretiva –cluster
• aplicaca¸c˜ao-cliente –cluster vers˜ao/cluster
• Ex.: psql –cluster 8.4/nome cluster -l
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Gerenciamento de Software
Gerenciando o servidor
Utilit´arios
• Utilit´arios (psql, pg ctl) em /usr/bin s˜ao substitu´ıdos por links
simb´olicos para:
• /usr/share/postgresql-common/pg wrapper
• O programa pg wrapper elege qual a vers˜ao do cliente de
acordo com as configura¸c˜oes do cluster
• Por exemplo: No comando ’psql –cluster 9.0/main’ o programa
pg wrapper localiza os bin´arios em /usr/lib/postgresql/9.0/bin
• Observe que o parˆametro --cluster”n˜ao existe no psql original.
Ele ´e um pseudo-atributo do utilit´ario
• Os bin´arios originais /usr/lib/postgresql/$PGVERSION/bin
podem continuar sendo utilizados normalmente
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Gerenciamento de Software
Gerenciando o servidor
Multicluster: Vantagens
• Homologa¸c˜ao de vers˜ao de software
• Testar novas funcionalidades de vers˜oes maiores do
PostgreSQL
• Manter ambientes (teste/homologa¸c˜ao) no mesmo servidor;
• Benchmarking entre vers˜oes difeferentes do PostgreSQL
• POC de novas funcionalidades;
• Migra¸c˜ao;
• Ambiente de desenvolvimento;
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Biblioteca PgCommon
Conte´udo
1 Introdu¸c˜ao
Resumo
2 Gerenciamento de Software
Processo de instala¸c˜ao
Su´ıte postgresql-common
Gerenciando o servidor
3 Biblioteca PgCommon
Introdu¸c˜ao
API
4 Migra¸c˜ao de Software
Situa¸c˜ao
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Biblioteca PgCommon
Introdu¸c˜ao
Defini¸c˜ao
• Conjunto de fun¸c˜oes que comp˜oe o framework
postgresql-common
• Controla altera¸c˜oes em arquivos de configura¸c˜ao e localiza¸c˜ao
de execut´aveis
• Escrito em Perl 5.10 e compat´ıvel com vers˜oes superiores
• API madura e bem documentada
• Licenciado sob GPL
• Estens´ıvel
• Dependˆencias: IO::Socket, Text::More, Exporter
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Biblioteca PgCommon
Introdu¸c˜ao
Exemplos
• Exemplos de utiliza¸c˜ao
• export PERL5IB=/usr/share/postgresql-common
• perl -le ”use PgCommon; print get versions();”
- Retorna todas as vers˜oes de software instalada no servidor
• perl -le ”use PgCommon; set cluster port(8.4,main,5444)”
• perl -le ”use PgCommon; print
PgCommon::get conf value(8.4, main, port)”
• pg lscluster
– 8.2 main 5444 online postgres /dados
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Biblioteca PgCommon
API
PgCommon - API
• get cluster port(vers˜ao, cluster): Obt´em o valor da porta do
cluster
• set cluster port(vers˜ao, cluster, porta): Altera o valor da porta
• set cluster start conf: Altera a situa¸c˜ao do arquivo start.conf
• get program path(aplica¸c˜ao, vers˜ao): Obt´em o caminho do
execut´avel
• cluster info(vers˜ao, cluster): Obt´em informa¸c˜oes sobre o
cluster
• get cluster databases(vers˜ao, cluster): Retorna os bancos do
cluster
• error(string msg): Imprime uma mensagem para a sa´ıda de
erro padr˜ao e abandona com situa¸c˜ao 1
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Biblioteca PgCommon
API
Exemplo de aplica¸c˜ao
Listing 1: Dispatcher
#!/ usr / bin / p e r l
{
package MyWebPgCommon;
use HTTP : : Server : : Simple : : CGI qw/: a l l /;
use base qw(HTTP : : Server : : Simple : : CGI ) ;
use l i b ’ / usr / share / p o s t g r e s q l −common ’ ;
use PgCommon ;
my %dispatch = ( ’ / index ’ => &index ,
) ;
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Biblioteca PgCommon
API
Exemplo de aplica¸c˜ao (cont.)
Listing 2: Dispatcher
sub h a n d l e r e q u e s t {
my $ s e l f = s h i f t ;
my $cgi = s h i f t ;
}
my $path = $cgi −>p a t h i n f o ( ) ;
my $handler = $dispatch { $path };
i f ( ref ( $handler ) eq ”CODE” ) {
}
print ”HTTP/1.0 200 OK r n” ;
$handler −>($cgi ) ;
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Biblioteca PgCommon
API
Exemplo de aplica¸c˜ao (cont.)
Listing 3: Dispatcher
sub index {
my $cgi = s h i f t ;
return i f ! ref $cgi ;
my $ u r i = $ENV{REQUEST URI };
my $who = $cgi −>param ( ’name ’ ) ;
}
print $cgi −>header ;
print $cgi −>s t a r t h t m l (− t i t l e=>”PostgreSQL Common M
,− s t y l e=>{ ’ s r c ’=>$ u r i . ’ / l a f /common . css ’ }
print $cgi −>t a b l e ({− border=>”1” } ,
$cgi −>caption ( ’ C l u s t e r Re gis tr ado s ’ ) ,
$cgi −>Tr({− a l i g n=>l e f t ,− v a l i g n=>TOP} ,
[ Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Biblioteca PgCommon
API
Exemplo de aplica¸c˜ao (cont.)
Listing 4: Dispatcher
sub l i s t c l u s t e r s () {
my @ c l u s t e r d e s c ;
foreach $v ( sort ( g e t v e r s i o n s ( ) ) ) {
my @ c l u s t e r s = g e t v e r s i o n c l u s t e r s $v ;
foreach $c ( sort @ c l u s t e r s ) {
%i n f o = c l u s t e r i n f o $v , $c ;
push @c lust er de sc , [ $v , $c , $ i n f o { ’ port
, $ i n f o { ’ running ’ } ? ” o n l i n e ” : ”down”
,( getpwuid $ i n f o { ’ owneruid ’ } ) [ 0 ]
, $ i n f o { ’ pgdata ’ }
, $ i n f o { ’ l o g f i l e ’ } | | ’ custom ’ ] ;
} return @ c l u s t e r d e s c ;
}
} Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Biblioteca PgCommon
API
Exemplo de aplica¸c˜ao (uso)
• Aponte seu navegador para http://localhost:8181
• Uma listagem com seus cluster deve aparecer
• Clique no bot˜ao para iniciar o servi¸co
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Migra¸c˜ao de Software
Conte´udo
1 Introdu¸c˜ao
Resumo
2 Gerenciamento de Software
Processo de instala¸c˜ao
Su´ıte postgresql-common
Gerenciando o servidor
3 Biblioteca PgCommon
Introdu¸c˜ao
API
4 Migra¸c˜ao de Software
Situa¸c˜ao
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Migra¸c˜ao de Software
Situa¸c˜ao
Situa¸c˜ao
Aplica¸c˜oes
• +500 Aplica¸c˜oes rodando em Or4¢le
• +20 Aplica¸c˜oes rodando em MS SQ£$erver
• +20 Aplica¸c˜oes rodando no PostgreSQL
• +50 Aplica¸c˜oes rodando mainframe (DMS2)
Leonardo Cezar PostgreSQL `a la Debian
PostgreSQL `a la Debian
Migra¸c˜ao de Software
Situa¸c˜ao
Metas 2010 - 2011
• Consolida¸c˜ao do ambiente PostgreSQL
• Composi¸c˜ao do Processo de desenvolvimento e migra¸c˜ao
PostgreSQL (Eclipse Process Framework)
• Migra¸c˜ao de 30% do Oracle
• Migra¸c˜ao de todas as bases SQL Server
Leonardo Cezar PostgreSQL `a la Debian

Más contenido relacionado

PPTX
Ansible administracion simplificada
PDF
Introduction to linux for bioinformatics
DOCX
Comandos básicos ubuntu
DOCX
Comandos ubuntu
PDF
Mis comandos favoritos en linux parte 3
PDF
Nosqlcp
DOCX
Comandos linux
ODT
Habilidades de linux
Ansible administracion simplificada
Introduction to linux for bioinformatics
Comandos básicos ubuntu
Comandos ubuntu
Mis comandos favoritos en linux parte 3
Nosqlcp
Comandos linux
Habilidades de linux

La actualidad más candente (15)

PDF
Mis comandos favoritos en linux parte 2
PDF
P6 DOS ROUTERS
PDF
NoSQL, MongoDB y MongoMapper
PDF
Comandos basicos en linux
ODP
Comandos basicos linux
DOCX
Comandos de ubuntu
PDF
Comandos ubuntu
PPT
06.asterisk administracion
PDF
Docker 101 - dockers y Bases de Datos DB
DOCX
Comandos ubuntu
PDF
Respaldos con Rsync
PDF
Thunder cache 3.1.2 en centos 6.3
PDF
Programación en Bash
ODP
Curso Bash 1
PPTX
Codigos de terminal linux
Mis comandos favoritos en linux parte 2
P6 DOS ROUTERS
NoSQL, MongoDB y MongoMapper
Comandos basicos en linux
Comandos basicos linux
Comandos de ubuntu
Comandos ubuntu
06.asterisk administracion
Docker 101 - dockers y Bases de Datos DB
Comandos ubuntu
Respaldos con Rsync
Thunder cache 3.1.2 en centos 6.3
Programación en Bash
Curso Bash 1
Codigos de terminal linux
Publicidad

Similar a PostgreSQL À la Debian (20)

PPTX
SGBD Postgresql
PDF
Documentacion postgresql
PDF
postgres
PDF
Pg pool cluster postgresql
PDF
Instalacion de postgre sql
PDF
Docker y PostgreSQL
PDF
Fundamentos de Administración PostgreSQL
PDF
58517228 postgre sql-desarrolladoresbasico
PDF
Cluster con postgresql
PDF
Curso de PostgreSQL
DOC
Tp1 db avanz-v1.1
PDF
Postgre Sql Para Las Empresas Cubanas
PDF
Instalacion de postgre sql
PPTX
Instalación y configuración de sgbd presentacion
PDF
Administracion basica pgsql(administracion de bdd)
 
PPTX
PostgreSQL
PPTX
PostgreSQL
PPTX
Base de datos sql
PDF
Potsgrade emerson
SGBD Postgresql
Documentacion postgresql
postgres
Pg pool cluster postgresql
Instalacion de postgre sql
Docker y PostgreSQL
Fundamentos de Administración PostgreSQL
58517228 postgre sql-desarrolladoresbasico
Cluster con postgresql
Curso de PostgreSQL
Tp1 db avanz-v1.1
Postgre Sql Para Las Empresas Cubanas
Instalacion de postgre sql
Instalación y configuración de sgbd presentacion
Administracion basica pgsql(administracion de bdd)
 
PostgreSQL
PostgreSQL
Base de datos sql
Potsgrade emerson
Publicidad

Más de Leonardo Cezar (8)

PDF
Alta disponibilidade com PostgreSQL
PDF
Versionamento de modelo de dados com PostgreSQL
PDF
Funções Administrativas no PostgreSQL
PDF
Situação da migração para PostgreSQL
PDF
Interoperabilidade dados abertos
PDF
Migracao colaborativa
PDF
PostgreSQL À la Debian
PDF
Sql proficiente
Alta disponibilidade com PostgreSQL
Versionamento de modelo de dados com PostgreSQL
Funções Administrativas no PostgreSQL
Situação da migração para PostgreSQL
Interoperabilidade dados abertos
Migracao colaborativa
PostgreSQL À la Debian
Sql proficiente

Último (20)

PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PPTX
Presentación de Redes de Datos modelo osi
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
DOCX
Trabajo colaborativo Grupo #2.docxmkkkkkkl
PDF
clase auditoria informatica 2025.........
DOCX
Las nuevas tecnologías en la salud - enfermería técnica.
PDF
diagrama de pareto.pdf valerie giraldo diaz
PDF
Calidad desde el Docente y la mejora continua .pdf
PPTX
Administración se srevidores de apliaciones
PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
PDF
Influencia-del-uso-de-redes-sociales.pdf
PDF
Temas y subtemas de las fichas 1 y 2.pdf
PPTX
Introduccion a servidores de Aplicaciones (1).pptx
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PPT
introduccion a las_web en el 2025_mejoras.ppt
PDF
Conceptos básicos de programación tecnología.pdf
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PPTX
Presentación PASANTIAS AuditorioOO..pptx
historia_web de la creacion de un navegador_presentacion.pptx
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Presentación de Redes de Datos modelo osi
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
Trabajo colaborativo Grupo #2.docxmkkkkkkl
clase auditoria informatica 2025.........
Las nuevas tecnologías en la salud - enfermería técnica.
diagrama de pareto.pdf valerie giraldo diaz
Calidad desde el Docente y la mejora continua .pdf
Administración se srevidores de apliaciones
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
Influencia-del-uso-de-redes-sociales.pdf
Temas y subtemas de las fichas 1 y 2.pdf
Introduccion a servidores de Aplicaciones (1).pptx
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
Plantilla para Diseño de Narrativas Transmedia.pdf
introduccion a las_web en el 2025_mejoras.ppt
Conceptos básicos de programación tecnología.pdf
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
Presentación PASANTIAS AuditorioOO..pptx

PostgreSQL À la Debian

  • 1. PostgreSQL `a la Debian PostgreSQL `a la Debian Pacote: postgresql-common Leonardo Cezar DATAPREV - PostgreSQL Brasil 10 de novembro de 2010 Leonardo Cezar PostgreSQL `a la Debian
  • 2. PostgreSQL `a la Debian Introdu¸c˜ao Conte´udo 1 Introdu¸c˜ao Resumo 2 Gerenciamento de Software Processo de instala¸c˜ao Su´ıte postgresql-common Gerenciando o servidor 3 Biblioteca PgCommon Introdu¸c˜ao API 4 Migra¸c˜ao de Software Situa¸c˜ao Leonardo Cezar PostgreSQL `a la Debian
  • 3. PostgreSQL `a la Debian Introdu¸c˜ao Resumo Resumo • Utilit´ario para gerenciar instˆancias do PostgreSQL (aka cluster) com algumas ferramentas interessantes para administra¸c˜ao, configura¸c˜ao e atualiza¸c˜ao do PostgreSQL para vers˜oes maiores. • API para desenvolvimento de software de gerenciamento de bancos • Processo Unificado de Migra¸c˜ao de bases de dados h´ıbridas Leonardo Cezar PostgreSQL `a la Debian
  • 4. PostgreSQL `a la Debian Gerenciamento de Software Conte´udo 1 Introdu¸c˜ao Resumo 2 Gerenciamento de Software Processo de instala¸c˜ao Su´ıte postgresql-common Gerenciando o servidor 3 Biblioteca PgCommon Introdu¸c˜ao API 4 Migra¸c˜ao de Software Situa¸c˜ao Leonardo Cezar PostgreSQL `a la Debian
  • 5. PostgreSQL `a la Debian Gerenciamento de Software Processo de instala¸c˜ao Digress˜ao: M´etodos de instala¸c˜ao • Sistema Gerenciador de Pacotes • Aptitude, Yum, Zypee, Up2date, AppSnap, Ports, Fink • Bin´ario de instala¸c˜ao • deb, rpm, pkg, mpkg, msi • C´odigos fontes disponibilizados pelo fornecedor • GCC, libbc6-dev, bison, yapcc • Obter fontes, parametrizar, compilar, configurar, ... • Instalar estritamente o necess´ario Leonardo Cezar PostgreSQL `a la Debian
  • 6. PostgreSQL `a la Debian Gerenciamento de Software Processo de instala¸c˜ao Instala¸c˜ao `a la Debian Bash # aptitude install postgresql Opcionalmente: Bash # aptitude install postgresql-9.0 Leonardo Cezar PostgreSQL `a la Debian
  • 7. PostgreSQL `a la Debian Gerenciamento de Software Su´ıte postgresql-common Objetivos postgresql-commom • postgresql-common: • Agregar software do servidor postgresql-$PGVERSION • postgresql-client-common • Agregar software do cliente postgresql-client-$PGVERSION • Solucionar problema de atualiza¸c˜ao de vers˜ao do pacotes Debian • Substituir o antigo postgresql-dump dos pacotes Debian/Red Hat; • Executar instˆancias em vers˜oes diferentes do PostgreSQL; • Gerenciar instˆancias atrav´es do utilit´ario pg wrapper; Leonardo Cezar PostgreSQL `a la Debian
  • 8. PostgreSQL `a la Debian Gerenciamento de Software Su´ıte postgresql-common Arquivos • /etc/postgresql-common/user clusters - Mapear usu´arios contra ´area de dados e banco de dados • $HOME/.postgresqlrc - Configura¸c˜oes de usu´arios. Semelhante a user clusters, mas com precedˆencia • /etc/postgresql-common/autovacuum.conf - Configura¸c˜oes de limpeza autom´atica para vers˜oes inferiores `a 8.0 • /etc/postgresql/8.4/main/ - Configura¸c˜oes de arquivos da ´area de dados categorizados por vers˜ao Leonardo Cezar PostgreSQL `a la Debian
  • 9. PostgreSQL `a la Debian Gerenciamento de Software Su´ıte postgresql-common Arquivos • /usr/lib/postgresql/vers˜ao/bin - Arquivos execut´aveis (–bindir – pg dump, pg restore, pg dumpall, ...) do servidor categorizados por vers˜ao • /usr/share/postgresql/vers˜ao - Arquivos de configura¸c˜ao distribu´ıdos • /usr/share/doc/postgresql/postgresql-doc-version - Documenta¸c˜ao de uma vers˜ao espec´ıfica Leonardo Cezar PostgreSQL `a la Debian
  • 10. PostgreSQL `a la Debian Gerenciamento de Software Su´ıte postgresql-common Arquivos Execut´aveis do servidor • /usr/bin/bindir - Links simb´olicos (psql, pg dump, pg ctl, pg restore, pg controdata) • /usr/bin/pg lsclusters - Listagem de todas ´areas de dados dispon´ıveis no servidor • /usr/bin/pg ctlcluster - Realiza o trabalho da ferramenta pg ctl Leonardo Cezar PostgreSQL `a la Debian
  • 11. PostgreSQL `a la Debian Gerenciamento de Software Su´ıte postgresql-common Arquivos Execut´aveis do servidor • /usr/bin/pg dropcluster - Realiza a sequˆencia de comandos para excluir uma ´area de dados • /usr/bin/pg upgradecluster - Atualiza os arquivos do servidor para uma nova ”maior”vers˜ao do PostgreSQL • /usr/bin/pg createclusters - Realiza o trabalho do software initdb Leonardo Cezar PostgreSQL `a la Debian
  • 12. PostgreSQL `a la Debian Gerenciamento de Software Gerenciando o servidor Configura¸c˜ao • Configurando arquivos: • user cluster: Define em qual instˆancia determinado usu´ario se conecta por padr˜ao: # USU´ARIO GRUPO VERS˜AO ´AREA DE DADOS BANCO DE DAODS • $HOME/.postgresqlrc: Sobrescreve user clusters • $PGCLUSTER: Vari´avel de ambiente que possui o nome e porta do cluster • Utilizando a diretiva –cluster • aplicaca¸c˜ao-cliente –cluster vers˜ao/cluster • Ex.: psql –cluster 8.4/nome cluster -l Leonardo Cezar PostgreSQL `a la Debian
  • 13. PostgreSQL `a la Debian Gerenciamento de Software Gerenciando o servidor Utilit´arios • Utilit´arios (psql, pg ctl) em /usr/bin s˜ao substitu´ıdos por links simb´olicos para: • /usr/share/postgresql-common/pg wrapper • O programa pg wrapper elege qual a vers˜ao do cliente de acordo com as configura¸c˜oes do cluster • Por exemplo: No comando ’psql –cluster 9.0/main’ o programa pg wrapper localiza os bin´arios em /usr/lib/postgresql/9.0/bin • Observe que o parˆametro --cluster”n˜ao existe no psql original. Ele ´e um pseudo-atributo do utilit´ario • Os bin´arios originais /usr/lib/postgresql/$PGVERSION/bin podem continuar sendo utilizados normalmente Leonardo Cezar PostgreSQL `a la Debian
  • 14. PostgreSQL `a la Debian Gerenciamento de Software Gerenciando o servidor Multicluster: Vantagens • Homologa¸c˜ao de vers˜ao de software • Testar novas funcionalidades de vers˜oes maiores do PostgreSQL • Manter ambientes (teste/homologa¸c˜ao) no mesmo servidor; • Benchmarking entre vers˜oes difeferentes do PostgreSQL • POC de novas funcionalidades; • Migra¸c˜ao; • Ambiente de desenvolvimento; Leonardo Cezar PostgreSQL `a la Debian
  • 15. PostgreSQL `a la Debian Biblioteca PgCommon Conte´udo 1 Introdu¸c˜ao Resumo 2 Gerenciamento de Software Processo de instala¸c˜ao Su´ıte postgresql-common Gerenciando o servidor 3 Biblioteca PgCommon Introdu¸c˜ao API 4 Migra¸c˜ao de Software Situa¸c˜ao Leonardo Cezar PostgreSQL `a la Debian
  • 16. PostgreSQL `a la Debian Biblioteca PgCommon Introdu¸c˜ao Defini¸c˜ao • Conjunto de fun¸c˜oes que comp˜oe o framework postgresql-common • Controla altera¸c˜oes em arquivos de configura¸c˜ao e localiza¸c˜ao de execut´aveis • Escrito em Perl 5.10 e compat´ıvel com vers˜oes superiores • API madura e bem documentada • Licenciado sob GPL • Estens´ıvel • Dependˆencias: IO::Socket, Text::More, Exporter Leonardo Cezar PostgreSQL `a la Debian
  • 17. PostgreSQL `a la Debian Biblioteca PgCommon Introdu¸c˜ao Exemplos • Exemplos de utiliza¸c˜ao • export PERL5IB=/usr/share/postgresql-common • perl -le ”use PgCommon; print get versions();” - Retorna todas as vers˜oes de software instalada no servidor • perl -le ”use PgCommon; set cluster port(8.4,main,5444)” • perl -le ”use PgCommon; print PgCommon::get conf value(8.4, main, port)” • pg lscluster – 8.2 main 5444 online postgres /dados Leonardo Cezar PostgreSQL `a la Debian
  • 18. PostgreSQL `a la Debian Biblioteca PgCommon API PgCommon - API • get cluster port(vers˜ao, cluster): Obt´em o valor da porta do cluster • set cluster port(vers˜ao, cluster, porta): Altera o valor da porta • set cluster start conf: Altera a situa¸c˜ao do arquivo start.conf • get program path(aplica¸c˜ao, vers˜ao): Obt´em o caminho do execut´avel • cluster info(vers˜ao, cluster): Obt´em informa¸c˜oes sobre o cluster • get cluster databases(vers˜ao, cluster): Retorna os bancos do cluster • error(string msg): Imprime uma mensagem para a sa´ıda de erro padr˜ao e abandona com situa¸c˜ao 1 Leonardo Cezar PostgreSQL `a la Debian
  • 19. PostgreSQL `a la Debian Biblioteca PgCommon API Exemplo de aplica¸c˜ao Listing 1: Dispatcher #!/ usr / bin / p e r l { package MyWebPgCommon; use HTTP : : Server : : Simple : : CGI qw/: a l l /; use base qw(HTTP : : Server : : Simple : : CGI ) ; use l i b ’ / usr / share / p o s t g r e s q l −common ’ ; use PgCommon ; my %dispatch = ( ’ / index ’ => &index , ) ; Leonardo Cezar PostgreSQL `a la Debian
  • 20. PostgreSQL `a la Debian Biblioteca PgCommon API Exemplo de aplica¸c˜ao (cont.) Listing 2: Dispatcher sub h a n d l e r e q u e s t { my $ s e l f = s h i f t ; my $cgi = s h i f t ; } my $path = $cgi −>p a t h i n f o ( ) ; my $handler = $dispatch { $path }; i f ( ref ( $handler ) eq ”CODE” ) { } print ”HTTP/1.0 200 OK r n” ; $handler −>($cgi ) ; Leonardo Cezar PostgreSQL `a la Debian
  • 21. PostgreSQL `a la Debian Biblioteca PgCommon API Exemplo de aplica¸c˜ao (cont.) Listing 3: Dispatcher sub index { my $cgi = s h i f t ; return i f ! ref $cgi ; my $ u r i = $ENV{REQUEST URI }; my $who = $cgi −>param ( ’name ’ ) ; } print $cgi −>header ; print $cgi −>s t a r t h t m l (− t i t l e=>”PostgreSQL Common M ,− s t y l e=>{ ’ s r c ’=>$ u r i . ’ / l a f /common . css ’ } print $cgi −>t a b l e ({− border=>”1” } , $cgi −>caption ( ’ C l u s t e r Re gis tr ado s ’ ) , $cgi −>Tr({− a l i g n=>l e f t ,− v a l i g n=>TOP} , [ Leonardo Cezar PostgreSQL `a la Debian
  • 22. PostgreSQL `a la Debian Biblioteca PgCommon API Exemplo de aplica¸c˜ao (cont.) Listing 4: Dispatcher sub l i s t c l u s t e r s () { my @ c l u s t e r d e s c ; foreach $v ( sort ( g e t v e r s i o n s ( ) ) ) { my @ c l u s t e r s = g e t v e r s i o n c l u s t e r s $v ; foreach $c ( sort @ c l u s t e r s ) { %i n f o = c l u s t e r i n f o $v , $c ; push @c lust er de sc , [ $v , $c , $ i n f o { ’ port , $ i n f o { ’ running ’ } ? ” o n l i n e ” : ”down” ,( getpwuid $ i n f o { ’ owneruid ’ } ) [ 0 ] , $ i n f o { ’ pgdata ’ } , $ i n f o { ’ l o g f i l e ’ } | | ’ custom ’ ] ; } return @ c l u s t e r d e s c ; } } Leonardo Cezar PostgreSQL `a la Debian
  • 23. PostgreSQL `a la Debian Biblioteca PgCommon API Exemplo de aplica¸c˜ao (uso) • Aponte seu navegador para http://localhost:8181 • Uma listagem com seus cluster deve aparecer • Clique no bot˜ao para iniciar o servi¸co Leonardo Cezar PostgreSQL `a la Debian
  • 24. PostgreSQL `a la Debian Migra¸c˜ao de Software Conte´udo 1 Introdu¸c˜ao Resumo 2 Gerenciamento de Software Processo de instala¸c˜ao Su´ıte postgresql-common Gerenciando o servidor 3 Biblioteca PgCommon Introdu¸c˜ao API 4 Migra¸c˜ao de Software Situa¸c˜ao Leonardo Cezar PostgreSQL `a la Debian
  • 25. PostgreSQL `a la Debian Migra¸c˜ao de Software Situa¸c˜ao Situa¸c˜ao Aplica¸c˜oes • +500 Aplica¸c˜oes rodando em Or4¢le • +20 Aplica¸c˜oes rodando em MS SQ£$erver • +20 Aplica¸c˜oes rodando no PostgreSQL • +50 Aplica¸c˜oes rodando mainframe (DMS2) Leonardo Cezar PostgreSQL `a la Debian
  • 26. PostgreSQL `a la Debian Migra¸c˜ao de Software Situa¸c˜ao Metas 2010 - 2011 • Consolida¸c˜ao do ambiente PostgreSQL • Composi¸c˜ao do Processo de desenvolvimento e migra¸c˜ao PostgreSQL (Eclipse Process Framework) • Migra¸c˜ao de 30% do Oracle • Migra¸c˜ao de todas as bases SQL Server Leonardo Cezar PostgreSQL `a la Debian