SlideShare una empresa de Scribd logo
1 de 50
MySQL Cluster – Quick Start & Scaling for the Web Henrique Leandro (henrique.leandro@oracle.com) Engenheiro MySQL Marcelo Souza (marcelo.t.souza@oracle.com) MySQL Brasil
<Insert Picture Here> Agenda  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Open-source powers the Web & the Network MySQL: Serving Key Markets & Industry Leaders Enterprise 2.0 Telecommunications On Demand, SaaS, Hosting Web / Web 2.0 OEM / ISV's
Metas: ,[object Object],[object Object],[object Object]
Introducing MySQL Cluster ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
MySQL Cluster – Users & Applications HA, Transactional Services: Web & Telecoms http://www.mysql.com/customers/cluster/ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
MySQL Cluster Data Nodes MySQL Cluster Application Nodes MySQL Cluster Mgmt Clients MySQL Cluster Architecture Bancos Paralelos sem SPOF: Alta Leitura & Performance na Escrita & 99.999% uptime MySQL Cluster Mgmt
Cenários que vamos seguir: Criar uma simples, single-node Cluster no inicio do Desenvolvimento Extender para  Configuração HA  para Homologação Dimensionar Cluster on-line apartir da demanda de suas aplicações Data Node 192.168.0.31 MySQL Server Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node
Criando um host Cluster simples (não recomendado para Produção) ,[object Object],[object Object],Data Node 192.168.0.31 MySQL Server Mgmt Node Data Node
Revisão: Construindo um Cluster simples do zero
Download ultima versão GA  OS/architecture http://www.mysql.com/downloads/cluster/#downloads
Instale software e configure diretorios 192.168.0.31 $ tar xvf  Downloads/mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz $ ln -s mysql-cluster-gpl-7.1.4b-linux-i686-glibc23/ mysqlc $ mkdir my_cluster my_cluster/ndb_data my_cluster/mysqld_data my_cluster/conf Data Node 192.168.0.31 MySQL Server Mgmt Node Data Node
Criar arquivos de configuração (para MySQL Server) 192.168.0.31 $ vi my_cluster/conf/my.cnf [mysqld] ndbcluster datadir=/home/user1/my_cluster/mysqld_data basedir=/home/user1/mysqlc port=5000 Data Node 192.168.0.31 MySQL Server Mgmt Node Data Node
Criar arquivo de configuração (para Cluster) 192.168.0.31 $ vi my_cluster/conf/config.ini [ndb_mgmd] hostname=localhost datadir=/home/user1/my_cluster/ndb_data id=1 [ndbd default] noofreplicas=2 datadir=/home/user1/my_cluster/ndb_data [ndbd] hostname=localhost id=3 [ndbd] hostname=localhost id=4 [mysqld] id=50 Data Node 192.168.0.31 MySQL Server Mgmt Node Data Node
Criar o banco “mysql” 192.168.0.31 $ cd mysqlc [mysqlc]$ scripts/mysql_install_db --no-defaults --datadir=$HOME/my_cluster/mysqld_data/ Data Node 192.168.0.31 MySQL Server Mgmt Node Data Node
Inicie os nós de gerenciamento e então os nós de dados 192.168.0.31 $ cd ~/my_cluster [my_cluster]$ $HOME/mysqlc/bin/ndb_mgmd -f conf/config.ini --initial --configdir=$HOME/my_cluster/conf/ [my_cluster]$ $HOME/mysqlc/bin/ndbd -c localhost:1186 [my_cluster]$ $HOME/mysqlc/bin/ndbd -c localhost:1186 Data Node 192.168.0.31 MySQL Server Mgmt Node Data Node
Certifique que nós estão online antes de iniciar o MySQL Server 192.168.0.31 $ $HOME/mysqlc/bin/ndb_mgm -e show Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)]  2 node(s) id=3  @127.0.0.1  (mysql-5.1.44 ndb-7.1.3, Nodegroup: 0, Master) id=4  @127.0.0.1  (mysql-5.1.44 ndb-7.1.3, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=1  @127.0.0.1  (mysql-5.1.44 ndb-7.1.3) [mysqld(API)]  1 node(s) id=50 (not connected, accepting connect from any host) Data Node 192.168.0.31 MySQL Server Mgmt Node Data Node
Inicie o MySQL Server e teste o Banco 192.168.0.31 [my_cluster]$ $HOME/mysqlc/bin/mysqld --defaults-file=conf/my.cnf & [my_cluster]$ $HOME/mysqlc/bin/mysql -h 127.0.0.1 -P 5000 -u root mysql> create database clusterdb;use clusterdb; mysql> create table simples (id int not null primary key) engine=ndb; mysql> insert into simples values (1),(2),(3),(4); mysql> select * from simples; +----+ | id | +----+ |  1 | |  2 | |  4 | |  3 | +----+  Data Node 192.168.0.31 MySQL Server Mgmt Node Data Node
Extender o Cluster para que rode em multiplos servidores ,[object Object],[object Object],[object Object],[object Object],[object Object],Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34
Extender o Cluster para Alta Disponibilidade Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34
Instalar s/w & criar diretorios para 192.168.0.33/34 192.168.0.34 $ tar xvf  Downloads/mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz $ ln -s mysql-cluster-gpl-7.1.4b-linux-i686-glibc23/ mysqlc $ mkdir my_cluster my_cluster/mysqld_data my_cluster/conf Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34 192.168.0.33 $ tar xvf  Downloads/mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz $ ln -s mysql-cluster-gpl-7.1.4b-linux-i686-glibc23/ mysqlc $ mkdir my_cluster my_cluster/mysqld_data my_cluster/conf
Instalar s/w & criar diretorios para 192.168.0.32 Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34 192.168.0.32 $ tar xvf  Downloads/mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz $ ln -s mysql-cluster-gpl-7.1.4b-linux-i686-glibc23/ mysqlc $ mkdir my_cluster my_cluster/ndb_data
Iniciar  o “mysql”  (para processos mysqld) 192.168.0.33 $ cd mysqlc [mysqlc] $ scripts/mysql_install_db --no-defaults --datadir=$HOME/my_cluster/mysqld_data/ 192.168.0.34 $ cd mysqlc [mysqlc] $ scripts/mysql_install_db --no-defaults --datadir=$HOME/my_cluster/mysqld_data/ Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34
Criar o Cluster config files Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34 192.168.0.33 $ cd ~/my_cluster/conf/ [conf] $ vi config.ini [ndb_mgmd] hostname=192.168.0.33 datadir=/home/user1/my_cluster/ndb_data id=1 [ndb_mgmd] hostname=192.168.0.34 datadir=/home/user1/my_cluster/ndb_data id=2
Criar o Cluster config files (continued) Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34 192.168.0.33 ... [ndbd default] noofreplicas=2 datadir=/home/user1/my_cluster/ndb_data [ndbd] hostname=192.168.0.31 id=3 [ndbd] hostname=192.168.0.32 id=4 [mysqld] id=50 [mysqld] id=51
Criar o Cluster config files (continued) Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34 192.168.0.33 [conf] $ vi my.cnf [mysqld] ndbcluster datadir=/home/user1/my_cluster/mysqld_data basedir=/home/user1/mysqlc port=5000 [conf] $ sftp 192.168.0.34 sftp> cd my_cluster/conf sftp> put config.ini sftp> put my.cnf sftp> bye
Faça um backup e faça um shut-down no Cluster 192.168.0.31 $ $HOME/mysqlc/bin/mysqladmin -u root -h 127.0.0.1 -P 5000 shutdown $ $HOME/mysqlc/bin/ndb_mgm –e “START BACKUP” $ $HOME/mysqlc/bin/ndb_mgm –e “SHUTDOWN” Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34
Iniciar os nós de gerenciamentos Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34 192.168.0.33 $ cd ~/my_cluster [my_cluster] $ $HOME/mysqlc/bin/ndb_mgmd -f conf/config.ini --initial --configdir=$HOME/my_cluster/conf/ 192.168.0.34 $ cd ~/my_cluster [my_cluster] $ $HOME/mysqlc/bin/ndb_mgmd -f conf/config.ini --initial --configdir=$HOME/my_cluster/conf/
Iniciar os Nós de Dados Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34 192.168.0.31 $ $HOME/mysqlc/bin/ndbd -c 192.168.0.33:1186,192.168.0.34:1186 --initial 192.168.0.32 $ $HOME/mysqlc/bin/ndbd -c 192.168.0.33:1186,192.168.0.34:1186 --initial
Esperar até que os nós estejam prontos Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34 192.168.0.33 $ $HOME/mysqlc/bin/ndb_mgm -e &quot;SHOW“ Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)]  2 node(s) id=3  @192.168.0.31  (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0, Master) id=4  @192.168.0.32  (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0) [ndb_mgmd(MGM)] 2 node(s) id=1  @192.168.0.33  (mysql-5.1.44 ndb-7.1.4) id=2  @192.168.0.34  (mysql-5.1.44 ndb-7.1.4) [mysqld(API)]  2 node(s) id=50 (not connected, accepting connect from any host) id=51 (not connected, accepting connect from any host)
Restore database Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34 192.168.0.31 $ $HOME/mysqlc/bin/ndb_restore -c 192.168.0.33:1186 -b 1 -n 3 -r -m $HOME/my_cluster/ndb_data/BACKUP/BACKUP-1/ $ $HOME/mysqlc/bin/ndb_restore -c 192.168.0.33:1186 -b 1 -n 4 -r $HOME/my_cluster/ndb_data/BACKUP/BACKUP-1/
Start up MySQL Servers Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34 192.168.0.33 $ cd ~/my_cluster [my_cluster] $ $HOME/mysqlc/bin/mysqld --defaults-file=conf/my.cnf & 192.168.0.34 $ cd ~/my_cluster [my_cluster] $ $HOME/mysqlc/bin/mysqld --defaults-file=conf/my.cnf &
Verificar se os dados continuam lá Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34 192.168.0.33 $ $HOME/mysqlc/bin/mysql -h 127.0.0.1 -P 5000 -u root mysql> create database clusterdb;use clusterdb; mysql> select * from simples; +----+ | id | +----+ |  3 | |  1 | |  2 | |  4 | +----+
Adicionar nós On-line ,[object Object],[object Object],Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node
Adicionando Nós On-line  Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node
Instalar s/w & criar diretorios para 192.168.0.33/34 192.168.0.35 $ tar xvf  Downloads/mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz $ ln -s mysql-cluster-gpl-7.1.4b-linux-i686-glibc23/ mysqlc $ mkdir my_cluster my_cluster/ndb_data 192.168.0.36 $ tar xvf  Downloads/mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz $ ln -s mysql-cluster-gpl-7.1.4b-linux-i686-glibc23/ mysqlc $ mkdir my_cluster my_cluster/ndb_data Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node
Iniciar o “mysql”  (mysqld) 192.168.0.33 [my_cluster] $ mkdir mysqld_data2 [my_cluster] $ cd ../mysqlc [mysqlc] $ scripts/mysql_install_db --no-defaults --datadir=$HOME/my_cluster/mysqld_data2/ [mysqlc] $ cd ../my_cluster 192.168.0.34 [my_cluster] $ mkdir mysqld_data2 [my_cluster] $ cd ../mysqlc [mysqlc] $ scripts/mysql_install_db --no-defaults --datadir=$HOME/my_cluster/mysqld_data2/ [mysqlc] $ cd ../my_cluster Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node
Altere o Cluster config.ini Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node 192.168.0.33 $ cd ~/my_cluster/conf/ [conf] $ vi config.ini ... [ndbd] hostname=192.168.0.35 id=5 [ndbd] hostname=192.168.0.36 id=6 [mysqld] id=52 [mysqld] id=53 ....
Criar config file para os novos servidores MySQL  Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node 192.168.0.33 [conf] $ vi my2.cnf [mysqld] ndbcluster datadir=/home/user1/my_cluster/mysqld_data2 basedir=/home/user1/mysqlc port=5001
Duplicar config files para outros nós de gerenciamento Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node 192.168.0.33 [conf] $ sftp 192.168.0.34 sftp> cd my_cluster/conf sftp> put config.ini sftp> put my2.cnf sftp> bye
Restart Nós de gerenciamento  Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node 192.168.0.33 [conf] $ cd .. [my_cluster] $ $HOME/mysqlc/bin/ndb_mgm -e “2 STOP“ [my_cluster] $ $HOME/mysqlc/bin/ndb_mgm -e “1 STOP“ [my_cluster] $ $HOME/mysqlc/bin/ndb_mgmd -f conf/config.ini --initial --configdir=$HOME/my_cluster/conf/ 192.168.0.34 [my_cluster] $ $HOME/mysqlc/bin/ndb_mgmd -f conf/config.ini --initial --configdir=$HOME/my_cluster/conf/
Restart  Nós de dados existentes Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node 192.168.0.33 [my_cluster] $ $HOME/mysqlc/bin/ndb_mgm -e “3 RESTART“ # Wait until Node 3 has restarted [my_cluster] $ $HOME/mysqlc/bin/ndb_mgm -e “SHOW“ [ndbd(NDB)]  4 node(s) id=3  @192.168.0.31  (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0) id=4  @192.168.0.32  (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0, Master) id=5 (not connected, accepting connect from 192.168.0.35) id=6 (not connected, accepting connect from 192.168.0.36) [ndb_mgmd(MGM)] 2 node(s) id=1  @192.168.0.33  (mysql-5.1.44 ndb-7.1.4) id=2  @192.168.0.34  (mysql-5.1.44 ndb-7.1.4) [mysqld(API)]  4 node(s) id=50  @192.168.0.34  (mysql-5.1.44 ndb-7.1.4) id=51  @192.168.0.33  (mysql-5.1.44 ndb-7.1.4) id=52 (not connected, accepting connect from any host) id=53 (not connected, accepting connect from any host) [my_cluster] $ $HOME/mysqlc/bin/ndb_mgm -e “4 RESTART“
Restart  MySQL Servers existentes Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node 192.168.0.33 [my_cluster] $ $HOME/mysqlc/bin/mysqladmin -u root -h 127.0.0.1 -P 5000 shutdown [my_cluster] $ $HOME/mysqlc/bin/mysqld --defaults-file=conf/my.cnf & 192.168.0.34 [my_cluster] $ $HOME/mysqlc/bin/mysqladmin -u root -h 127.0.0.1 -P 5000 shutdown [my_cluster] $ $HOME/mysqlc/bin/mysqld --defaults-file=conf/my.cnf &
Start no novo MySQL Servers Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node 192.168.0.33 [my_cluster] $ $HOME/mysqlc/bin/mysqld --defaults-file=conf/my2.cnf & 192.168.0.34 [my_cluster] $ $HOME/mysqlc/bin/mysqld --defaults-file=conf/my2.cnf &
Start no nós de dados 192.168.0.35 $ $HOME/mysqlc/bin/ndbd -c 192.168.0.33:1186,192.168.0.34:1186 --initial 192.168.0.36 $ $HOME/mysqlc/bin/ndbd -c 192.168.0.33:1186,192.168.0.34:1186 --initial Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node
Aguarde a inicialização Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node 192.168.0.33 [my_cluster] $ $HOME/mysqlc/bin/ndb_mgm -e “SHOW“ [ndbd(NDB)]  4 node(s) id=3  @192.168.0.31  (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0, Master) id=4  @192.168.0.32  (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0) id=5  @192.168.0.35  (mysql-5.1.44 ndb-7.1.4, no nodegroup) id=6  @192.168.0.36  (mysql-5.1.44 ndb-7.1.4, no nodegroup) [ndb_mgmd(MGM)] 2 node(s) id=1  @192.168.0.33  (mysql-5.1.44 ndb-7.1.4) id=2  @192.168.0.34  (mysql-5.1.44 ndb-7.1.4) [mysqld(API)]  4 node(s) id=50  @192.168.0.33  (mysql-5.1.44 ndb-7.1.4) id=51  @192.168.0.34  (mysql-5.1.44 ndb-7.1.4) id=52  @192.168.0.33  (mysql-5.1.44 ndb-7.1.4) id=53  @192.168.0.34  (mysql-5.1.44 ndb-7.1.4) [my_cluster] $ $HOME/mysqlc/bin/ndb_mgm -e “CREATE NODEGROUP 5,6“
Confirme os novos nós em seus grupos Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node 192.168.0.33 [my_cluster] $ $HOME/mysqlc/bin/ndb_mgm -e “SHOW“ [ndbd(NDB)]  4 node(s) id=3  @192.168.0.31  (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0, Master) id=4  @192.168.0.32  (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0) id=5  @192.168.0.35  (mysql-5.1.44 ndb-7.1.4, Nodegroup: 1) id=6  @192.168.0.36  (mysql-5.1.44 ndb-7.1.4, Nodegroup: 1) [ndb_mgmd(MGM)] 2 node(s) id=1  @192.168.0.33  (mysql-5.1.44 ndb-7.1.4) id=2  @192.168.0.34  (mysql-5.1.44 ndb-7.1.4) [mysqld(API)]  4 node(s) id=50  @192.168.0.33  (mysql-5.1.44 ndb-7.1.4) id=51  @192.168.0.34  (mysql-5.1.44 ndb-7.1.4) id=52  @192.168.0.33  (mysql-5.1.44 ndb-7.1.4) id=53  @192.168.0.34  (mysql-5.1.44 ndb-7.1.4)
Reparticione as tabelas ja existentes Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node 192.168.0.33 $ $HOME/mysqlc/bin/mysql -h 127.0.0.1 -P 5000 -u root mysql> use clusterdb; mysql> ALTER ONLINE TABLE simples REORGANIZE PARTITION; mysql> OPTIMIZE TABLE simples;
Recursos ,[object Object],[object Object],[object Object],[object Object]
Questions  [email_address]

