MySQL	
  Cluster	
  7.3	
  -­‐	
  Implementação	
  
Wagner	
  Bianchi	
  –	
  Oracle	
  ACE	
  Director	
  
GUOB	
  2014	
...
MySQL	
  Cluster	
  7.3	
  at	
  GUOB	
  2014,	
  me@wagnerbianchi.com	
  
Agenda	
  
Parte	
  I	
  
•  Arquitetura	
  MyS...
Ambiente	
  de	
  Testes	
  
•  Foram	
  disponibilizadas	
  7	
  máquinas	
  virtuais	
  CentOS	
  6.5	
  
Component	
  N...
Ambiente	
  de	
  Testes	
  
•  Com	
  os	
  servidores	
  virtuais	
  prontos	
  e	
  papéis	
  definidos,	
  uNlize	
  o	...
Ambiente	
  de	
  Testes	
  
•  Siga	
  a	
  tabela	
  abaixo	
  para	
  fazer	
  a	
  separação	
  dos	
  pacotes	
  segu...
192.168.0.104	
  
API/SQL	
  Node	
  
192.168.0.105	
  
API/SQL	
  Node	
  
192.168.0.101	
  
Management	
  Node	
  
192.1...
MySQL	
  Cluster	
  7.3	
  New	
  Features	
  
Arquitetura	
  MySQL	
  Cluster	
  7.3	
  	
  
Arquitetura	
  MySQL	
  Cluster	
  7.3	
  
Componentes	
  do	
  Cluster	
  
•  Componentes	
  básicos	
  que	
  compõem	
  o	
  MySQL	
  Cluster:	
  
–  Management	
...
Componentes	
  do	
  Cluster	
  
•  Componentes	
  básicos	
  que	
  compõem	
  o	
  MySQL	
  Cluster:	
  
–  Storage/Data...
Componentes	
  do	
  Cluster	
  
•  Componentes	
  básicos	
  MySQL	
  Cluster:	
  	
  
