Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC em
Cloud IaaS
A Experiência - PGDay Campinas 2013
Matheus de Oliveira
e
Vinícius Schmidt
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
PostgreSQL
Streamming Replication
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Streamming Replication
Replicação master/slave:
Um único servidor primário/master –
escrita/leitura
Diversos secundários/slaves – somente leitura
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Streamming Replication
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Streamming Replication
Características:
Replicação por stream de dados (WAL)
Replicação síncrona (9.1) ou assíncrona
Muito rápida (se comparado à log shipping)
Servidores réplicas disponíveis para consulta
Rápida promoção de um slave para master
Replicação em cascata (9.2)
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Streamming Replication
Aplicações:
Alta disponibilidade
Escalabilidade de leitura – balanceamento de
carga
Servidores distribuídos geograficamente
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Streamming Replication
Limitações:
Apenas um servidor síncrono
Atraso na replicação assíncrona
Sem escalabilidade de escrita
Balanceamento de carga (leitura) feita pela
aplicação ou middleware (como PGPool-II)
Alta disponibilidade feita com ferramentas a
parte (ou manualmente)
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC – Visão Geral
Cluster de banco de dados para alta
performance:
Cluster multi-master
Operações de escrita síncronas
Escalabilidade horizontal de leitura e escrita
Tabelas replicadas ou distribuídas
Banco de dados relacional
100% ACID (transacional)
Interface de acesso via SQL
...
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC
O Projeto:
Fork do código-fonte do PostgreSQL
Re-implementa funcionalidades e correções de
novas versões
Pretendem “juntar” novamente um dia...
Mesma licença do PostgreSQL
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC
Desenvolvimento:
Todos podem enviar patches pela lista de
desenvolvimento.
Patches são revisados pelos desenvolvedores.
Eles tem a chance de avaliar, atualizar os
fontes, ou pedir por novas features.
Se um commiter se sentir pronto para
commitar, deve anunciar na lista e deixar 24
horas para aguardar uma melhoria de alguém.
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC – Commiters
Em Set. 1st, 2013, haviam:
Ashutosh Bapat
Abbas Butt
Amit Khandekar
Satoshi Nagayasu
Michael Paquier
Masataka Saito
Koichi Suzuki
Política para novos Committers:
Não há um processo definido para como novos commiters são
selecionados.
Tipicamente, candidatos devem enviar bons patches por um “longo”
período. Então, os commiters existentes ou o “core team” irá propor
para que essa pessoa seja aprovada como commiter.
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC – Development Flow
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC – Escalabilidade
DBT-1 throughput scalability
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC – Arquitetura
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC – Arquitetura
Coordinators
Recebem as conexões/comandos dos usuários e
redireciona aos datanodes
Análise/Planejamento/Execução de SQL
Enviam comandos para os datanodes,
processam o resultado e retornam ao usuário
Datanodes
Armazenam os dados
Execução de SQL local
Basicamente o “bom e velho” PostgreSQL
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC – Arquitetura
GTM (Global Transaction Manager)
Gerencia o controle de transações e visibilidade
Gerencia as sequências (sequences)
Tem-se sempre um único GTM para o cluster
GTM-Standby
Alta disponibilidade/backup para o GTM
GTM-Proxy
Se responsabiliza pela conexão ao GTM
Diminui o overhead de comunicação ao GTM agrupando
requisições/respostas
Em geral, tem-se um em cada nó
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC
Topologias e Casos de Uso
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC – Distribuição dos dados
Distribuição:
Os dados de uma tabela pode estar presente em um
ou mais datanode
Grupo de datanodes:
Pode-se selecionar em qual(is) datanode(s) distribuir
cada tabela
Tabelas replicadas:
Todos eles terão todos os dados dessa tabela
Tabelas distribuídas:
Cada um terá uma parte dos dados
Distribuição via: hash, roundrobin ou módulo
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC – Tabelas replicadas
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC – Tabelas distribuídas
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC – DN/DC juntos
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC – DN/DC juntos
Vantagens:
Arquitetura mais simples e de fácil
manuntenção
Bom para aplicações OLTP
Muito bom para tabelas replicadas (tudo
executado localmente, sem latência de rede)
Desvantagens:
Concorrência de CPU (nem sempre)
Pontos de falha
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC – DN/DC separados
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC – DN/DC separados
Mais DNs e menos DCs:
Bom para aplicações com muita escrita e pouca leitura
E tabelas distribuídas
Mais DCs e menos DNs:
Algumas tabelas distribuídas outras replicadas
Muita escrita e muita leitura
Processamento maior nos coordenadores
Equilíbrio:
Facilidade de balanceamento de carga
Adição de nós:
Adicionar DC é fácil
Adicionar DN não
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC
Alta Disponibilidade/Backup
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC – Alta disponibilidade
GTM:
Usar GTM Standby
DN/DC:
Replicação síncrona
Failover/Failback:
Utilizar ferramenta de HA
(Corosync+Pacemaker, Heartbeat, etc.)
Manualmente
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC – Alta disponibilidade
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC – Backup
pg_dump:
Executar em qualquer coordenador
Backup físico offline:
Parar todo o cluster e copiar
Backup físico online:
Criar barreira:
CREATE BARRIER meu_backup;
Realizar um backup-base em cada nó
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Considerações
Finais
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC na Nuvem (AWS)
Escalabilidade:
Possibilidade de adicionar nós para aumentar
escalabilidade tanto de escrita quanto de
leitura
Apesar disso, adicionar nós automaticamente
não é viável (como no Autoscaling)
Balanceamento de carga:
Simplesmente adicionar um ELB sobre os nós
coordenadores e porta 5432
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Postgres-XC na Nuvem (AWS)
Tentativa e erro:
Encontrar a melhor topologia não é fácil
Na nuvem, podemos testar diversos modelos
Comprar hardware pra “testar” cluster é inviável
Ambiente virtualizado:
Devido a distribuição, o I/O deixa de ser o gargalo
Muitas tabelas distribuídas:
Priorizar memória e CPU para os coordenadores
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Dificuldades
Alta disponibilidade:
Muitos SPOFs
Distribuição de tabelas:
Encontrar a melhor chave e as tabelas que
devem ser particionadas ou replicadas, não é
fácil e depende (e muito) das consultas feitas
pela aplicação
Topologia ideal:
Também depende do padrão de acesso
As possibilidades são muitas
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Matheus de Oliveira
<matheus.oliveira@dextra.com.br>
Vinícius Schmidt
<vinicius.schmidt@dextra.com.br>
Postgres-XC em Cloud IaaS
PGDay Campinas 2013
Perguntas???
Postgres-XC em Cloud IaaS
PGDay Campinas 2013