Más contenido relacionado

La actualidad más candente

Criando temas para Joomla, Wordpress, Drupal e tudo mais sem tocar em templa...
Criando temas para Joomla, Wordpress, Drupal e tudo mais  sem tocar em templa...Criando temas para Joomla, Wordpress, Drupal e tudo mais  sem tocar em templa...
Criando temas para Joomla, Wordpress, Drupal e tudo mais sem tocar em templa...Simples Consultoria
 
Opennebula instalação
Opennebula instalaçãoOpennebula instalação
Opennebula instalaçãoLuís Eduardo
 
Linux Network Fault Tolerance
Linux Network Fault ToleranceLinux Network Fault Tolerance
Linux Network Fault ToleranceFrederico Madeira
 
TDC2015 - Apache Cassandra no Desenvolvimento de Sistemas de Alto Desempenho
TDC2015 - Apache Cassandra no Desenvolvimento de Sistemas de Alto DesempenhoTDC2015 - Apache Cassandra no Desenvolvimento de Sistemas de Alto Desempenho
TDC2015 - Apache Cassandra no Desenvolvimento de Sistemas de Alto DesempenhoEiti Kimura
 
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )João Moura
 
Goocloud Backup Storage
Goocloud   Backup  StorageGoocloud   Backup  Storage
Goocloud Backup Storagegoocloud
 
