Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
-
Upload
wagner-bianchi -
Category
Technology
-
view
410 -
download
7
description
Transcript of Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
MySQL Cluster 7.3 at GUOB 2014, [email protected]
By Wagner BianchiEdição # 2 - 2014
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
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
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!!
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
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
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
MySQL Cluster 7.3 at GUOB 2014, [email protected]
MySQL Cluster 7.3 New Features
MySQL Cluster 7.3 at GUOB 2014, [email protected]
Arquitetura MySQL Cluster 7.3
MySQL Cluster 7.3 at GUOB 2014, [email protected]
Arquitetura MySQL Cluster 7.3
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
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
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
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
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!
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
MySQL Cluster 7.3 at GUOB 2014, [email protected]
Cluster Auto-Sharding
MySQL Cluster 7.3 at GUOB 2014, [email protected]
Cluster Auto-Sharding
MySQL Cluster 7.3 at GUOB 2014, [email protected]
MySQL Cluster 7.3 Configuration
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
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
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
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
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
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
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"
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)
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
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
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
MySQL Cluster 7.3 at GUOB 2014, [email protected]
MySQL Cluster 7.3 Backup & Restore
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
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.
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
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
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
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
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
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
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
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)
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)
MySQL Cluster 7.3 at GUOB 2014, [email protected]
MySQL Cluster 7.3 Padrões de Projeto
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
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
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
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
MySQL Cluster 7.3 at GUOB 2014, [email protected]
Foreign Keys (MySQL Cluster 7.3++)
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
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
MySQL Cluster 7.3 at GUOB 2014, [email protected]
MySQL Cluster 7.3 Replicação Geográfica
MySQL Cluster 7.3 at GUOB 2014, [email protected]
Distribuição Geográfica
MySQL Cluster 7.3 at GUOB 2014, [email protected]
Distribuição Geográfica
MySQL Cluster 7.3 at GUOB 2014, [email protected]
Thanks...
Wagner Bianchi’s
Twitter: @wagnerbianchijrSkype: wbianchijrE-mail: [email protected]