Advertisement
Advertisement

More Related Content

Advertisement
Advertisement

Recently uploaded(20)

Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3

  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  

Editor's Notes

  1. SHOW ENGINE NDB STATUS;
Advertisement