Desenvolvendo Jogos 2D em HTML5 - Cocos2d-x
Desenvolvendo Jogos 2D em HTML5 - Cocos2d-xDesenvolvendo Jogos 2D em HTML5 - Cocos2d-x
Desenvolvendo Jogos 2D em HTML5 - Cocos2d-xPedro Kayatt
 
Opennebula Introdução
Opennebula IntroduçãoOpennebula Introdução
Opennebula IntroduçãoLuís Eduardo
 
Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013Marcelo Dieder
 
Arquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQLArquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQLRaul Oliveira
 
Arquitetura de Memoria do PostgreSQL
Arquitetura de Memoria do PostgreSQLArquitetura de Memoria do PostgreSQL
Arquitetura de Memoria do PostgreSQLRaul Oliveira
 
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
 
Oficina de Squid: Filtros Inteligentes
 Oficina de Squid: Filtros Inteligentes Oficina de Squid: Filtros Inteligentes
Oficina de Squid: Filtros InteligentesThiago Finardi
 
Serverless Containers - execute instâncias de containers do Azure sob demanda...
Serverless Containers - execute instâncias de containers do Azure sob demanda...Serverless Containers - execute instâncias de containers do Azure sob demanda...
Serverless Containers - execute instâncias de containers do Azure sob demanda...Ricardo Ferreira Costa
 

