SlideShare uma empresa Scribd logo
MySQL	
  Cluster	
  7.3	
  -­‐	
  Implementação	
  
Wagner	
  Bianchi	
  –	
  Oracle	
  ACE	
  Director	
  
GUOB	
  2014	
  
Edição	
  #	
  19	
  –	
  Ano	
  2014	
  	
  
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	
  
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!!	
  
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; 	
   	
  	
  
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
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	
  
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	
  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
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	
  
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	
  
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
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!
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;	
  
Cluster	
  Auto-­‐Sharding	
  
Cluster	
  Auto-­‐Sharding	
  
MySQL	
  Cluster	
  7.3	
  Configuracon	
  	
  
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);	
  	
  
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
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
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
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
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;	
  
Iniciando	
  o	
  Cluster	
  
MANAGEMENT	
  NODES	
  
DATA/STORAGE	
  NODES	
  
API/SQL	
  NODES	
  
[root@mycluster-node05 ~]# echo "let's demo it"
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)
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.	
  
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	
  
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
MySQL	
  Cluster	
  7.3	
  	
  
Backup	
  &	
  Restore	
  	
  
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.	
  
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.
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
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)
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
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
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
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)
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.	
  
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
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
MySQL	
  Cluster	
  7.3	
  	
  
Padrões	
  de	
  Projeto	
  
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.	
  
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	
  
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
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)
Foreign	
  Keys	
  (MySQL	
  Cluster	
  7.3++)	
  
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
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	
  
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	
  é	
  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	
  

Mais conteúdo relacionado

Mais procurados

Clusters
ClustersClusters
Disaster Recovery usando Windows Server 2012 R2, Microsoft System Center 2012...
Disaster Recovery usando Windows Server 2012 R2, Microsoft System Center 2012...Disaster Recovery usando Windows Server 2012 R2, Microsoft System Center 2012...
Disaster Recovery usando Windows Server 2012 R2, Microsoft System Center 2012...
Daniel Donda - MVP
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?
Marcelo Dieder
 
Linux Network Fault Tolerance
Linux Network Fault ToleranceLinux Network Fault Tolerance
Linux Network Fault Tolerance
Frederico Madeira
 
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQLEstudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Orlando Vitali
 
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Matheus Espanhol
 
Estendendo o kubernetes
Estendendo o kubernetesEstendendo o kubernetes
Estendendo o kubernetes
Ricardo Katz
 
DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
DBA Brasil 2.0   NOSql Apache Cassandra para DBAsDBA Brasil 2.0   NOSql Apache Cassandra para DBAs
DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
Ronaldo Leite Martins
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geral
MySQL Brasil
 
Alta Disponibilidade em Linux com Heartbeat e Drbd
Alta Disponibilidade em Linux com Heartbeat e DrbdAlta Disponibilidade em Linux com Heartbeat e Drbd
Alta Disponibilidade em Linux com Heartbeat e Drbd
Frederico Madeira
 
TDC2018SP | Trilha Containers - Docker Swarm - Os problemas
TDC2018SP | Trilha Containers - Docker Swarm - Os problemasTDC2018SP | Trilha Containers - Docker Swarm - Os problemas
TDC2018SP | Trilha Containers - Docker Swarm - Os problemas
tdc-globalcode
 
Conhecendo Apache Cassandra @Movile
Conhecendo Apache Cassandra  @MovileConhecendo Apache Cassandra  @Movile
Conhecendo Apache Cassandra @Movile
Eiti Kimura
 
Adequação do servidor Proxy/Cache Squid a redes de extrema carga
Adequação do servidor Proxy/Cache Squid a redes de extrema cargaAdequação do servidor Proxy/Cache Squid a redes de extrema carga
Adequação do servidor Proxy/Cache Squid a redes de extrema carga
Lucas Brasilino
 
Windows Admin Center
Windows Admin CenterWindows Admin Center
Windows Admin Center
Fabio Hara
 
Alta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDAlta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBD
Frederico Madeira
 
Apresentacao gt cnc-workshop_iniciliazicao_fase2
Apresentacao gt cnc-workshop_iniciliazicao_fase2Apresentacao gt cnc-workshop_iniciliazicao_fase2
Apresentacao gt cnc-workshop_iniciliazicao_fase2
Lucas Silva
 
