SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
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
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;
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;
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
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
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
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
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