La actualidad más candente (17)

Criando temas para Joomla, Wordpress, Drupal e tudo mais sem tocar em templa...
Criando temas para Joomla, Wordpress, Drupal e tudo mais  sem tocar em templa...Criando temas para Joomla, Wordpress, Drupal e tudo mais  sem tocar em templa...
Criando temas para Joomla, Wordpress, Drupal e tudo mais sem tocar em templa...
 
Opennebula instalação
Opennebula instalaçãoOpennebula instalação
Opennebula instalação
 
Linux Network Fault Tolerance
Linux Network Fault ToleranceLinux Network Fault Tolerance
Linux Network Fault Tolerance
 
TDC2015 - Apache Cassandra no Desenvolvimento de Sistemas de Alto Desempenho
TDC2015 - Apache Cassandra no Desenvolvimento de Sistemas de Alto DesempenhoTDC2015 - Apache Cassandra no Desenvolvimento de Sistemas de Alto Desempenho
TDC2015 - Apache Cassandra no Desenvolvimento de Sistemas de Alto Desempenho
 
Mysql Replication
Mysql ReplicationMysql Replication
Mysql Replication
 
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )
 
Prog web 07-pdo
Prog web 07-pdoProg web 07-pdo
Prog web 07-pdo
 
Goocloud Backup Storage
Goocloud   Backup  StorageGoocloud   Backup  Storage
Goocloud Backup Storage
 
Desenvolvendo Jogos 2D em HTML5 - Cocos2d-x
Desenvolvendo Jogos 2D em HTML5 - Cocos2d-xDesenvolvendo Jogos 2D em HTML5 - Cocos2d-x
Desenvolvendo Jogos 2D em HTML5 - Cocos2d-x
 
GlusterFs
GlusterFsGlusterFs
GlusterFs
 
Opennebula Introdução
Opennebula IntroduçãoOpennebula Introdução
Opennebula Introdução
 
Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013
 
Arquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQLArquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQL
 
Arquitetura de Memoria do PostgreSQL
Arquitetura de Memoria do PostgreSQLArquitetura de Memoria do PostgreSQL
Arquitetura de Memoria do PostgreSQL
 
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...
 
Oficina de Squid: Filtros Inteligentes
 Oficina de Squid: Filtros Inteligentes Oficina de Squid: Filtros Inteligentes
Oficina de Squid: Filtros Inteligentes
 
Serverless Containers - execute instâncias de containers do Azure sob demanda...
Serverless Containers - execute instâncias de containers do Azure sob demanda...Serverless Containers - execute instâncias de containers do Azure sob demanda...
Serverless Containers - execute instâncias de containers do Azure sob demanda...
 

Destacado

Guia de serviços - 10 Oficina de Inclusão Digital
Guia de serviços - 10 Oficina de Inclusão DigitalGuia de serviços - 10 Oficina de Inclusão Digital
Guia de serviços - 10 Oficina de Inclusão DigitalGovBR
 
Energia txokoa aurkezpena crana
Energia txokoa aurkezpena cranaEnergia txokoa aurkezpena crana
Energia txokoa aurkezpena cranaaxunurkia
 
Telecomunations .doc jonathan ramirez
Telecomunations .doc jonathan ramirezTelecomunations .doc jonathan ramirez
Telecomunations .doc jonathan ramirezestudiantepc03
 
Apresentação e ping-23_08_10
Apresentação e ping-23_08_10Apresentação e ping-23_08_10
Apresentação e ping-23_08_10GovBR
 
TERRENO EN VENTA
TERRENO EN VENTATERRENO EN VENTA
TERRENO EN VENTAraulpazos
 
Golden road sr revalidatie amc 30 mei 2011
Golden road sr revalidatie amc 30 mei 2011Golden road sr revalidatie amc 30 mei 2011
Golden road sr revalidatie amc 30 mei 2011jgdaams
 
España e galicia de 1902 1939
España e galicia de 1902 1939España e galicia de 1902 1939
España e galicia de 1902 1939Tamy9
 
Padrões em Governo Eletrônico - Cartilha de Codificação e Guia de Administraç...
Padrões em Governo Eletrônico - Cartilha de Codificação e Guia de Administraç...Padrões em Governo Eletrônico - Cartilha de Codificação e Guia de Administraç...
Padrões em Governo Eletrônico - Cartilha de Codificação e Guia de Administraç...GovBR
 
Importancia de los valores en la convivencia social
Importancia de los valores en la convivencia social Importancia de los valores en la convivencia social
Importancia de los valores en la convivencia social felipe28
 

Destacado (20)

Bolor vzvvlen 4
Bolor vzvvlen 4Bolor vzvvlen 4
Bolor vzvvlen 4
 
Guia de serviços - 10 Oficina de Inclusão Digital
Guia de serviços - 10 Oficina de Inclusão DigitalGuia de serviços - 10 Oficina de Inclusão Digital
Guia de serviços - 10 Oficina de Inclusão Digital
 
Energia txokoa aurkezpena crana
Energia txokoa aurkezpena cranaEnergia txokoa aurkezpena crana
Energia txokoa aurkezpena crana
 
Telecomunations .doc jonathan ramirez
Telecomunations .doc jonathan ramirezTelecomunations .doc jonathan ramirez
Telecomunations .doc jonathan ramirez
 
Motor de combustió interna
Motor de combustió internaMotor de combustió interna
Motor de combustió interna
 
Apresentacao
ApresentacaoApresentacao
Apresentacao
 
Esth E
Esth EEsth E
Esth E
 
Apresentação e ping-23_08_10
Apresentação e ping-23_08_10Apresentação e ping-23_08_10
Apresentação e ping-23_08_10
 
TERRENO EN VENTA
TERRENO EN VENTATERRENO EN VENTA
TERRENO EN VENTA
 
NJCAN
NJCANNJCAN
NJCAN
 
trabajo final
trabajo finaltrabajo final
trabajo final
 
Eminem
EminemEminem
Eminem
 
Golden road sr revalidatie amc 30 mei 2011
Golden road sr revalidatie amc 30 mei 2011Golden road sr revalidatie amc 30 mei 2011
Golden road sr revalidatie amc 30 mei 2011
 
España e galicia de 1902 1939
España e galicia de 1902 1939España e galicia de 1902 1939
España e galicia de 1902 1939
 
Padrões em Governo Eletrônico - Cartilha de Codificação e Guia de Administraç...
Padrões em Governo Eletrônico - Cartilha de Codificação e Guia de Administraç...Padrões em Governo Eletrônico - Cartilha de Codificação e Guia de Administraç...
Padrões em Governo Eletrônico - Cartilha de Codificação e Guia de Administraç...
 
