wagner bianchi, guob 2014 mysql cluster 7.3
DESCRIPTION
This is the presentation used on my session on GUOB 2014, São Paulo, Brazil.TRANSCRIPT
![Page 2: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/2.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
Wagner Bianchi
Formado em Gerenciamento de bancos de dados pela Faculdade Infórium de Tecnologia, como Pós-Graduação em Administração de Empresas em MBA em Oracle Database. Com passagens por empresas como Pythian, Oracle, Percona, IBM e Accenture, Bianchi é especialista em MySQL certificado em:
Certified MySQL Associate 5.0Certified MySQL Developer 5.0Certified MySQL Administrator 5.0Certified MySQL Cluster Database Administrator 5.1
Blog: wagnerbianchi.com
![Page 3: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/3.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
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 Configuration– 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– Ativo/Passivo– Ativo/Ativo
![Page 4: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/4.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• Foram disponibilizadas 7 máquinas virtuais CentOS 6.5
Ambiente de Testes
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!!
![Page 5: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/5.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• Com os servidores virtuais prontos e papéis definidos, utilize 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
![Page 6: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/6.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• 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;
Ambiente de Testes
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.rpmMySQL-Cluster-server-gpl-7.3.5-1.el6.x86_64.rpmMySQL-Cluster-shared-compat-gpl-7.3.5-1.el6.x86_64.rpmMySQL-Cluster-shared-gpl-7.3.5-1.el6.x86_64.rpm
![Page 7: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/7.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
192.168.0.104API/SQL Node
192.168.0.105API/SQL Node
192.168.0.101Management Node
192.168.0.200HAProxy
192.168.0.103Data/Storage Node
192.168.0.102Data/Storage Node
192.168.0.106Management Node
Ambiente de Testes
![Page 11: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/11.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• 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 nativo;• start/stop/restart dos nós de dados;• Responsável pelo processo de arbitration;• É iniciado apontando um arquivo de configuração GLOBAL:
Componentes do Cluster
[root@mycluster-node01 mgm]# lsMySQL-Cluster-server-gpl-7.3.5-1.el6.x86_64.rpm[root@mycluster-node01 mgm]# ndb_mgmd -f /usr/local/ndb/config01.ndbMySQL Cluster Management Server mysql-5.6.17 ndb-7.3.5
![Page 12: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/12.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• 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 multi-threaded (ndbmtd);• Pode ser utilizado os dois em uma mesmo ambiente;• Utiliza 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;
– Transaction Coordinator– Local Query Handler
Componentes do Cluster
![Page 13: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/13.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• Componentes básicos MySQL Cluster:
– Storage/Data Node (ndbd/ndbmtd):
Componentes do Cluster
DATAWRITE
192.168.0.103Data/Storage Node
192.168.0.102Data/Storage Node
NDBD/NDMTDTRANSCATION COORDINATOR
PK HASH
DATAREAD
NDBD/NDMTDLOCAL QUERY
HANDLERPK HASH
192.168.0.106API/SQL Node
192.168.0.107API/SQL Node
![Page 14: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/14.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• Iniciando os Data/Storage Nodes com ndbd (single-threaded)
– Storage/Data Node (ndbd/ndbmtd):
– Multi-Threaded Data/Storage Node pode ser utilizado bastando somente trocar o binário ndbd por ndbmtd.
Componentes do Cluster
[root@mycluster-node02 ~]# cat /etc/my.cnf[ndbd]# storage nodes connect stringndb-connectstring=192.168.0.101:1186,192,168.0.106:1186[root@mycluster-node02 ~]# ndbd2014-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 stringndb-connectstring=192.168.0.101:1186,192,168.0.106:1186[root@mycluster-node03 ~]# ndbd2014-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
![Page 15: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/15.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• 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;• É tido 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;
Componentes do Cluster
[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 startStarting MySQL......... SUCCESS!
![Page 16: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/16.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• 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 downtime;– suporte à adição de novas funcionalidades, promovendo a escala de acordo
com as necessidades do negócio;– suporte à janelas de manutenção programadas ... sem downtime!!
• 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 quantidade de Data Nodes e a variável
NoOfReplicas; 4 Data Nodes e NoOfReplicas=2 significa que o auto-shard será realizado para garantir escalabilidade e continuidade 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 particionamento horizontal, [LINEAR] KEY;
Cluster Auto-Sharding
![Page 20: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/20.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• Dois tipos 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ísticas 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 tickets e liberam a adesão dos demais nós (acompenhe o log);
Arquivos de Configuração
![Page 21: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/21.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• Definimos as seções do arquivo GLOBAL com base na configurações dos nós (arquivo config.ini):
Arquivo de Configuração GLOBAL
[ndb_mgmd]# Management node 01NodeId=1Hostname=192.168.0.101DataDir=/var/lib/mysql-cluster
[ndb_mgmd]# Management node 02NodeId=7Hostname=192.168.0.106DataDir=/var/lib/mysql-cluster
![Page 22: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/22.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
Arquivo de Configuração GLOBAL
• Definimos as seções dos Data/Storage Nodes:
[ndbd default]DataDir=/var/lib/mysql-clusterNoOfReplicas=2DiskPageBufferMemory=16MBackupDataDir=/stage # disco/partição/volume dedicada para armazenamento
[ndbd]NodeId=2Hostname=192.168.0.102
[ndbd]NodeId=3Hostname=192.168.0.103
![Page 23: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/23.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
Arquivo de Configuração GLOBAL
• Definimos as seções dos SQL nodes:
[mysqld]NodeId=4Hostname=192.168.0.104
[mysqld]NodeId=5Hostname=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
![Page 24: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/24.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• 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:
Arquivos de Configuração LOCAL
[ndbd]ndb-connectstring=192.168.0.101:1186,192,168.0.106:1186stoponerrornostart # se conecta ao management node mas não inicia
[mysqld]server_id=5ndbclusterndb-connectstring=192.168.0.101:1186,192,168.0.106:1186
![Page 25: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/25.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• 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 último, inicie os SQL Nodes, pois, somente após iniciar os Data Nodes, a comunicação dos Ids destinados ao SQL nodes serão liberados para cominucação dentro do Cluster;
Iniciando o Cluster
![Page 26: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/26.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
Iniciando o Cluster
MANAGEMENT NODES
DATA/STORAGE NODES
API/SQL NODES
[root@mycluster-node05 ~]# echo "let's demo it"
![Page 27: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/27.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
Iniciando o Cluster
##: Reading the cluster from Management Node#ndb_mgm> showCluster 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)
![Page 28: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/28.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• 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
![Page 29: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/29.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
1º Manage
ment Node
2º Data
Nodes
3º SQL
Nodes
Rolling Restart
Quando se altera o arquivo de configuração GLOBALQuando é necessário adicionar novos nós ao ClusterQuando uma manutenção é necessária
![Page 30: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/30.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• Arquivos de logs– Aquivo de log no DataDir do Management Node:
• Comandos administrativos 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
Cluster Troubleshooting
[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: 50142014-07-26 16:33:52 [MgmtSrvr] INFO -- Node 3: Resource 2 min: 0 max: 0 curr: 22014-07-26 16:33:52 [MgmtSrvr] INFO -- Node 3: Resource 3 min: 3144 max: 3144 curr: 14132014-07-26 16:33:52 [MgmtSrvr] INFO -- Node 3: Resource 4 min: 720 max: 720 curr: 130
![Page 32: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/32.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• Como existe uma alocação de divisão especial dos dados ou fragmentos entre os nós, o mais interessante é o client de backup nativo:– É 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.
Backup Nativo
![Page 33: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/33.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• O SINGLE USER MODE servirá para garantir 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 utilização de Replication Channel;
• Por isso é interessante deixar um slot “vago” no arquivo de configuração GLOBAL para que o backup possa ser realizado;
Single Mode
ndb_mgm> ENTER SINGLE USER MODE 6Single user mode enteredAccess is granted for API node 6 only.
![Page 34: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/34.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• Verificando os logs do cluster no Management Node:
Single Mode – cluster logs
[root@mycluster-mgm01 tail -f /var/lib/mysql-cluster/ndb_1_cluster.log.ndb2014-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
![Page 35: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/35.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
ndb_mgm> SHOWCluster 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 – Data nodes
![Page 36: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/36.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
[root@mycluster-node04 ~]# mysql -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 2Server 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 testDatabase 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
Single Mode – SQL Nodes
![Page 37: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/37.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
ndb_mgm> 2 REPORT BACKUPSTATUS # DATA NODE 2Node 2: Backup not started
ndb_mgm> 3 REPORT BACKUPSTATUS # DATA NODE 3Node 3: Backup not started
ndb_mgm> START BACKUPWaiting for completed, this may take several minutesNode 2: Backup 4 started from node 7Node 2: Backup 4 started from node 7 completed StartGCP: 13988 StopGCP: 13991 #Records: 9367 #LogRecords: 0 Data: 577996 bytes Log: 0 bytes
START BACKUP
![Page 38: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/38.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• 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á utilizado com a opção –m do ndb_restore para criar os bancos de dados em um novo Data Node;
START BACKUP
[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
![Page 39: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/39.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
ndb_mgm> EXIT SINGLE USER MODEExiting single user mode in progress.Use ALL STATUS or SHOW to see when single user mode has been exited.ndb_mgm> ALL STATUSNode 2: started (mysql-5.6.17 ndb-7.3.5)Node 3: started (mysql-5.6.17 ndb-7.3.5)
ndb_mgm> SHOWCluster 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)
Single Mode
![Page 40: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/40.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• O restore de backup no MySQL Cluster é realizado através do aplicativo ndb_restore:– Realizado em cada Data/Storage Node do cluster;– Utiliza slot [api]/[mysqld] adicional para se conectar ao cluster;– Interessante na maioria dos casos utilizar SINGLE MODE;
• O ndb_restore requer algumas opções para que o restore seja realizado:– -c (connection_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, utilizado para criar os metadados (pode ser omitido*);– -r, caminho dos arquivo de backup.
Restore – ndb_restore
![Page 41: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/41.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
[root@mycluster-node02 ~]# ndb_restore -c 192.168.0.101:1186 -n 2 -b 5 -r /stage/BACKUP/BACKUP-5/
Nodeid = 2Backup Id = 5backup path = /stage/BACKUP/BACKUP-5/Opening file '/stage/BACKUP/BACKUP-5/BACKUP-5.2.ctl'File size 34508 bytesBackup version in files: ndb-6.3.11 ndb version: mysql-5.6.17 ndb-7.3.5Stop GCP of Backup: 15853Connected 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 0Processing data in table: world/def/Country(12) fragment 0Opening file '/stage/BACKUP/BACKUP-5/BACKUP-5.2.log'File size 52 bytesRestored 52648 tuples and 0 log entries
NDBT_ProgramExit: 0 - OK
Restore – ndb_restore (-n 2)
![Page 42: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/42.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
[root@mycluster-node03 ~]# ndb_restore -c 192.168.0.101:1186 -n 3 -b 5 -r /stage/BACKUP/BACKUP-5/
Nodeid = 3Backup Id = 5backup path = /stage/BACKUP/BACKUP-5/Opening file '/stage/BACKUP/BACKUP-5/BACKUP-5.3.ctl'File size 34508 bytesBackup version in files: ndb-6.3.11 ndb version: mysql-5.6.17 ndb-7.3.5Stop GCP of Backup: 15853Connected 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 1Processing data in table: world/def/Country(12) fragment 1Opening file '/stage/BACKUP/BACKUP-5/BACKUP-5.3.log'File size 52 bytesRestored 52655 tuples and 0 log entries
NDBT_ProgramExit: 0 - OK
Restore – ndb_restore (-n 3)
![Page 44: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/44.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• 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íticos;– 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.
Objetos do Cluster
![Page 45: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/45.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• Toda tabela criada em um cluster sem a diretiva 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 quantidade de espaço alocado em memória para armazenamento de dados de tabelas NDB;
• IndexMemory: determina a quantidade de espaço alocado em memória para armazenamento de dados contidos em índices do tipo 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
In-Memory Tables
![Page 46: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/46.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
• 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:
Disk-based Tables
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
![Page 47: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/47.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
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=83886084 rows in set (0.06 sec)
Disk-based Tables
![Page 49: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/49.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
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
![Page 50: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/50.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
Node.JS/Memcached
Interação direta com os dados do ClusterInteragindo client/API através de JavaScript Disponível através de um ConectorDesenvolvimento de serviços Real-TimePossibilidade de utilização de SQL/NoSQL
![Page 54: Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3](https://reader033.vdocuments.site/reader033/viewer/2022052322/5583c49bd8b42a85798b53e7/html5/thumbnails/54.jpg)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
Thanks...
Wagner Bianchi’s
Twitter: @wagnerbianchijrSkype: wbianchijrE-mail: [email protected]