%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Replicação com Slony-I %% Copyright 2006 Euler Taveira de Oliveira %% %% VII Fórum Internacional de Software Livre, 19-22 Abril 2006 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% fontes utilizadas %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %deffont "padrao" xfont "Verdana" %deffont "titulo" xfont "Arial:Bold" %deffont "corpo" xfont "Verdana" %deffont "escrita" xfont "Courier" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% linhas padronizadas %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %default 1 left, size 7, fore "#f58220", back "#333333", font "titulo", prefix 1 %default 2 left, size 7 %default 3 left, size 4, fore "#e0e0e0", font "padrao", prefix 2 %%default 2 size 3, vgap 2, prefix 20, fore "#ffff00" %%default 3 size 2, bar "gray70", vgap 10 %%default 4 size 5, fore "white", vgap 30, prefix " ", font "padrao" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% linhas identadas %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %tab 1 size 6, vgap 50, prefix " ", icon delta3 "#f58220" 40 %tab 2 size 5, vgap 50, prefix " ", icon box "#f58220" 40 %tab 3 size 4, vgap 40, prefix " ", icon arc "#f58220" 30 %tab 4 size 3, vgap 40, prefix " ", icon delta "#f58220" 30 %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %nodefault, font "padrao", fore "#f58220", back "#333333", size 4 %center %newimage -zoom 180 "images/slon.png" %size 10 Replicação com Slony-I %size 5, fore "#e0e0e0" Euler Taveira de Oliveira euler@timbira.com %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Conceitos de Replicação %%area 80 20 %%size 11 %leftfill, size 6 "Replicação refere-se ao fornecimento de recursos redundantes (hardware ou software) para melhorar a confiabilidade e a tolerância a falhas." (Wikipedia) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Por que replicar? Tolerância a Falhas (redundância) Balanceamento de Carga (performance) %% "Data Warehousing" Segurança %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 4 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Tipos de Replicação mestre/escravo assíncrono mestre/escravo síncrono multi-mestre/escravo assíncrono multi-mestre/escravo síncrono %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 5 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Mestre/Escravo Assíncrono %center %newimage -zoom 200 "meassinc.png" O Slony-I utiliza este método! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 6 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Mestre/Escravo Síncrono %center %newimage -zoom 200 "mesinc.png" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 7 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Multi-Mestre/Escravo Assíncrono %center %newimage -zoom 200 "mmeassinc.png" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 8 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Multi-Mestre/Escravo Síncrono %center %newimage -zoom 200 "mmesinc.png" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 9 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Pontos Negativos Performance (métodos síncronos) Custo Complexidade %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 10 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont O que é Slony-I? %leftfill, size 6 É um sistema de replicação assíncrono composto por um mestre e vários escravos para sistemas de bancos de dados PostgreSQL %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 11 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Ilustrando Slony-I %center %newimage -zoom 150 "rep-slony.png" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 12 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Características do Slony-I Baseado em gatilhos e NOTIFY/LISTEN Replicação de múltiplas bases de dados Replicação em cascata (escalabilidade) Promoção de Escravo Suporte a múltiplas versões do PostgreSQL (7.3.3 ou superior) Instalação e configuração em produção %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 13 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont O que o Slony-I não é? replicação síncrona replicação multi-mestre/escravo sistema gerenciador de rede (mon?) não consegue promover *magicamente* um nó caso o mestre falhe vamos deixar o Slony-I fazer o que ele faz de melhor! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 14 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Limitações do Slony-I não consegue propagar mudanças no esquema (DML) *magicamente* não consegue replicar objetos grandes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 15 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Necessidades do Slony-I Instalação compilador ANSI C PostgreSQL incluindo arquivos de bibliotecas (.h) pacotes GNU (autoconf, make, etc) Docbook (opcional) No Windows, mingw+msys e pthreads-win32 2.x codificação do banco de dados idêntica NTP: sincronismo do tempo conexão de rede bidirecional entre os nós %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 16 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Conceitos sobre Slony-I Agrupamento (cluster): conjunto de banco de dados a serem replicados Nó: cada banco de dados que participa da replicação Conjunto de Replicação: conjunto de tabelas e sequências replicadas da origem (mestre) Origem, Inscritos (subscribed), Fornecedores (providers): os nós na rede de replicação Slon daemons: um para cada nó; processa eventos de replicação (configuração e SYNC) eventos de configuração: quando o slonik roda eventos SYNC: atualização dos nós inscritos naquele mestre Slonik: processa scripts que sao usados para submeter eventos para atualizar a configuração de um agrupamento do Slony-I %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 17 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Configurando um Sistema de Replicação com Slony-I createdb -U slony1 -h escravo bdescravo createlang -U slony1 -h escravo plpgsql bdescravo pg_dump -U slony1 -h mestre bdmestre | psql -U slony1 -h escravo bdescravo %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 18 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Cont: Configurando um Sistema de Replicação com Slony-I %center %newimage -zoom 100 "images/slonik_setup.png" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 19 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Cont: Configurando um Sistema de Replicação com Slony-I No mestre: slon repslon "dbname=bdmestre user=slony1 host=mestre" No escravo: slon repslon "dbname=bdescravo user=slony1 host=mestre" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 20 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Cont: Configurando um Sistema de Replicação com Slony-I Não está replicando ainda! %center %newimage -zoom 100 "images/slonik_setup2.png" %left Agora sim! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 21 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Onde utilizar? servidores de cópia de segurança migração entre servidores migração entre versões do PostgreSQL %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 22 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Onde não utilizar? muitos nós escravos muitas sequências gerenciar DDLs *magicamente* (PITR) tarefas "multi-mestre" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 23 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Futuro do Slony melhorar performance documentação Slony-II multi-mestre síncrono GCS (Group Comunication System) 6 meses - beta (Julho?) Gavin Sherry e Neil Conway %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 24 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Referências http://www.slony.info/ http://www.slony2.org/ slony1-general@gborg.postgresql.org %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 25 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Vida Longa ao Slony %center %newimage -zoom 100 "images-old/elephant_skies.jpg" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% página 26 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %newimage -zoom 40 "images/slon.png" %cont Contato %center, size 7 Euler Taveira de Oliveira euler@timbira.com http://www.timbira.com/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% eof %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%