Sba Emporium
Sba EmporiumSba Emporium
Sba Emporium
 
Importancia de los valores en la convivencia social
Importancia de los valores en la convivencia social Importancia de los valores en la convivencia social
Importancia de los valores en la convivencia social
 
Letras galegas 2011
Letras galegas 2011Letras galegas 2011
Letras galegas 2011
 
Nits al claustre 2011
Nits al claustre 2011Nits al claustre 2011
Nits al claustre 2011
 
LA DEVOLUCIÓN DEL CINE
LA DEVOLUCIÓN DEL CINELA DEVOLUCIÓN DEL CINE
LA DEVOLUCIÓN DEL CINE
 

Similar a Mysql cluster quick start webinar

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 UsoWagner Bianchi
 
Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...
Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...
Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...GBanin
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Brasil
 
Manual Kikrotik Completo
Manual Kikrotik CompletoManual Kikrotik Completo
Manual Kikrotik CompletoPortal GSTI
 
Funcionalidades de Acesso a Dados no 'Mango'
Funcionalidades de Acesso a Dados no 'Mango'Funcionalidades de Acesso a Dados no 'Mango'
Funcionalidades de Acesso a Dados no 'Mango'C. Augusto Proiete
 
Desenvolvendo para WordPress com Docker, Git e WP-CLI
Desenvolvendo para WordPress com Docker, Git e WP-CLIDesenvolvendo para WordPress com Docker, Git e WP-CLI
Desenvolvendo para WordPress com Docker, Git e WP-CLIRudá Almeida
 
Segurança em Plataforma Microsoft
Segurança em Plataforma MicrosoftSegurança em Plataforma Microsoft
Segurança em Plataforma MicrosoftUilson Souza
 
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 DominguesJoao Galdino Mello de Souza
 
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Felipe Blini
 
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...iMasters
 
Implementacao de servidores recursivos guia de praticas semcap ceptro br.pdf
Implementacao de servidores recursivos guia de praticas semcap ceptro br.pdfImplementacao de servidores recursivos guia de praticas semcap ceptro br.pdf
Implementacao de servidores recursivos guia de praticas semcap ceptro br.pdfleandrodesousa13
 
Alta-disponibilidade e alta performance com o MySQL Cluster 7.3
Alta-disponibilidade e alta performance com o MySQL Cluster 7.3Alta-disponibilidade e alta performance com o MySQL Cluster 7.3
Alta-disponibilidade e alta performance com o MySQL Cluster 7.3MySQL Brasil
 
Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Claudio Miranda
 

Similar a Mysql cluster quick start webinar (20)

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
 
Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...
Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...
Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...
 
Mysql for IBMers
Mysql for IBMersMysql for IBMers
Mysql for IBMers
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geral
 
Manual Kikrotik Completo
Manual Kikrotik CompletoManual Kikrotik Completo
Manual Kikrotik Completo
 
Funcionalidades de Acesso a Dados no 'Mango'
Funcionalidades de Acesso a Dados no 'Mango'Funcionalidades de Acesso a Dados no 'Mango'
Funcionalidades de Acesso a Dados no 'Mango'
 
Criando sua própria nuvem com Raspberry Pi
Criando sua própria nuvem com Raspberry PiCriando sua própria nuvem com Raspberry Pi
Criando sua própria nuvem com Raspberry Pi
 
What's New On Azure IaaS
What's New On Azure IaaSWhat's New On Azure IaaS
What's New On Azure IaaS
 
Zabbix
ZabbixZabbix
Zabbix
 
Desenvolvendo para WordPress com Docker, Git e WP-CLI
Desenvolvendo para WordPress com Docker, Git e WP-CLIDesenvolvendo para WordPress com Docker, Git e WP-CLI
Desenvolvendo para WordPress com Docker, Git e WP-CLI
 
Segurança em Plataforma Microsoft
Segurança em Plataforma MicrosoftSegurança em Plataforma Microsoft
Segurança em Plataforma Microsoft
 
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
 
PHP e Redis
PHP e RedisPHP e Redis
PHP e Redis
 
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
 
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
 
Implementacao de servidores recursivos guia de praticas semcap ceptro br.pdf
Implementacao de servidores recursivos guia de praticas semcap ceptro br.pdfImplementacao de servidores recursivos guia de praticas semcap ceptro br.pdf
Implementacao de servidores recursivos guia de praticas semcap ceptro br.pdf
 
Alta-disponibilidade e alta performance com o MySQL Cluster 7.3
Alta-disponibilidade e alta performance com o MySQL Cluster 7.3Alta-disponibilidade e alta performance com o MySQL Cluster 7.3
Alta-disponibilidade e alta performance com o MySQL Cluster 7.3
 
Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7
 
Aula 12 infraestrutura - 24032012
Aula 12   infraestrutura - 24032012Aula 12   infraestrutura - 24032012
Aula 12 infraestrutura - 24032012
 
4. cloud ninja rede para faixa preta
4. cloud ninja rede para faixa preta4. cloud ninja rede para faixa preta
4. cloud ninja rede para faixa preta
 