Replicação e alta disponibilidade by wagner bianchi -
Replicação e alta disponibilidade by wagner bianchi -Replicação e alta disponibilidade by wagner bianchi -
Replicação e alta disponibilidade by wagner bianchi -
MySQL Brasil
 
Terraform + Kops + Kubernetes na AWS
Terraform + Kops + Kubernetes na AWSTerraform + Kops + Kubernetes na AWS
Terraform + Kops + Kubernetes na AWS
Leandro Freitas
 
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesWorkshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Rodrigo Cândido da Silva
 
HA em PostgreSQL: O Elefante disponível para além do infinito
HA em PostgreSQL: O Elefante disponível para além do infinitoHA em PostgreSQL: O Elefante disponível para além do infinito
HA em PostgreSQL: O Elefante disponível para além do infinito
elliando dias
 

Mais procurados (20)

Clusters
ClustersClusters
Clusters
 
Disaster Recovery usando Windows Server 2012 R2, Microsoft System Center 2012...
Disaster Recovery usando Windows Server 2012 R2, Microsoft System Center 2012...Disaster Recovery usando Windows Server 2012 R2, Microsoft System Center 2012...
Disaster Recovery usando Windows Server 2012 R2, Microsoft System Center 2012...
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?
 
Linux Network Fault Tolerance
Linux Network Fault ToleranceLinux Network Fault Tolerance
Linux Network Fault Tolerance
 
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQLEstudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQL
 
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
 
Estendendo o kubernetes
Estendendo o kubernetesEstendendo o kubernetes
Estendendo o kubernetes
 
DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
DBA Brasil 2.0   NOSql Apache Cassandra para DBAsDBA Brasil 2.0   NOSql Apache Cassandra para DBAs
DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geral
 
Alta Disponibilidade em Linux com Heartbeat e Drbd
Alta Disponibilidade em Linux com Heartbeat e DrbdAlta Disponibilidade em Linux com Heartbeat e Drbd
Alta Disponibilidade em Linux com Heartbeat e Drbd
 
TDC2018SP | Trilha Containers - Docker Swarm - Os problemas
TDC2018SP | Trilha Containers - Docker Swarm - Os problemasTDC2018SP | Trilha Containers - Docker Swarm - Os problemas
TDC2018SP | Trilha Containers - Docker Swarm - Os problemas
 
Conhecendo Apache Cassandra @Movile
Conhecendo Apache Cassandra  @MovileConhecendo Apache Cassandra  @Movile
Conhecendo Apache Cassandra @Movile
 
Adequação do servidor Proxy/Cache Squid a redes de extrema carga
Adequação do servidor Proxy/Cache Squid a redes de extrema cargaAdequação do servidor Proxy/Cache Squid a redes de extrema carga
Adequação do servidor Proxy/Cache Squid a redes de extrema carga
 
Windows Admin Center
Windows Admin CenterWindows Admin Center
Windows Admin Center
 
Alta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDAlta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBD
 
Apresentacao gt cnc-workshop_iniciliazicao_fase2
Apresentacao gt cnc-workshop_iniciliazicao_fase2Apresentacao gt cnc-workshop_iniciliazicao_fase2
Apresentacao gt cnc-workshop_iniciliazicao_fase2
 
Replicação e alta disponibilidade by wagner bianchi -
Replicação e alta disponibilidade by wagner bianchi -Replicação e alta disponibilidade by wagner bianchi -
Replicação e alta disponibilidade by wagner bianchi -
 
Terraform + Kops + Kubernetes na AWS
Terraform + Kops + Kubernetes na AWSTerraform + Kops + Kubernetes na AWS
Terraform + Kops + Kubernetes na AWS
 
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesWorkshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
 
HA em PostgreSQL: O Elefante disponível para além do infinito
HA em PostgreSQL: O Elefante disponível para além do infinitoHA em PostgreSQL: O Elefante disponível para além do infinito
HA em PostgreSQL: O Elefante disponível para além do infinito
 

Destaque

UNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - ReplicaçãoUNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - Replicação
Wagner Bianchi
 
UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6
Wagner Bianchi
 
UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6
Wagner Bianchi
 
MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016
Wagner Bianchi
 
14.03.23 livro sobre pentaho
14.03.23   livro sobre pentaho14.03.23   livro sobre pentaho
14.03.23 livro sobre pentaho
Talita Lima
 
