Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PostgreSQL A La Debian

PostgreSQL A La Debian

Leonardo Cezar

November 08, 2011
Tweet

More Decks by Leonardo Cezar

Other Decks in Programming

Transcript

  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 R e g i s t r a d o 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 l u s t e r d e s c , [ $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