Mysql cluster quick start webinar

  • 1. MySQL Cluster – Quick Start & Scaling for the Web Henrique Leandro (henrique.leandro@oracle.com) Engenheiro MySQL Marcelo Souza (marcelo.t.souza@oracle.com) MySQL Brasil
  • 2.
  • 3. Open-source powers the Web & the Network MySQL: Serving Key Markets & Industry Leaders Enterprise 2.0 Telecommunications On Demand, SaaS, Hosting Web / Web 2.0 OEM / ISV's
  • 4.
  • 5.
  • 6.
  • 7. MySQL Cluster Data Nodes MySQL Cluster Application Nodes MySQL Cluster Mgmt Clients MySQL Cluster Architecture Bancos Paralelos sem SPOF: Alta Leitura & Performance na Escrita & 99.999% uptime MySQL Cluster Mgmt
  • 8. Cenários que vamos seguir: Criar uma simples, single-node Cluster no inicio do Desenvolvimento Extender para Configuração HA para Homologação Dimensionar Cluster on-line apartir da demanda de suas aplicações Data Node 192.168.0.31 MySQL Server Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node
  • 9.
  • 10. Revisão: Construindo um Cluster simples do zero
  • 11. Download ultima versão GA OS/architecture http://www.mysql.com/downloads/cluster/#downloads
  • 12. Instale software e configure diretorios 192.168.0.31 $ tar xvf Downloads/mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz $ ln -s mysql-cluster-gpl-7.1.4b-linux-i686-glibc23/ mysqlc $ mkdir my_cluster my_cluster/ndb_data my_cluster/mysqld_data my_cluster/conf Data Node 192.168.0.31 MySQL Server Mgmt Node Data Node
  • 13. Criar arquivos de configuração (para MySQL Server) 192.168.0.31 $ vi my_cluster/conf/my.cnf [mysqld] ndbcluster datadir=/home/user1/my_cluster/mysqld_data basedir=/home/user1/mysqlc port=5000 Data Node 192.168.0.31 MySQL Server Mgmt Node Data Node
  • 14. Criar arquivo de configuração (para Cluster) 192.168.0.31 $ vi my_cluster/conf/config.ini [ndb_mgmd] hostname=localhost datadir=/home/user1/my_cluster/ndb_data id=1 [ndbd default] noofreplicas=2 datadir=/home/user1/my_cluster/ndb_data [ndbd] hostname=localhost id=3 [ndbd] hostname=localhost id=4 [mysqld] id=50 Data Node 192.168.0.31 MySQL Server Mgmt Node Data Node
  • 15. Criar o banco “mysql” 192.168.0.31 $ cd mysqlc [mysqlc]$ scripts/mysql_install_db --no-defaults --datadir=$HOME/my_cluster/mysqld_data/ Data Node 192.168.0.31 MySQL Server Mgmt Node Data Node
  • 16. Inicie os nós de gerenciamento e então os nós de dados 192.168.0.31 $ cd ~/my_cluster [my_cluster]$ $HOME/mysqlc/bin/ndb_mgmd -f conf/config.ini --initial --configdir=$HOME/my_cluster/conf/ [my_cluster]$ $HOME/mysqlc/bin/ndbd -c localhost:1186 [my_cluster]$ $HOME/mysqlc/bin/ndbd -c localhost:1186 Data Node 192.168.0.31 MySQL Server Mgmt Node Data Node
  • 17. Certifique que nós estão online antes de iniciar o MySQL Server 192.168.0.31 $ $HOME/mysqlc/bin/ndb_mgm -e show Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=3 @127.0.0.1 (mysql-5.1.44 ndb-7.1.3, Nodegroup: 0, Master) id=4 @127.0.0.1 (mysql-5.1.44 ndb-7.1.3, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=1 @127.0.0.1 (mysql-5.1.44 ndb-7.1.3) [mysqld(API)] 1 node(s) id=50 (not connected, accepting connect from any host) Data Node 192.168.0.31 MySQL Server Mgmt Node Data Node
  • 18. Inicie o MySQL Server e teste o Banco 192.168.0.31 [my_cluster]$ $HOME/mysqlc/bin/mysqld --defaults-file=conf/my.cnf & [my_cluster]$ $HOME/mysqlc/bin/mysql -h 127.0.0.1 -P 5000 -u root mysql> create database clusterdb;use clusterdb; mysql> create table simples (id int not null primary key) engine=ndb; mysql> insert into simples values (1),(2),(3),(4); mysql> select * from simples; +----+ | id | +----+ | 1 | | 2 | | 4 | | 3 | +----+ Data Node 192.168.0.31 MySQL Server Mgmt Node Data Node
  • 19.
  • 20. Extender o Cluster para Alta Disponibilidade Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34
  • 21. Instalar s/w & criar diretorios para 192.168.0.33/34 192.168.0.34 $ tar xvf Downloads/mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz $ ln -s mysql-cluster-gpl-7.1.4b-linux-i686-glibc23/ mysqlc $ mkdir my_cluster my_cluster/mysqld_data my_cluster/conf Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34 192.168.0.33 $ tar xvf Downloads/mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz $ ln -s mysql-cluster-gpl-7.1.4b-linux-i686-glibc23/ mysqlc $ mkdir my_cluster my_cluster/mysqld_data my_cluster/conf
  • 22. Instalar s/w & criar diretorios para 192.168.0.32 Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34 192.168.0.32 $ tar xvf Downloads/mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz $ ln -s mysql-cluster-gpl-7.1.4b-linux-i686-glibc23/ mysqlc $ mkdir my_cluster my_cluster/ndb_data
  • 23. Iniciar o “mysql” (para processos mysqld) 192.168.0.33 $ cd mysqlc [mysqlc] $ scripts/mysql_install_db --no-defaults --datadir=$HOME/my_cluster/mysqld_data/ 192.168.0.34 $ cd mysqlc [mysqlc] $ scripts/mysql_install_db --no-defaults --datadir=$HOME/my_cluster/mysqld_data/ Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34
  • 24. Criar o Cluster config files Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34 192.168.0.33 $ cd ~/my_cluster/conf/ [conf] $ vi config.ini [ndb_mgmd] hostname=192.168.0.33 datadir=/home/user1/my_cluster/ndb_data id=1 [ndb_mgmd] hostname=192.168.0.34 datadir=/home/user1/my_cluster/ndb_data id=2
  • 25. Criar o Cluster config files (continued) Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34 192.168.0.33 ... [ndbd default] noofreplicas=2 datadir=/home/user1/my_cluster/ndb_data [ndbd] hostname=192.168.0.31 id=3 [ndbd] hostname=192.168.0.32 id=4 [mysqld] id=50 [mysqld] id=51
  • 26. Criar o Cluster config files (continued) Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34 192.168.0.33 [conf] $ vi my.cnf [mysqld] ndbcluster datadir=/home/user1/my_cluster/mysqld_data basedir=/home/user1/mysqlc port=5000 [conf] $ sftp 192.168.0.34 sftp> cd my_cluster/conf sftp> put config.ini sftp> put my.cnf sftp> bye
  • 27. Faça um backup e faça um shut-down no Cluster 192.168.0.31 $ $HOME/mysqlc/bin/mysqladmin -u root -h 127.0.0.1 -P 5000 shutdown $ $HOME/mysqlc/bin/ndb_mgm –e “START BACKUP” $ $HOME/mysqlc/bin/ndb_mgm –e “SHUTDOWN” Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34
  • 28. Iniciar os nós de gerenciamentos Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34 192.168.0.33 $ cd ~/my_cluster [my_cluster] $ $HOME/mysqlc/bin/ndb_mgmd -f conf/config.ini --initial --configdir=$HOME/my_cluster/conf/ 192.168.0.34 $ cd ~/my_cluster [my_cluster] $ $HOME/mysqlc/bin/ndb_mgmd -f conf/config.ini --initial --configdir=$HOME/my_cluster/conf/
  • 29. Iniciar os Nós de Dados Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34 192.168.0.31 $ $HOME/mysqlc/bin/ndbd -c 192.168.0.33:1186,192.168.0.34:1186 --initial 192.168.0.32 $ $HOME/mysqlc/bin/ndbd -c 192.168.0.33:1186,192.168.0.34:1186 --initial
  • 30. Esperar até que os nós estejam prontos Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34 192.168.0.33 $ $HOME/mysqlc/bin/ndb_mgm -e &quot;SHOW“ Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=3 @192.168.0.31 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0, Master) id=4 @192.168.0.32 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0) [ndb_mgmd(MGM)] 2 node(s) id=1 @192.168.0.33 (mysql-5.1.44 ndb-7.1.4) id=2 @192.168.0.34 (mysql-5.1.44 ndb-7.1.4) [mysqld(API)] 2 node(s) id=50 (not connected, accepting connect from any host) id=51 (not connected, accepting connect from any host)
  • 31. Restore database Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34 192.168.0.31 $ $HOME/mysqlc/bin/ndb_restore -c 192.168.0.33:1186 -b 1 -n 3 -r -m $HOME/my_cluster/ndb_data/BACKUP/BACKUP-1/ $ $HOME/mysqlc/bin/ndb_restore -c 192.168.0.33:1186 -b 1 -n 4 -r $HOME/my_cluster/ndb_data/BACKUP/BACKUP-1/
  • 32. Start up MySQL Servers Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34 192.168.0.33 $ cd ~/my_cluster [my_cluster] $ $HOME/mysqlc/bin/mysqld --defaults-file=conf/my.cnf & 192.168.0.34 $ cd ~/my_cluster [my_cluster] $ $HOME/mysqlc/bin/mysqld --defaults-file=conf/my.cnf &
  • 33. Verificar se os dados continuam lá Data Node mysqld Mgmt Node Data Node Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 31 32 33 34 192.168.0.33 $ $HOME/mysqlc/bin/mysql -h 127.0.0.1 -P 5000 -u root mysql> create database clusterdb;use clusterdb; mysql> select * from simples; +----+ | id | +----+ | 3 | | 1 | | 2 | | 4 | +----+
  • 34.
  • 35. Adicionando Nós On-line Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node
  • 36. Instalar s/w & criar diretorios para 192.168.0.33/34 192.168.0.35 $ tar xvf Downloads/mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz $ ln -s mysql-cluster-gpl-7.1.4b-linux-i686-glibc23/ mysqlc $ mkdir my_cluster my_cluster/ndb_data 192.168.0.36 $ tar xvf Downloads/mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz $ ln -s mysql-cluster-gpl-7.1.4b-linux-i686-glibc23/ mysqlc $ mkdir my_cluster my_cluster/ndb_data Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node
  • 37. Iniciar o “mysql” (mysqld) 192.168.0.33 [my_cluster] $ mkdir mysqld_data2 [my_cluster] $ cd ../mysqlc [mysqlc] $ scripts/mysql_install_db --no-defaults --datadir=$HOME/my_cluster/mysqld_data2/ [mysqlc] $ cd ../my_cluster 192.168.0.34 [my_cluster] $ mkdir mysqld_data2 [my_cluster] $ cd ../mysqlc [mysqlc] $ scripts/mysql_install_db --no-defaults --datadir=$HOME/my_cluster/mysqld_data2/ [mysqlc] $ cd ../my_cluster Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node
  • 38. Altere o Cluster config.ini Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node 192.168.0.33 $ cd ~/my_cluster/conf/ [conf] $ vi config.ini ... [ndbd] hostname=192.168.0.35 id=5 [ndbd] hostname=192.168.0.36 id=6 [mysqld] id=52 [mysqld] id=53 ....
  • 39. Criar config file para os novos servidores MySQL Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node 192.168.0.33 [conf] $ vi my2.cnf [mysqld] ndbcluster datadir=/home/user1/my_cluster/mysqld_data2 basedir=/home/user1/mysqlc port=5001
  • 40. Duplicar config files para outros nós de gerenciamento Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node 192.168.0.33 [conf] $ sftp 192.168.0.34 sftp> cd my_cluster/conf sftp> put config.ini sftp> put my2.cnf sftp> bye
  • 41. Restart Nós de gerenciamento Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node 192.168.0.33 [conf] $ cd .. [my_cluster] $ $HOME/mysqlc/bin/ndb_mgm -e “2 STOP“ [my_cluster] $ $HOME/mysqlc/bin/ndb_mgm -e “1 STOP“ [my_cluster] $ $HOME/mysqlc/bin/ndb_mgmd -f conf/config.ini --initial --configdir=$HOME/my_cluster/conf/ 192.168.0.34 [my_cluster] $ $HOME/mysqlc/bin/ndb_mgmd -f conf/config.ini --initial --configdir=$HOME/my_cluster/conf/
  • 42. Restart Nós de dados existentes Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node 192.168.0.33 [my_cluster] $ $HOME/mysqlc/bin/ndb_mgm -e “3 RESTART“ # Wait until Node 3 has restarted [my_cluster] $ $HOME/mysqlc/bin/ndb_mgm -e “SHOW“ [ndbd(NDB)] 4 node(s) id=3 @192.168.0.31 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0) id=4 @192.168.0.32 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0, Master) id=5 (not connected, accepting connect from 192.168.0.35) id=6 (not connected, accepting connect from 192.168.0.36) [ndb_mgmd(MGM)] 2 node(s) id=1 @192.168.0.33 (mysql-5.1.44 ndb-7.1.4) id=2 @192.168.0.34 (mysql-5.1.44 ndb-7.1.4) [mysqld(API)] 4 node(s) id=50 @192.168.0.34 (mysql-5.1.44 ndb-7.1.4) id=51 @192.168.0.33 (mysql-5.1.44 ndb-7.1.4) id=52 (not connected, accepting connect from any host) id=53 (not connected, accepting connect from any host) [my_cluster] $ $HOME/mysqlc/bin/ndb_mgm -e “4 RESTART“
  • 43. Restart MySQL Servers existentes Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node 192.168.0.33 [my_cluster] $ $HOME/mysqlc/bin/mysqladmin -u root -h 127.0.0.1 -P 5000 shutdown [my_cluster] $ $HOME/mysqlc/bin/mysqld --defaults-file=conf/my.cnf & 192.168.0.34 [my_cluster] $ $HOME/mysqlc/bin/mysqladmin -u root -h 127.0.0.1 -P 5000 shutdown [my_cluster] $ $HOME/mysqlc/bin/mysqld --defaults-file=conf/my.cnf &
  • 44. Start no novo MySQL Servers Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node 192.168.0.33 [my_cluster] $ $HOME/mysqlc/bin/mysqld --defaults-file=conf/my2.cnf & 192.168.0.34 [my_cluster] $ $HOME/mysqlc/bin/mysqld --defaults-file=conf/my2.cnf &
  • 45. Start no nós de dados 192.168.0.35 $ $HOME/mysqlc/bin/ndbd -c 192.168.0.33:1186,192.168.0.34:1186 --initial 192.168.0.36 $ $HOME/mysqlc/bin/ndbd -c 192.168.0.33:1186,192.168.0.34:1186 --initial Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node
  • 46. Aguarde a inicialização Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node 192.168.0.33 [my_cluster] $ $HOME/mysqlc/bin/ndb_mgm -e “SHOW“ [ndbd(NDB)] 4 node(s) id=3 @192.168.0.31 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0, Master) id=4 @192.168.0.32 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0) id=5 @192.168.0.35 (mysql-5.1.44 ndb-7.1.4, no nodegroup) id=6 @192.168.0.36 (mysql-5.1.44 ndb-7.1.4, no nodegroup) [ndb_mgmd(MGM)] 2 node(s) id=1 @192.168.0.33 (mysql-5.1.44 ndb-7.1.4) id=2 @192.168.0.34 (mysql-5.1.44 ndb-7.1.4) [mysqld(API)] 4 node(s) id=50 @192.168.0.33 (mysql-5.1.44 ndb-7.1.4) id=51 @192.168.0.34 (mysql-5.1.44 ndb-7.1.4) id=52 @192.168.0.33 (mysql-5.1.44 ndb-7.1.4) id=53 @192.168.0.34 (mysql-5.1.44 ndb-7.1.4) [my_cluster] $ $HOME/mysqlc/bin/ndb_mgm -e “CREATE NODEGROUP 5,6“
  • 47. Confirme os novos nós em seus grupos Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node 192.168.0.33 [my_cluster] $ $HOME/mysqlc/bin/ndb_mgm -e “SHOW“ [ndbd(NDB)] 4 node(s) id=3 @192.168.0.31 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0, Master) id=4 @192.168.0.32 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0) id=5 @192.168.0.35 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 1) id=6 @192.168.0.36 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 1) [ndb_mgmd(MGM)] 2 node(s) id=1 @192.168.0.33 (mysql-5.1.44 ndb-7.1.4) id=2 @192.168.0.34 (mysql-5.1.44 ndb-7.1.4) [mysqld(API)] 4 node(s) id=50 @192.168.0.33 (mysql-5.1.44 ndb-7.1.4) id=51 @192.168.0.34 (mysql-5.1.44 ndb-7.1.4) id=52 @192.168.0.33 (mysql-5.1.44 ndb-7.1.4) id=53 @192.168.0.34 (mysql-5.1.44 ndb-7.1.4)
  • 48. Reparticione as tabelas ja existentes Data Node Data Node mysqld Mgmt Node mysqld Mgmt Node 31 32 33 34 Data Node Data Node mysqld mysqld 31 32 33 34 Data Node Data Node 35 36 mysqld Mgmt Node mysqld Mgmt Node 192.168.0.33 $ $HOME/mysqlc/bin/mysql -h 127.0.0.1 -P 5000 -u root mysql> use clusterdb; mysql> ALTER ONLINE TABLE simples REORGANIZE PARTITION; mysql> OPTIMIZE TABLE simples;
  • 49.