Aula 01-Tutorial ETL com PDI
Aula 01-Tutorial ETL com PDIAula 01-Tutorial ETL com PDI
Aula 01-Tutorial ETL com PDI
Jarley Nóbrega
 

Destaque (6)

UNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - ReplicaçãoUNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - Replicação
 
UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6
 
UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6
 
MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016
 
14.03.23 livro sobre pentaho
14.03.23   livro sobre pentaho14.03.23   livro sobre pentaho
14.03.23 livro sobre pentaho
 
Aula 01-Tutorial ETL com PDI
Aula 01-Tutorial ETL com PDIAula 01-Tutorial ETL com PDI
Aula 01-Tutorial ETL com PDI
 

Semelhante a Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3

MySQL em 10min - Alexandre Almeida HTI Tecnologia
MySQL em 10min - Alexandre Almeida HTI TecnologiaMySQL em 10min - Alexandre Almeida HTI Tecnologia
MySQL em 10min - Alexandre Almeida HTI Tecnologia
MySQL Brasil
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geral
MySQL Brasil
 
Mysql for IBMers
Mysql for IBMersMysql for IBMers
Mysql for IBMers
Wagner Bianchi
 
MySQL - o banco de dados open source mais popular do mundo
MySQL - o banco de dados open source mais popular do mundoMySQL - o banco de dados open source mais popular do mundo
MySQL - o banco de dados open source mais popular do mundo
MySQL Brasil
 
Usando Hyper-v 2012 para virtualização do SQL Server
Usando Hyper-v 2012 para virtualização do SQL ServerUsando Hyper-v 2012 para virtualização do SQL Server
Usando Hyper-v 2012 para virtualização do SQL Server
leorsilva
 
MySQL no Windows: implementação eficiente de novas aplicações
MySQL no Windows: implementação eficiente de novas aplicaçõesMySQL no Windows: implementação eficiente de novas aplicações
MySQL no Windows: implementação eficiente de novas aplicações
MySQL Brasil
 
Mysql cluster quick start webinar
Mysql cluster quick start webinarMysql cluster quick start webinar
Mysql cluster quick start webinar
henriquesidney
 
Virtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno DominguesVirtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno Domingues
Joao Galdino Mello de Souza
 
Aceleração em Hardware para OpenSSL em Sistemas Embarcados: Introdução e conc...
Aceleração em Hardware para OpenSSL em Sistemas Embarcados: Introdução e conc...Aceleração em Hardware para OpenSSL em Sistemas Embarcados: Introdução e conc...
Aceleração em Hardware para OpenSSL em Sistemas Embarcados: Introdução e conc...
Bruno Castelucci
 
SNMP - Rafael Rodriques
SNMP - Rafael RodriquesSNMP - Rafael Rodriques
SNMP - Rafael Rodriques
marleigrolli
 
Aws sao paulo summit 2015 elasti cache avancado
Aws sao paulo summit 2015   elasti cache avancadoAws sao paulo summit 2015   elasti cache avancado
Aws sao paulo summit 2015 elasti cache avancado
Amazon Web Services LATAM
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
Felipe Ribeiro
 
Consegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + PuppetConsegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + Puppet
Jose Augusto Carvalho
 
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
MySQL Brasil
 
Cloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performanceCloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performance
Saveincloud
 
Redes e Servidores
Redes e ServidoresRedes e Servidores
Redes e Servidores
0711199746bb55
 
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Wagner Bianchi
 
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
Caio Candido
 
Cluster de Alta disponibilidade
Cluster de Alta disponibilidadeCluster de Alta disponibilidade
Cluster de Alta disponibilidade
Marcelo Garcia
 
MySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta DisponibilidadeMySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta Disponibilidade
MySQL Brasil
 

Semelhante a Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3 (20)

MySQL em 10min - Alexandre Almeida HTI Tecnologia
MySQL em 10min - Alexandre Almeida HTI TecnologiaMySQL em 10min - Alexandre Almeida HTI Tecnologia
MySQL em 10min - Alexandre Almeida HTI Tecnologia
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geral
 
Mysql for IBMers
Mysql for IBMersMysql for IBMers
Mysql for IBMers
 