PGDay Campinas 2013 - Postgres XC @ Cloud

  • 1.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC em Cloud IaaS A Experiência - PGDay Campinas 2013 Matheus de Oliveira e Vinícius Schmidt
  • 2.
    Postgres-XC em CloudIaaS PGDay Campinas 2013
  • 3.
    Postgres-XC em CloudIaaS PGDay Campinas 2013
  • 4.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 PostgreSQL Streamming Replication
  • 5.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Streamming Replication Replicação master/slave: Um único servidor primário/master – escrita/leitura Diversos secundários/slaves – somente leitura
  • 6.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Streamming Replication
  • 7.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Streamming Replication Características: Replicação por stream de dados (WAL) Replicação síncrona (9.1) ou assíncrona Muito rápida (se comparado à log shipping) Servidores réplicas disponíveis para consulta Rápida promoção de um slave para master Replicação em cascata (9.2)
  • 8.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Streamming Replication Aplicações: Alta disponibilidade Escalabilidade de leitura – balanceamento de carga Servidores distribuídos geograficamente
  • 9.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Streamming Replication Limitações: Apenas um servidor síncrono Atraso na replicação assíncrona Sem escalabilidade de escrita Balanceamento de carga (leitura) feita pela aplicação ou middleware (como PGPool-II) Alta disponibilidade feita com ferramentas a parte (ou manualmente)
  • 10.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC
  • 11.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC – Visão Geral Cluster de banco de dados para alta performance: Cluster multi-master Operações de escrita síncronas Escalabilidade horizontal de leitura e escrita Tabelas replicadas ou distribuídas Banco de dados relacional 100% ACID (transacional) Interface de acesso via SQL ...
  • 12.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC O Projeto: Fork do código-fonte do PostgreSQL Re-implementa funcionalidades e correções de novas versões Pretendem “juntar” novamente um dia... Mesma licença do PostgreSQL
  • 13.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC Desenvolvimento: Todos podem enviar patches pela lista de desenvolvimento. Patches são revisados pelos desenvolvedores. Eles tem a chance de avaliar, atualizar os fontes, ou pedir por novas features. Se um commiter se sentir pronto para commitar, deve anunciar na lista e deixar 24 horas para aguardar uma melhoria de alguém.
  • 14.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC – Commiters Em Set. 1st, 2013, haviam: Ashutosh Bapat Abbas Butt Amit Khandekar Satoshi Nagayasu Michael Paquier Masataka Saito Koichi Suzuki Política para novos Committers: Não há um processo definido para como novos commiters são selecionados. Tipicamente, candidatos devem enviar bons patches por um “longo” período. Então, os commiters existentes ou o “core team” irá propor para que essa pessoa seja aprovada como commiter.
  • 15.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC – Development Flow
  • 16.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC – Escalabilidade DBT-1 throughput scalability
  • 17.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC – Arquitetura
  • 18.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC – Arquitetura Coordinators Recebem as conexões/comandos dos usuários e redireciona aos datanodes Análise/Planejamento/Execução de SQL Enviam comandos para os datanodes, processam o resultado e retornam ao usuário Datanodes Armazenam os dados Execução de SQL local Basicamente o “bom e velho” PostgreSQL
  • 19.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC – Arquitetura GTM (Global Transaction Manager) Gerencia o controle de transações e visibilidade Gerencia as sequências (sequences) Tem-se sempre um único GTM para o cluster GTM-Standby Alta disponibilidade/backup para o GTM GTM-Proxy Se responsabiliza pela conexão ao GTM Diminui o overhead de comunicação ao GTM agrupando requisições/respostas Em geral, tem-se um em cada nó
  • 20.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC Topologias e Casos de Uso
  • 21.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC – Distribuição dos dados Distribuição: Os dados de uma tabela pode estar presente em um ou mais datanode Grupo de datanodes: Pode-se selecionar em qual(is) datanode(s) distribuir cada tabela Tabelas replicadas: Todos eles terão todos os dados dessa tabela Tabelas distribuídas: Cada um terá uma parte dos dados Distribuição via: hash, roundrobin ou módulo
  • 22.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC – Tabelas replicadas
  • 23.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC – Tabelas distribuídas
  • 24.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC – DN/DC juntos
  • 25.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC – DN/DC juntos Vantagens: Arquitetura mais simples e de fácil manuntenção Bom para aplicações OLTP Muito bom para tabelas replicadas (tudo executado localmente, sem latência de rede) Desvantagens: Concorrência de CPU (nem sempre) Pontos de falha
  • 26.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC – DN/DC separados
  • 27.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC – DN/DC separados Mais DNs e menos DCs: Bom para aplicações com muita escrita e pouca leitura E tabelas distribuídas Mais DCs e menos DNs: Algumas tabelas distribuídas outras replicadas Muita escrita e muita leitura Processamento maior nos coordenadores Equilíbrio: Facilidade de balanceamento de carga Adição de nós: Adicionar DC é fácil Adicionar DN não
  • 28.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC Alta Disponibilidade/Backup
  • 29.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC – Alta disponibilidade GTM: Usar GTM Standby DN/DC: Replicação síncrona Failover/Failback: Utilizar ferramenta de HA (Corosync+Pacemaker, Heartbeat, etc.) Manualmente
  • 30.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC – Alta disponibilidade
  • 31.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC – Backup pg_dump: Executar em qualquer coordenador Backup físico offline: Parar todo o cluster e copiar Backup físico online: Criar barreira: CREATE BARRIER meu_backup; Realizar um backup-base em cada nó
  • 32.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Considerações Finais
  • 33.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC na Nuvem (AWS) Escalabilidade: Possibilidade de adicionar nós para aumentar escalabilidade tanto de escrita quanto de leitura Apesar disso, adicionar nós automaticamente não é viável (como no Autoscaling) Balanceamento de carga: Simplesmente adicionar um ELB sobre os nós coordenadores e porta 5432
  • 34.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Postgres-XC na Nuvem (AWS) Tentativa e erro: Encontrar a melhor topologia não é fácil Na nuvem, podemos testar diversos modelos Comprar hardware pra “testar” cluster é inviável Ambiente virtualizado: Devido a distribuição, o I/O deixa de ser o gargalo Muitas tabelas distribuídas: Priorizar memória e CPU para os coordenadores
  • 35.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Dificuldades Alta disponibilidade: Muitos SPOFs Distribuição de tabelas: Encontrar a melhor chave e as tabelas que devem ser particionadas ou replicadas, não é fácil e depende (e muito) das consultas feitas pela aplicação Topologia ideal: Também depende do padrão de acesso As possibilidades são muitas
  • 36.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Matheus de Oliveira <matheus.oliveira@dextra.com.br> Vinícius Schmidt <vinicius.schmidt@dextra.com.br>
  • 37.
    Postgres-XC em CloudIaaS PGDay Campinas 2013 Perguntas???
  • 38.
    Postgres-XC em CloudIaaS PGDay Campinas 2013