Notas del editor

  1. Thx for joining todays webinar: present How to get started with MySQL Cluster, and then how to scale deployment from evaluation thru to production Intro me and Andrew Housekeeping rules: Submit questions on-line via questiob box on right. We’ll answer these over webinar Webinar recorded, replay sent out in a few days+slides
  2. Divided into 2 sections: Getting Started with MySQL Cluster, so how to get the s/w, instll, cofigure, run, etc Scale for production Review requirements for HA &amp; Scaling Extend &amp; deploy the configuration to multiple hosts Dynamically scale without disrupting the Cluster
  3. Before that, quicj overview of MySQL. Worlds most popular open source database – 150m downloads, 12m active installation MySQL&apos;s user base — centered in five core areas comprised Web 2.0, SaaS, enterprise, ,OEM/embedded and telco – it is those last 2 that have been the largest users to date of MySQL Cluster to date – but we also see rapid adoption of Cluster in web and eCommerce appls,
  4. Design goals for MySQL Cluster: - everything we do in dev of the product is designed to enhance 1 or more of these core design goals: High Perf, specifically write scalability: how do we deliver without app developers having to modify their apps. Other dimension is low latency, to deliver real time responsivenss - 5 x 9s avail – handle both scheduled maintenace and failiers, so planned and unplanned downtime with less than 5 mins downtime per year - Low TCO –acquistion and operation of the s/w, as well as optimising perf and avail on commodity h/w, so keep overall projext costs down
  5. So, look at how we deliver against those goals - distributed hash table backed by an ACID relational model - As name suggests, MySQL Cluster comprises multiple nodes which act as a single system, implemented as shared-nothing architecture, scale out on commodity hardware - implemented as a pluggable storage engine for the MySQL Server, like InnoDB or MyISAM – so gives you ease-of-use and ubiquity of MySQL, with additional direct access via embedded APIs, so can eliminate SQL transofrmations completely and manage data directly from your app – C++, LDAP, HTTP, most recently, Java and OpenJPA. This boosts perf also enables devs to work in their prefeered dev environments accelate dev cycles. - automatic or user configurable data partitioning across nodes, MySQL Cluster handles this, no need to partition within the apps - synchronous data redundancy across nodes, using 2PC. Can be turned off, but default and recommendation is for it to be on - Because shared nothingh &amp; sync repli, we get sub-second fail-over. System also designed for self-healing recovery, so a fail;ed node will automatically rejoin and re-sync the cluster - geographic replication, for DR - data stored in main-memory or on disk (configurable per-column) - logging and check pointing of in-memory data to disk, so durability – perfomed as a background process, so eliminate I/O waits - online operations (i.e. add-nodes, schema updates, maintenance, etc), no downtime to apps or clients
  6. Look at types of workload Cluster deployed into and the users Cluster technology originally developed bu E///, used purely as an in-mem, carrier-grade db embedded in network equpt – typically switches. Acquired by MySQL in 2003. Acquired not just the technology, but also the engineering team who have contined to develop the product rapidy in subsequent years, ie added disk based tables, added SQL i/f, automtic node recovery, add Geo-Repl, open sourced. Very strong in telecoms in Sub DBs (HLR/HSS)– truly mission critical apps, also in app servers, VAS In web workloads, used a lot for session stores, eCommerce, Mgmt of user profiles
  7. Here we show the architectire of MySQL Cluster Data is distributed across multiple nodes, so you have multi-master db with parallel architecture so perform multiple write ops concurrently, with any changes instantly available to all clients accessing the cluster There are no SPOFs, it is shared nothing arch, so get 5x9s uptime 3 core elements Data Nodes: handle actual storage and access to data from your application – data is distributed across the data nodes – automatically partitioned, replication, failover and self healing. Don&apos;t need complex logic in the application – data nodes handle all of that Application Nodes – access data. Either SQL nodes running MySQL. Std SQL i/f that developers program against. Also have a series of native interfaces to directly access the data from within an appliation – bypasses SQL – gives highest performance, lowest latency: C++ API, Java API and OpenJPA plug-in for Object/Relational Mapping. Can also access via LDAP servers and HTTP with an Apache module Mgmt Nodes: used at start-up, used to add nodes, to reconfigure the cluster, arbitration if there is a network failure – avoid split brain as determine which side of the cluster assumes ownership of servicing requests