MySQL - o banco de dados open source mais popular do mundo
MySQL - o banco de dados open source mais popular do mundoMySQL - o banco de dados open source mais popular do mundo
MySQL - o banco de dados open source mais popular do mundo
 
Usando Hyper-v 2012 para virtualização do SQL Server
Usando Hyper-v 2012 para virtualização do SQL ServerUsando Hyper-v 2012 para virtualização do SQL Server
Usando Hyper-v 2012 para virtualização do SQL Server
 
MySQL no Windows: implementação eficiente de novas aplicações
MySQL no Windows: implementação eficiente de novas aplicaçõesMySQL no Windows: implementação eficiente de novas aplicações
MySQL no Windows: implementação eficiente de novas aplicações
 
Mysql cluster quick start webinar
Mysql cluster quick start webinarMysql cluster quick start webinar
Mysql cluster quick start webinar
 
Virtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno DominguesVirtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno Domingues
 
Aceleração em Hardware para OpenSSL em Sistemas Embarcados: Introdução e conc...
Aceleração em Hardware para OpenSSL em Sistemas Embarcados: Introdução e conc...Aceleração em Hardware para OpenSSL em Sistemas Embarcados: Introdução e conc...
Aceleração em Hardware para OpenSSL em Sistemas Embarcados: Introdução e conc...
 
SNMP - Rafael Rodriques
SNMP - Rafael RodriquesSNMP - Rafael Rodriques
SNMP - Rafael Rodriques
 
Aws sao paulo summit 2015 elasti cache avancado
Aws sao paulo summit 2015   elasti cache avancadoAws sao paulo summit 2015   elasti cache avancado
Aws sao paulo summit 2015 elasti cache avancado
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Consegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + PuppetConsegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + Puppet
 
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
 
Cloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performanceCloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performance
 
Redes e Servidores
Redes e ServidoresRedes e Servidores
Redes e Servidores
 
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
 
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
 
Cluster de Alta disponibilidade
Cluster de Alta disponibilidadeCluster de Alta disponibilidade
Cluster de Alta disponibilidade
 
MySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta DisponibilidadeMySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta Disponibilidade
 

Mais de Wagner Bianchi

Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18
Wagner Bianchi
 
Maxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoinMaxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoin
Wagner Bianchi
 
Meetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de UsoMeetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de Uso
Wagner Bianchi
 
NY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with MaxscaleNY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with Maxscale
Wagner Bianchi
 
Webinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Webinar: MariaDB Provides the Solution to Ease Multi-Source ReplicationWebinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Webinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Wagner Bianchi
 
UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6
Wagner Bianchi
 
UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6
Wagner Bianchi
 
UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6
Wagner Bianchi
 
UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6
Wagner Bianchi
 
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
Wagner Bianchi
 
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
Wagner Bianchi
 
Introdução ao MySQL 5.6
Introdução ao MySQL 5.6Introdução ao MySQL 5.6
Introdução ao MySQL 5.6
Wagner Bianchi
 
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQLInnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
Wagner Bianchi
 
MySQL Cluster Product Overview
MySQL Cluster Product OverviewMySQL Cluster Product Overview
MySQL Cluster Product Overview
Wagner Bianchi
 
MySQL Cluster Basics
MySQL Cluster BasicsMySQL Cluster Basics
MySQL Cluster Basics
Wagner Bianchi
 

Mais de Wagner Bianchi (15)

Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18
 
Maxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoinMaxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoin
 
Meetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de UsoMeetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de Uso
 
NY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with MaxscaleNY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with Maxscale
 
Webinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Webinar: MariaDB Provides the Solution to Ease Multi-Source ReplicationWebinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Webinar: MariaDB Provides the Solution to Ease Multi-Source Replication
 
UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6
 
UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6
 
UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6
 
UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6
 
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
 
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
 
Introdução ao MySQL 5.6
Introdução ao MySQL 5.6Introdução ao MySQL 5.6
Introdução ao MySQL 5.6
 
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQLInnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
 
MySQL Cluster Product Overview
MySQL Cluster Product OverviewMySQL Cluster Product Overview
MySQL Cluster Product Overview
 
MySQL Cluster Basics
MySQL Cluster BasicsMySQL Cluster Basics
MySQL Cluster Basics
 

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  
  • 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;  
  • 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  
  • 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  

Notas do Editor

  1. SHOW ENGINE NDB STATUS;