Your SlideShare is downloading. ×
0
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3

409

Published on

This is the presentation used on my session on GUOB 2014, São Paulo, Brazil.

This is the presentation used on my session on GUOB 2014, São Paulo, Brazil.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
409
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
11
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • SHOW ENGINE NDB STATUS;
  • Transcript

    • 1. MySQL  Cluster  7.3  -­‐  Implementação   Wagner  Bianchi  –  Oracle  ACE  Director   GUOB  2014   Edição  #  19  –  Ano  2014    
    • 2. MySQL  Cluster  7.3  at  GUOB  2014,  me@wagnerbianchi.com   Agenda   Parte  I   •  Arquitetura  MySQL  Cluster  7.3   –  Conceito  “Shared  Nothing”   –  Componentes  do  cluster   –  Cluster  Auto-­‐Sharding   –  Nodes  e  Node  Groups   –  Cluster  Rolling  Restart   •  MySQL  Cluster  7.3    ConfiguraNon   –  Arquivos  de  configuração   –  Parâmetros  adicionais   –  Arquivos  de  Log   –  Iniciando  o  cluster   Parte  II   •  Backup  &  Restore   •  NDB  Client  Programs     •  Padrões  de  Projeto   –  Tablespaces   –  Tables   –  Foreign  Keys   –  Node.JS  (JavaScript/NoSQL)   –  Memcached   •  Replicação  Geográfica   –  ANvo/Passivo   –  ANvo/ANvo  
    • 3. Ambiente  de  Testes   •  Foram  disponibilizadas  7  máquinas  virtuais  CentOS  6.5   Component  Name   IP   Server  Name   Management  Node   192.168.0.101   Mgm01   Data/Storage  Node   192.168.0.102   Node02   Data/Storage  Node   192.168.0.103   Node03   SQL/API  Node   192.168.0.104   Node05   SQL/API  Node   192.168.0.105   Node05   Management  Node   192.168.0.106   Mgm02   Habilite  ou  instale  o  repositório  EPEL!!  
    • 4. Ambiente  de  Testes   •  Com  os  servidores  virtuais  prontos  e  papéis  definidos,  uNlize  o   usuário  root  para  definição  de  todos  os  processos  e  instalação  de   todos  os  pacotes:   –  No  diretório  /root  das  máquinas,  crie  um  subdiretório  mysql_bin;   –  Dentro  do  diretório  mysql_bin,  crie  os  diretórios:   •  mgm   •  ndb   •  sql   –  Faça  o  download  do  pacote  Red  Hat  Enterprise  Linux  6  /  Oracle  Linux  6   (x86,  64-­‐bit),  RPM  Bundle;      
    • 5. Ambiente  de  Testes   •  Siga  a  tabela  abaixo  para  fazer  a  separação  dos  pacotes  segundo  a   estrutura  de  diretórios  proposta  e  posterior  envio  do  diretório  para   cada  host,  seguindo  a  instalação:   •  O  padrão  de  projeto  proposto  não  é  obrigatório;   •  Bom  para  fazer  um  scp mysql_bin para  todos  os  nós;   Cluster  Component   Pacotes   Management  Node   MySQL-Cluster-server-gpl-7.3.5-1.el6.x86_64.rpm Storage/Data  Node   MySQL-Cluster-server-gpl-7.3.5-1.el6.x86_64.rpm API/SQL  Node   MySQL-Cluster-client-gpl-7.3.5-1.el6.x86_64.rpm MySQL-Cluster-server-gpl-7.3.5-1.el6.x86_64.rpm MySQL-Cluster-shared-compat-gpl-7.3.5-1.el6.x86_64.rpm MySQL-Cluster-shared-gpl-7.3.5-1.el6.x86_64.rpm
    • 6. 192.168.0.104   API/SQL  Node   192.168.0.105   API/SQL  Node   192.168.0.101   Management  Node   192.168.0.200   HAProxy   192.168.0.103   Data/Storage  Node   192.168.0.102   Data/Storage  Node   192.168.0.106   Management  Node   Ambiente  de  Testes  
    • 7. MySQL  Cluster  7.3  New  Features  
    • 8. Arquitetura  MySQL  Cluster  7.3    
    • 9. Arquitetura  MySQL  Cluster  7.3  
    • 10. Componentes  do  Cluster   •  Componentes  básicos  que  compõem  o  MySQL  Cluster:   –  Management  Node  (ndb_mgmd):   •  É  instalado  com  o  pacote  MySQL-­‐Cluster-­‐server-­‐gpl   •  Permite  a  administração  dos  nós  cluster;   •  Execução  de  backups  com  um  cliente  naNvo;   •  start/stop/restart  dos  nós  de  dados;   •  Responsável  pelo  processo  de  arbitra'on;   •  É  iniciado  apontando  um  arquivo  de  configuração  GLOBAL:   [root@mycluster-node01 mgm]# ls MySQL-Cluster-server-gpl-7.3.5-1.el6.x86_64.rpm [root@mycluster-node01 mgm]# ndb_mgmd -f /usr/local/ndb/config01.ndb MySQL Cluster Management Server mysql-5.6.17 ndb-7.3.5
    • 11. Componentes  do  Cluster   •  Componentes  básicos  que  compõem  o  MySQL  Cluster:   –  Storage/Data  Node  (ndbd/ndbmtd):   •  Responsável  para  armazenar  e  processar  os  dados;   •  Servem  à  transações  distribuídas  (com  Two  Phase  Commit);   •  Pode  ser  single-­‐threaded  (ndbd);   •  Pode  ser  mulN-­‐threaded  (ndbmtd);   •  Pode  ser  uNlizado  os  dois  em  uma  mesmo  ambiente;   •  UNliza  my.cnf  (local  file)  para  configurações  que  sobrescreve  o  GLOBAL;   •  Registra  os  dados  de  entrada  com  HASH;   •  Recupera  os  registros  através  do  seu  HASH  registrado  na  entrada;   –  TransacNon  Coordinator   –  Local  Query  Handler  
    • 12. Componentes  do  Cluster   •  Componentes  básicos  MySQL  Cluster:     –  Storage/Data  Node  (ndbd/ndbmtd):   DATA   WRITE   192.168.0.103   Data/Storage  Node   192.168.0.102   Data/Storage  Node   NDBD/NDMTD   TRANSCATION     COORDINATOR   PK  HASH   DATA   READ   NDBD/NDMTD   LOCAL  QUERY   HANDLER   PK  HASH   192.168.0.106   API/SQL  Node   192.168.0.107   API/SQL  Node  
    • 13. Componentes  do  Cluster   •  Iniciando  os  Data/Storage  Nodes  com  ndbd  (single-­‐threaded)     –  Storage/Data  Node  (ndbd/ndbmtd):   –  MulN-­‐Threaded  Data/Storage  Node  pode  ser  uNlizado  bastando  somente   trocar  o  binário  ndbd  por  ndbmtd.   [root@mycluster-node02 ~]# cat /etc/my.cnf [ndbd] # storage nodes connect string ndb-connectstring=192.168.0.101:1186,192,168.0.106:1186 [root@mycluster-node02 ~]# ndbd 2014-07-19 17:09:31 [ndbd] INFO -- Angel connected to '192.168.0.101:1186' 2014-07-19 17:09:31 [ndbd] INFO -- Angel allocated nodeid: 2 # [root@mycluster-node03 ~]# cat /etc/my.cnf [ndbd] # storage nodes connect string ndb-connectstring=192.168.0.101:1186,192,168.0.106:1186 [root@mycluster-node03 ~]# ndbd 2014-07-19 17:11:34 [ndbd] INFO -- Angel connected to '192.168.0.101:1186' 2014-07-19 17:11:34 [ndbd] INFO -- Angel allocated nodeid: 3
    • 14. Componentes  do  Cluster   •  Componentes  básicos  que  compõem  o  MySQL  Cluster:   –  API/SQL  Node  (mysqld,  ndb  clients):   •  É  a  ponta  aonde  o  cliente  acessa  os  bancos  de  dados  do  Cluster;   •  Não  é  nada  mais  que  um  MySQL  que  acessa  um  storage  remoto;   •  É  Ndo  como  a  camada  de  aplicação  ou  apresentação  do  banco;   •  Recebe  as  solicitações  de  dados  e  as  passa  para  os  Data  Nodes;   •  Recebe  de  volta  dos  Data  Nodes  os  dados  e  os  envia  para  o  cliente;  [root@mycluster-node04 ~]# vim /etc/my.cnf [mysqld] ndbcluster ndb-connectstring=192.168.0.101:1186,192,168.0.106:1186 [root@mycluster-node04 ~]# service mysql start Starting MySQL......... SUCCESS!
    • 15. Cluster  Auto-­‐Sharding   •  Com  base  na  necessidade  atual...   –  escala  de  escrita,  local  e  geograficamente;   –  manter   os   dados   sempre   acessíveis   enquanto   surgem   novas   demandas   de   alteração   dos   containers  de  dados  sem  que  haja  downNme;   –  suporte   à   adição   de   novas   funcionalidades,   promovendo   a   escala   de   acordo   com   as   necessidades  do  negócio;   –  suporte  à  janelas  de  manutenção  programadas  ...  sem  downNme!!     •  Com  isso,  o  MySQL  Cluster  7.3  dá  suporte...   –  distribuição  dos  dados  de  tabelas  pelos  nós  do  Cluster;   –  dependência   direta   entre   a   quanNdade   de   Data   Nodes   e   a   variável   NoOfReplicas;   4   Data   Nodes  e  NoOfReplicas=2  significa  que  o  auto-­‐shard  será  realizado  para  garanNr  escalabilidade   e  conNnuidade  do  cluster  em  caso  de  falha;  NoOfReplicas  pode  ser  configurado  com  valores   entre  1..4;   •  Caso  NoOfReplicas  seja  igual  ao  #  de  Data  Nodes,  cada  um  terá  um  fragmento  do  outro;   •  O  Auto-­‐Sharding  realizado  através  do  parNcionamento  horizontal,  [LINEAR]  KEY;  
    • 16. Cluster  Auto-­‐Sharding  
    • 17. Cluster  Auto-­‐Sharding  
    • 18. MySQL  Cluster  7.3  Configuracon    
    • 19. Arquivos  de  Configuração   •  Dois  Npos  de  arquivos  de  configuração:   –  Arquivos  de  configuração  locais  (my.cnf):   •  Os  arquivos  de  configuração  locais  são  aqueles  que  são  criados  nos  próprios   nós  para  determinadas  certas  caracterísNcas  e  funcionalidades  do  próprio  nó.   Existem  parâmetros  para  Data  Nodes  e  para  SQL  Nodes.     –  Arquivos  de  configuração  globais  (config.ini):   •  Os  arquivos  de  configuração  globais  são  arquivos  que  são  criados  e  apontados   na  inicialização  do  Management  Node,  que  na  maioria  das  implementações   são  os  árbitros  do  Cluster.  O  arquivo  é  lido  na  inicialização  para  que  os  nós  se   conheçam,  falem  uns  com  os  outros,  recebam  Nckets  e  liberam  a  adesão  dos   demais  nós  (acompenhe  o  log);    
    • 20. Arquivo  de  Configuração  GLOBAL   •  Definimos  as  seções  do  arquivo  GLOBAL  com  base  na   configurações  dos  nós  (arquivo  config.ini):   [ndb_mgmd] # Management node 01 NodeId=1 Hostname=192.168.0.101 DataDir=/var/lib/mysql-cluster [ndb_mgmd] # Management node 02 NodeId=7 Hostname=192.168.0.106 DataDir=/var/lib/mysql-cluster
    • 21. Arquivo  de  Configuração  GLOBAL   •  Definimos  as  seções  dos  Data/Storage  Nodes:   [ndbd default] DataDir=/var/lib/mysql-cluster NoOfReplicas=2 DiskPageBufferMemory=16M BackupDataDir=/stage # disco/partição/volume dedicada para armazenamento [ndbd] NodeId=2 Hostname=192.168.0.102 [ndbd] NodeId=3 Hostname=192.168.0.103
    • 22. Arquivo  de  Configuração  GLOBAL   •  Definimos  as  seções  dos  SQL  nodes:   [mysqld] NodeId=4 Hostname=192.168.0.104 [mysqld] NodeId=5 Hostname=192.168.0.15 [mysqld] NodeId=6 # para quaisquer outras APIs precisem se conectar # para realizar tarefas no cluster # no caso de backup/restore principalmente
    • 23. Arquivos  de  Configuração  LOCAL   •  Arquivos  de  configuração  locais  são  definidos  nos  Data  e  SQL     Nodes:   –  Data  Nodes:  o  arquivo  my.cnf  é  criado  em  /etc  com  as  opções  mais   convenientes  de  acordo  com  o  ambiente  –  basicamente:     –  SQL  Nodes:  o  arquivo  de  configuração  já  está  pronto,  este  que  é  o   próprio  my.cnf,  bastando  habilitar  o  NDB  Storage  Engine,  apontar  a   string  de  conexão  com  o  MGM  e  o  server_id:   [ndbd] ndb-connectstring=192.168.0.101:1186,192,168.0.106:1186 stoponerror nostart # se conecta ao management node mas não inicia [mysqld] server_id=5 ndbcluster ndb-connectstring=192.168.0.101:1186,192,168.0.106:1186
    • 24. Iniciando  o  Cluster   •  Existe  uma  ordem  correta  para  que  o  nós  componentes  do  cluster   sejam  iniciados:   –  Primeiro   inicie   os   Management   Nodes,   com   isso   os   arbitrators   serão   definidos;   –  Em   segundo   lugar,   inicie   os   Data   Nodes,   onde   uma   deles   será   eleito   o   president  ou  nó  master  dos  grupos  existentes  (sinalizado  pelo  sinal  *  na   saída  do  comando  SHOW);   –  Por  úlNmo,  inicie  os  SQL  Nodes,  pois,  somente  após  iniciar  os  Data  Nodes,   a   comunicação   dos   Ids   desNnados   ao   SQL   nodes   serão   liberados   para   cominucação  dentro  do  Cluster;  
    • 25. Iniciando  o  Cluster   MANAGEMENT  NODES   DATA/STORAGE  NODES   API/SQL  NODES   [root@mycluster-node05 ~]# echo "let's demo it"
    • 26. Iniciando  o  Cluster   # #: Reading the cluster from Management Node # ndb_mgm> show Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @192.168.0.102 (mysql-5.6.17 ndb-7.3.5, Nodegroup: 0, *) id=3 @192.168.0.103 (mysql-5.6.17 ndb-7.3.5, Nodegroup: 0) [ndb_mgmd(MGM)] 2 node(s) id=1 @192.168.0.101 (mysql-5.6.17 ndb-7.3.5) id=7 @192.168.0.106 (mysql-5.6.17 ndb-7.3.5) [mysqld(API)] 3 node(s) id=4 @192.168.0.104 (mysql-5.6.17 ndb-7.3.5) id=5 @192.168.0.105 (mysql-5.6.17 ndb-7.3.5) id=6 (not connected, accepting connect from any host)
    • 27. Rolling  Restart   •  Caso  uma  alterações  seja  necessária  no  arquivo  de  configuração   GLOBAL,  um  Rolling  Restart  do  Cluster  será  requerido:   –  Reinicie  os  Management  Nodes;   –  Reinicie  os  Data/Storage  Nodes  através  do  Management  Node;   –  Reinicie  os  SQL/API  Nodes;   •  Aqui  se  vê  a  necessidade  de  uma  camada  superior  que  controle  os   acesso  aos  SQL  nodes  para  que  o  serviço  de  bancos  de  dados  não   fique  fora  do  ar:   –  HAProxy;   –  Heartbeat/Pacemaker.  
    • 28. Rolling  Restart   1º   Management   Node   2º     Data  Nodes   3º     SQL  Nodes   Quando  se  altera  o  arquivo  de  configuração  GLOBAL   Quando  é  necessário  adicionar  novos  nós  ao  Cluster   Quando  uma  manutenção  é  necessária  
    • 29. Cluster  Troubleshoocng   •  Arquivos  de  logs   –  Arquivo  de  log  no  DataDir  do  Management  Node:     •  Comandos  administraNvos  através  do  Management  Node:   –  SHOW,  exibe  a  configuração  atual  do  cluster   –  STATUS,  informação  de  status  dos  Data  nodes   –  DUMP,  informações  gerais  para  os  logs   –  REPORT  –  MEMORYUSAGE,  BACKUPSTATUS,  EVENTLOG   [root@mycluster-mgm01 ~]# tail -f /var/lib/mysql-cluster/ndb_1_cluster.log 2014-07-26 16:33:52 [MgmtSrvr] INFO -- Node 3: Data usage is 32%(829 32K pages of total 2560) 2014-07-26 16:33:52 [MgmtSrvr] INFO -- Node 3: Index usage is 9%(221 8K pages of total 2336) 2014-07-26 16:33:52 [MgmtSrvr] INFO -- Node 3: Resource 0 min: 3124 max: 12231 curr: 5014 2014-07-26 16:33:52 [MgmtSrvr] INFO -- Node 3: Resource 2 min: 0 max: 0 curr: 2 2014-07-26 16:33:52 [MgmtSrvr] INFO -- Node 3: Resource 3 min: 3144 max: 3144 curr: 1413 2014-07-26 16:33:52 [MgmtSrvr] INFO -- Node 3: Resource 4 min: 720 max: 720 curr: 130
    • 30. MySQL  Cluster  7.3     Backup  &  Restore    
    • 31. Backup  Nacvo   •  Como  existe  uma  alocação  de  divisão  especial  dos  dados  ou   fragmentos  entre  os  nós,  o  mais  interessante  é  o  client  de  backup   naNvo:   –  É  realizado  através  do  Management  Node;   –  O  arquivo  é  armazenado  em  BackupDataDir  (BackupDevice);   –  Permite  acompanhamento  através  do  comando  REPORT;   –  A  nomenclatura  aponta  as  informações  de  restore;   –  O  Management  Node  informa  o  #  do  backup;   –  Algumas  opções/flags  são  aplicáveis;   –  Necessário  colocar  o  Cluster  em  SINGLE  USER  MODE.  
    • 32. Single  Mode   •  O  SINGLE  USER  MODE  servirá  para  garanNr  que  nenhum  transação   será  executada  durante  a  execução  do  backup;   –  Interessante  para  fazer  debug  de  aplicação;   –  Interessante  quando  é  possível  cessar  o  acesso  da  aplicação;   –  Interessante  quando  há  a  uNlização  de  ReplicaNon  Channel;   •  Por  isso  é  interessante  deixar  um  slot  “vago”  no  arquivo  de   configuração  GLOBAL  para  que  o  backup  possa  ser  realizado;   ndb_mgm> ENTER SINGLE USER MODE 6 Single user mode entered Access is granted for API node 6 only.
    • 33. Single  Mode  –  cluster  logs   •  Verificando  os  logs  do  cluster  no  Management  Node:   [root@mycluster-mgm01 tail -f /var/lib/mysql-cluster/ndb_1_cluster.log.ndb 2014-07-24 19:04:39 [MgmtSrvr] INFO -- MySQL Cluster Management Server mysql-5.6.17 ndb-7.3.5 started [...] ... -- Node 3: Entering single user mode ... -- Node 2: Entering single user mode ... -- Node 3: Entered single user mode Node 6 has exclusive access ... -- Node 2: Entered single user mode Node 6 has exclusive access
    • 34. Single  Mode  –  Data  nodes   ndb_mgm> SHOW Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @192.168.0.102 (mysql-5.6.17 ndb-7.3.5, single user mode, Nodegroup: 0, *) id=3 @192.168.0.103 (mysql-5.6.17 ndb-7.3.5, single user mode, Nodegroup: 0) [ndb_mgmd(MGM)] 2 node(s) id=1 @192.168.0.101 (mysql-5.6.17 ndb-7.3.5) id=7 @192.168.0.106 (mysql-5.6.17 ndb-7.3.5) [mysqld(API)] 3 node(s) id=4 @192.168.0.104 (mysql-5.6.17 ndb-7.3.5) id=5 @192.168.0.105 (mysql-5.6.17 ndb-7.3.5) id=6 (not connected, accepting connect from any host)
    • 35. Single  Mode  –  SQL  Nodes   [root@mycluster-node04 ~]# mysql -p Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 2 Server version: 5.6.17-ndb-7.3.5-cluster-gpl MySQL Cluster Community Server (GPL) Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> use test Database changed mysql> create table i (i int) engine=ndb; ERROR 1296 (HY000): Got error 299 'Operation not allowed or aborted due to single user mode' from NDBCLUSTER
    • 36. START  BACKUP   ndb_mgm> 2 REPORT BACKUPSTATUS # DATA NODE 2 Node 2: Backup not started ndb_mgm> 3 REPORT BACKUPSTATUS # DATA NODE 3 Node 3: Backup not started ndb_mgm> START BACKUP Waiting for completed, this may take several minutes Node 2: Backup 4 started from node 7 Node 2: Backup 4 started from node 7 completed StartGCP: 13988 StopGCP: 13991 #Records: 9367 #LogRecords: 0 Data: 577996 bytes Log: 0 bytes
    • 37. START  BACKUP   •  O  backup  será  criado  em  disco  de  acordo  com  configurações  da  variável   BackupDataDir:   •  A  nomenclatura  do  arquivo  segue  a  seguinte  convenção:   –  BACKUP-­‐backup_id.nodeid.Data  –  dados  do  fragmento  do  node  #  2;   –  BACKUP-­‐backup_id.nodeid.ctl  –  metadados  dos  bancos  de  dados;   –  BACKUP-­‐backup_id.nodeid.log  –  redo  logs  do  cluster;   •  O  arquivo  de  metadados  será  uNlizado  com  a  opção  –m  do  ndb_restore   para  criar  os  bancos  de  dados  em  um  novo  Data  Node;   [root@mycluster-node02 ~]# ls -lh /stage/BACKUP/BACKUP-5/ total 9.9M -rw-r--r-- 1 root root 9.9M Jul 26 15:57 BACKUP-5-0.2.Data -rw-r--r-- 1 root root 34K Jul 26 15:57 BACKUP-5.2.ctl -rw-r--r-- 1 root root 52 Jul 26 15:57 BACKUP-5.2.log
    • 38. Single  Mode   ndb_mgm> EXIT SINGLE USER MODE Exiting single user mode in progress. Use ALL STATUS or SHOW to see when single user mode has been exited. ndb_mgm> ALL STATUS Node 2: started (mysql-5.6.17 ndb-7.3.5) Node 3: started (mysql-5.6.17 ndb-7.3.5) ndb_mgm> SHOW Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @192.168.0.102 (mysql-5.6.17 ndb-7.3.5, Nodegroup: 0, *) id=3 @192.168.0.103 (mysql-5.6.17 ndb-7.3.5, Nodegroup: 0) [ndb_mgmd(MGM)] 2 node(s) id=1 @192.168.0.101 (mysql-5.6.17 ndb-7.3.5) id=7 @192.168.0.106 (mysql-5.6.17 ndb-7.3.5) [mysqld(API)] 3 node(s) id=4 @192.168.0.104 (mysql-5.6.17 ndb-7.3.5) id=5 @192.168.0.105 (mysql-5.6.17 ndb-7.3.5) id=6 (not connected, accepting connect from any host)
    • 39. Restore  –  ndb_restore   •  O  restore  de  backup  no  MySQL  Cluster  é  realizado  através  do  aplicaNvo   ndb_restore:   –  Realizado  em  cada  Data/Storage  Node  do  cluster;   –  UNliza  slot  [api]/[mysqld]  adicional  para  se  conectar  ao  cluster;   –  Interessante  na  maioria  dos  casos  uNlizar  SINGLE  MODE;   •  O  ndb_restore  requer  algumas  opções  para  que  o  restore  seja  realizado:   –  -­‐c  (connecNon_string),  é  a  connectstring  para  conexão  com  management  node;   –  -­‐n  (node_id),  qual  é  o  ID  do  node  alvo  do  restore;   –  -­‐b  (backup_id),  indica  qual  backup  será  restaurado;   –  -­‐m,  uNlizado  para  criar  os  metadados  (pode  ser  omiNdo*);   –  -­‐r,  caminho  dos  arquivo  de  backup.  
    • 40. Restore  –  ndb_restore  (-­‐n  2)   [root@mycluster-node02 ~]# ndb_restore -c 192.168.0.101:1186 -n 2 -b 5 -r /stage/BACKUP/BACKUP-5/ Nodeid = 2 Backup Id = 5 backup path = /stage/BACKUP/BACKUP-5/ Opening file '/stage/BACKUP/BACKUP-5/BACKUP-5.2.ctl' File size 34508 bytes Backup version in files: ndb-6.3.11 ndb version: mysql-5.6.17 ndb-7.3.5 Stop GCP of Backup: 15853 Connected to ndb!! Opening file '/stage/BACKUP/BACKUP-5/BACKUP-5-0.2.Data' File size 10282032 bytes _____________________________________________________ Processing data in table: mysql/def/NDB$BLOB_7_3(8) fragment 0 _____________________________________________________ Processing data in table: mysql/def/ndb_index_stat_sample(5) fragment 0 _____________________________________________________ Processing data in table: world/def/CountryLanguage(14) fragment 0 Processing data in table: world/def/Country(12) fragment 0 Opening file '/stage/BACKUP/BACKUP-5/BACKUP-5.2.log' File size 52 bytes Restored 52648 tuples and 0 log entries NDBT_ProgramExit: 0 - OK
    • 41. Restore  –  ndb_restore  (-­‐n  3)   [root@mycluster-node03 ~]# ndb_restore -c 192.168.0.101:1186 -n 3 -b 5 -r /stage/BACKUP/BACKUP-5/ Nodeid = 3 Backup Id = 5 backup path = /stage/BACKUP/BACKUP-5/ Opening file '/stage/BACKUP/BACKUP-5/BACKUP-5.3.ctl' File size 34508 bytes Backup version in files: ndb-6.3.11 ndb version: mysql-5.6.17 ndb-7.3.5 Stop GCP of Backup: 15853 Connected to ndb!! Opening file '/stage/BACKUP/BACKUP-5/BACKUP-5-0.3.Data' File size 10297224 bytes _____________________________________________________ Processing data in table: mysql/def/NDB$BLOB_7_3(8) fragment 1 _____________________________________________________ Processing data in table: mysql/def/ndb_index_stat_sample(5) fragment 1 _____________________________________________________ Processing data in table: world/def/CountryLanguage(14) fragment 1 Processing data in table: world/def/Country(12) fragment 1 Opening file '/stage/BACKUP/BACKUP-5/BACKUP-5.3.log' File size 52 bytes Restored 52655 tuples and 0 log entries NDBT_ProgramExit: 0 - OK
    • 42. MySQL  Cluster  7.3     Padrões  de  Projeto  
    • 43. Objetos  do  Cluster   •  Quando  se  inicia  um  projeto  ou  mesmo  se  pensa  em  migrar  para  bancos   de  dados  em  Cluster  com  o  MySQL:   –  Quais  são  os  dados  mais  críNcos;   –  Quais  são  os  dados  HOT?   –  Quais  são  os  dados  COLD?   –  Qual  o  tamanho  de  cada  subconjuntos  de  dados?   •  Hierarquia  de  objetos:   –  In-­‐Memory  Tables   •  Armazenam  dados  na  memória.   –  Disk-­‐based  Tables   •  Armazena  seu  dados  em  TABLESPACES,  enquanto  os  dados  NDB  são  armazenados  em   LOGFILE  GROUPS,  compostos  de  pelo  menos  um  arquivo  de  UNDO.  
    • 44. In-­‐Memory  Tables   •  Toda  tabela  criada  em  um  cluster  sem  a  direNva  TABLESPACE  terá   seus  dados  colocados  em  memória;   –  Interessante  fazer  o  dimensionamento  com  ndb_size.pl;   –  Efetuar  tuning  adequado  dos  parâmetros:   •  DataMemory:  determina  a  quanNdade  de  espaço  alocado  em  memória  para   armazenamento  de  dados  de  tabelas  NDB;   •  IndexMemory:  determina  a  quanNdade  de  espaço  alocado  em  memória  para   armazenamento  de  dados  conNdos  em  índices  do  Npo  HASH  em  tabelas  NDB;   –  Mais  indicado  para  dados  que  precisam  ser  acessados  com  mais  rapidez,   área  privilegiada;   –  Servidor  com  mais  memória  principal  que  secundária:   •  SDD  (SLC/MLC)  X  RAM  
    • 45. Disk-­‐based  Tables   •  Criamos  um  LOGFILE  GROUP  com  um  UNDOFILE  (informações   para  rollback  de  transações  NDB):   •  Criamos  um  TABLESPACE  com  um  DATAFILE:     •  Alteramos  a  tabela  para  as  estruturas  criadas:   mysql> CREATE LOGFILE GROUP wbcluster ADD UNDOFILE 'wbcluster.dat' -> INITIAL_SIZE=200M ENGINE=NDBCLUSTER; Query OK, 0 rows affected (0.95 sec) mysql> CREATE TABLESPACE wbtbs01 ADD DATAFILE 'wbtbs01.dat' -> USE LOGFILE GROUP wbcluster INITIAL_SIZE=100M ENGINE=NDB; Query OK, 0 rows affected (0.69 sec) mysql> ALTER TABLE sbtest TABLESPACE wbtbs01 STORAGE DISK; Query OK, 0 rows affected (0.81 sec) Records: 0 Duplicates: 0 Warnings: 0
    • 46. Disk-­‐based  Tables   mysql> select ... information_schema.files ... ; *************************** 1. row *************************** file_name: wbtbs01.dat total MB: 100.00000000 free MB: 100.00000000 extra: CLUSTER_NODE=2 *************************** 2. row *************************** file_name: wbtbs01.dat total MB: 100.00000000 free MB: 100.00000000 extra: CLUSTER_NODE=3 *************************** 3. row *************************** file_name: wbcluster.dat total MB: 200.00000000 free MB: NULL extra: CLUSTER_NODE=2;UNDO_BUFFER_SIZE=8388608 *************************** 4. row *************************** file_name: wbcluster.dat total MB: 200.00000000 free MB: NULL extra: CLUSTER_NODE=3;UNDO_BUFFER_SIZE=8388608 4 rows in set (0.06 sec)
    • 47. Foreign  Keys  (MySQL  Cluster  7.3++)  
    • 48. Foreign  Keys  (MySQL  Cluster  7.3++)   •  Umas  das  novas  features  do  MySQL  Cluster  7.3...   mysql> create table t1(id int not null primary key, name varchar(100)) -> engine=ndb tablespace wbtbs01 storage disk; Query OK, 0 rows affected (1.31 sec) mysql> create table t2(id int not null auto_increment primary key, -> id_t1 int not null, date timestamp) -> engine=ndb tablespace wbtbs01 storage disk; Query OK, 0 rows affected (0.96 sec) mysql> alter table t2 add constraint fk_t1_t2 foreign key (id_t1) -> references t1(id) on delete restrict on update restrict; Query OK, 0 rows affected (0.57 sec) Records: 0 Duplicates: 0 Warnings: 0
    • 49. Node.JS/Memcached   Interação  direta  com  os  dados  do  Cluster   Interagindo  client/API  através  de  JavaScript     Disponível  através  de  um  Conector   Desenvolvimento  de  serviços  Real-­‐Time   Possibilidade  de  uNlização  de  SQL/NoSQL  
    • 50. MySQL  Cluster  7.3     Replicação  Geográfica  
    • 51. Distribuição  Geográfica  
    • 52. Distribuição  Geográfica  
    • 53. And...  
    • 54. Obrigado!   Wagner  Bianchi,  Oracle  ACE  Director  –  me@wagnerbianchi.com   Wagner  Bianchi  é  Oracle  ACE  Director,  com   cerNficações:     •  MySQL  CerNfied  Database  Cluster  Administrator   •  MySQL  CerNfied  Database  Administrator   •  MySQL  CerNfied  Developer     Formando  em  Gerenciamento  de  Bancos  de  Dados,  com   Pós-­‐Graduação  em  Administração  de  Empresas  pela  FGV   e  MBA  em  Gerenciamento  de  Bancos  de  Dados  Oracle.     Blog:  wagnerbianchi.com   E-­‐mail:  me@wagnerbianchi.com  

    ×