–  Storage/Data	
  Node	
  (ndbd/n...
Componentes	
  do	
  Cluster	
  
•  Iniciando	
  os	
  Data/Storage	
  Nodes	
  com	
  ndbd	
  (single-­‐threaded)	
  	
  ...
Componentes	
  do	
  Cluster	
  
•  Componentes	
  básicos	
  que	
  compõem	
  o	
  MySQL	
  Cluster:	
  
–  API/SQL	
  N...
Cluster	
  Auto-­‐Sharding	
  
•  Com	
  base	
  na	
  necessidade	
  atual...	
  
–  escala	
  de	
  escrita,	
  local	
 ...
Cluster	
  Auto-­‐Sharding	
  
Cluster	
  Auto-­‐Sharding	
  
MySQL	
  Cluster	
  7.3	
  Configuracon	
  	
  
Arquivos	
  de	
  Configuração	
  
•  Dois	
  Npos	
  de	
  arquivos	
  de	
  configuração:	
  
–  Arquivos	
  de	
  configur...
Arquivo	
  de	
  Configuração	
  GLOBAL	
  
•  Definimos	
  as	
  seções	
  do	
  arquivo	
  GLOBAL	
  com	
  base	
  na	
  ...
Arquivo	
  de	
  Configuração	
  GLOBAL	
  
•  Definimos	
  as	
  seções	
  dos	
  Data/Storage	
  Nodes:	
  
[ndbd default]...
Arquivo	
  de	
  Configuração	
  GLOBAL	
  
•  Definimos	
  as	
  seções	
  dos	
  SQL	
  nodes:	
  
[mysqld]
NodeId=4
Hostn...
Arquivos	
  de	
  Configuração	
  LOCAL	
  
•  Arquivos	
  de	
  configuração	
  locais	
  são	
  definidos	
  nos	
  Data	
 ...
Iniciando	
  o	
  Cluster	
  
•  Existe	
  uma	
  ordem	
  correta	
  para	
  que	
  o	
  nós	
  componentes	
  do	
  clus...
Iniciando	
  o	
  Cluster	
  
MANAGEMENT	
  NODES	
  
DATA/STORAGE	
  NODES	
  
API/SQL	
  NODES	
  
[root@mycluster-node0...
Iniciando	
  o	
  Cluster	
  
#
#: Reading the cluster from Management Node
#
ndb_mgm> show
Cluster Configuration
--------...
Rolling	
  Restart	
  
•  Caso	
  uma	
  alterações	
  seja	
  necessária	
  no	
  arquivo	
  de	
  configuração	
  
GLOBAL...
Rolling	
  Restart	
  
1º	
  
Management	
  
Node	
  
2º	
  	
  
Data	
  Nodes	
  
3º	
  	
  
SQL	
  Nodes	
  
Quando	
  s...
Cluster	
  Troubleshoocng	
  
•  Arquivos	
  de	
  logs	
  
–  Arquivo	
  de	
  log	
  no	
  DataDir	
  do	
  Management	
...
MySQL	
  Cluster	
  7.3	
  	
  
Backup	
  &	
  Restore	
  	
  
Backup	
  Nacvo	
  
•  Como	
  existe	
  uma	
  alocação	
  de	
  divisão	
  especial	
  dos	
  dados	
  ou	
  
fragmentos...
Single	
  Mode	
  
•  O	
  SINGLE	
  USER	
  MODE	
  servirá	
  para	
  garanNr	
  que	
  nenhum	
  transação	
  
será	
  ...
Single	
  Mode	
  –	
  cluster	
  logs	
  
•  Verificando	
  os	
  logs	
  do	
  cluster	
  no	
  Management	
  Node:	
  
[...
Single	
  Mode	
  –	
  Data	
  nodes	
  
ndb_mgm> SHOW
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
i...
Single	
  Mode	
  –	
  SQL	
  Nodes	
  
[root@mycluster-node04 ~]# mysql -p
Enter password:
Welcome to the MySQL monitor. ...
START	
  BACKUP	
  
ndb_mgm> 2 REPORT BACKUPSTATUS # DATA NODE 2
Node 2: Backup not started
ndb_mgm> 3 REPORT BACKUPSTATUS...
START	
  BACKUP	
  
•  O	
  backup	
  será	
  criado	
  em	
  disco	
  de	
  acordo	
  com	
  configurações	
  da	
  variáv...
Single	
  Mode	
  
ndb_mgm> EXIT SINGLE USER MODE
Exiting single user mode in progress.
Use ALL STATUS or SHOW to see when...
Restore	
  –	
  ndb_restore	
  
•  O	
  restore	
  de	
  backup	
  no	
  MySQL	
  Cluster	
  é	
  realizado	
  através	
  ...
Restore	
  –	
  ndb_restore	
  (-­‐n	
  2)	
  
[root@mycluster-node02 ~]# ndb_restore -c 192.168.0.101:1186 -n 2 -b 5 -r /...
Restore	
  –	
  ndb_restore	
  (-­‐n	
  3)	
  
[root@mycluster-node03 ~]# ndb_restore -c 192.168.0.101:1186 -n 3 -b 5 -r /...
MySQL	
  Cluster	
  7.3	
  	
  
Padrões	
  de	
  Projeto	
  
Objetos	
  do	
  Cluster	
  
•  Quando	
  se	
  inicia	
  um	
  projeto	
  ou	
  mesmo	
  se	
  pensa	
  em	
  migrar	
  p...
In-­‐Memory	
  Tables	
  
•  Toda	
  tabela	
  criada	
  em	
  um	
  cluster	
  sem	
  a	
  direNva	
  TABLESPACE	
  terá	...
Disk-­‐based	
  Tables	
  
•  Criamos	
  um	
  LOGFILE	
  GROUP	
  com	
  um	
  UNDOFILE	
  (informações	
  
para	
  rollb...
Disk-­‐based	
  Tables	
  
mysql> select ... information_schema.files ... ;
*************************** 1. row ***********...
Foreign	
  Keys	
  (MySQL	
  Cluster	
  7.3++)	
  
Foreign	
  Keys	
  (MySQL	
  Cluster	
  7.3++)	
  
•  Umas	
  das	
  novas	
  features	
  do	
  MySQL	
  Cluster	
  7.3......
Node.JS/Memcached	
  
Interação	
  direta	
  com	
  os	
  dados	
  do	
  Cluster	
  
Interagindo	
  client/API	
  através	...
MySQL	
  Cluster	
  7.3	
  	
  
Replicação	
  Geográfica	
  
Distribuição	
  Geográfica	
  
Distribuição	
  Geográfica	
  
And...	
  
Obrigado!	
  
Wagner	
  Bianchi,	
  Oracle	
  ACE	
  Director	
  –	
  me@wagnerbianchi.com	
  
Wagner	
  Bianchi	
  é	
  O...
Upcoming SlideShare
Loading in...5
×

Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3

442

Published on

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
442
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
11
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • SHOW ENGINE NDB STATUS;
  • Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3

    1. 1. MySQL  Cluster  7.3  -­‐  Implementação   Wagner  Bianchi  –  Oracle  ACE  Director   GUOB  2014   Edição  #  19  –  Ano  2014    
    2. 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. 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. 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. 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. 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. 7. MySQL  Cluster  7.3  New  Features  
    8. 8. Arquitetura  MySQL  Cluster  7.3    
    9. 9. Arquitetura  MySQL  Cluster  7.3  
    10. 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. 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. 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. 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. 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. 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. 16. Cluster  Auto-­‐Sharding  
    17. 17. Cluster  Auto-­‐Sharding  
    18. 18. MySQL  Cluster  7.3  Configuracon    
    19. 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. 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. 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. 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. 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. 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. 25. Iniciando  o  Cluster   MANAGEMENT  NODES   DATA/STORAGE  NODES   API/SQL  NODES   [root@mycluster-node05 ~]# echo "let's demo it"
    26. 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. 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. 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. 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. 30. MySQL  Cluster  7.3     Backup  &  Restore    
    31. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 42. MySQL  Cluster  7.3     Padrões  de  Projeto  
    43. 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. 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. 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. 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. 47. Foreign  Keys  (MySQL  Cluster  7.3++)  
    48. 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. 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. 50. MySQL  Cluster  7.3     Replicação  Geográfica  
    51. 51. Distribuição  Geográfica  
    52. 52. Distribuição  Geográfica  
    53. 53. And...  
    54. 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  
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×