Páginas

Mostrando postagens com marcador MySQL Cluster. Mostrar todas as postagens
Mostrando postagens com marcador MySQL Cluster. Mostrar todas as postagens

quarta-feira, 10 de abril de 2013

Wizard para Configuração do MySQL Cluster

Uma das formas simples de gerar facilmente um cluster MySQL é utilizar um dos diversos wizards existentes. Dentre as diversas, encontrei uma bem legal que não necessita de nada adicional, pode ser gerado diretamente do site:




terça-feira, 9 de abril de 2013

2PC - Procotolo Two Phase Commit

Protocolo Two Phase Commit (2PC)



O Two Phase Commit (2PC) é um protocolo de compromisso atômica (ACP). É um algoritmo distribuído que coordena todos os processos que participam de uma transação distribuída atômica sobre a possibilidade de confirmar ou anular (roll back) a operação (que é um tipo especializado de protocolo de consenso).  É usado em banco de dados (principalmente distribuído como o MySQL-Cluster), aplicações que exige controle transacional, redes de computadores.

O protocolo alcança o seu objectivo, mesmo em muitos casos de falha temporária do sistema (que envolvem um ou outro processo, o nó da rede, a comunicação, falhas, etc), e é, portanto, amplamente utilizada.

Conforme vemos na figura a cima, o nome "Duas Fases" é devido a necessidade da fase de preparo e fase de commit/rollback.

segunda-feira, 8 de abril de 2013

Instalação do MySQL Cluster no CenTOS 6.3

Instalação do MySQL Cluster no CenTOS 6.3


Pre-Requisitos - Centos 64bits para instalar MySQL 32bits

yum install glibc.i686
yum install libgcc.i686
yum install libaio.i686
yum install ncurses-libs.i686

Pre-Requisitos - Centos 64bits para instalar MySQL 64bits
yum install glibc
yum install libgcc
yum install libaio
yum install ncurses-libs


Download do Pacote

cd /tmp
export CDN_MySQL="http://cdn.mysql.com/Downloads/MySQL-Cluster-7.2"


# Para 64bits
wget ${CDN_MySQL}/mysql-cluster-gpl-7.2.12-linux2.6-x86_64.tar.gz


# Para 32bits

wget ${CDN_MySQL}/mysql-cluster-gpl-7.2.12-linux2.6-i686.tar.gz



Instalação do Pacote


# Se for 64bits subsitutir por mysql-cluster-gpl-7.2.12-linux2.6-x86_64.tar.gz
cd /usr/local/
tar -zxvf /tmp/mysql-cluster-gpl-7.2.12-linux2.6-i686.tar.gz
ln -sf mysql-cluster-gpl-7.2.12-linux2.6-i686 mysql
cd mysql

groupadd mysql
useradd -g mysql mysql
cp support-files/mysql.server /etc/init.d/mysql
vim /etc/bashrc 

-- Adiciona no /etc/bashrc --
PATH=$PATH:/usr/local/mysql/bin
-- Fim - /etc/bashrc 

# RELOAD
source /etc/bashrc 



# ----------- Single MySQL Cluster ---------

Pós Instalação

mkdir /databases/my_cluster/ndb_data -p
mkdir /databases/my_cluster/mysqld_data -p
mkdir /databases/my_cluster/conf -p
cd /databases/my_cluster/conf

Criar  /databases/my_cluster/conf/my.cnf

-- Inicio /databases/my_cluster/conf/my.cnf --- 
[mysqld]
ndbcluster
ndb-connectstring=localhost
datadir=/databases/my_cluster/mysqld_data
basedir=/usr/local/mysql
port=5000
 
[mysql_cluster]
ndb-connectstring=localhost
 
[ndb]
ndb-connectstring=localhost
--- Fim /databases/my_cluster/conf/my.cnf ---


Criar  /databases/my_cluster/conf/config.ini


-- Inicio /databases/my_cluster/conf/config.ini
[ndbd default]noOfreplicas=2datadir=/databases/my_cluster/ndb_data 
#Management Node[ndb_mgmd]hostname=localhostdatadir=/databases/my_cluster/ndb_dataNodeId=1 
# Data Nodes[ndbd]hostname=localhostNodeId=3 
[ndbd]hostname=localhostNodeId=4
# API - SQL Nodes[mysqld]NodeId=50
-- Fim /databases/my_cluster/conf/config.ini

Criando my.cnf 

cd /etc/
mv my.cnf my.cnf.disabled
ln -sf /databases/my_cluster/conf/my.cnf .

Configurando a instância

cd /usr/local/mysql/scripts
./mysql_install_db --no-defaults --datadir=/databases/my_cluster/mysqld_data/ --basedir=/usr/local/mysql/scripts/

cd /databases/
chown mysql:mysql my_cluster/ -R


Configurando a API(MySQL)

cd /etc
mv my.cnf my.cnf-original
ln -sf /databases/my_cluster/conf/my.cnf .
/etc/init.d/mysql start
mysql -h 127.0.0.1 -P 5000 -u root

Start do Gerenciado do Cluster

ndb_mgmd -f /databases/my_cluster/conf/config.ini  --initial \
--configdir=/databases/my_cluster/conf/


Start do DataNode

ndbd -c localhost:1186
ndbd -c localhost:1186


Verificando

ndb_mgm -e show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------log-name=lixclnd2
[ndbd(NDB)] 2 node(s)
id=3 (not connected, accepting connect from localhost)
id=4 (not connected, accepting connect from localhost)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @127.0.0.1  (mysql-5.5.30 ndb-7.2.12)
[mysqld(API)] 1 node(s)
id=50 (not connected, accepting connect from any host)

Desligando

/etc/init.d/mysql stopndb_mgm -e shutdown

Instalacao do Banco World

cd /tmp
mysql -u root -e'create database world'
wget http://downloads.mysql.com/docs/world_innodb.sql.gz
zcat world_innodb.sql.gz |sed 's/ENGINE=InnoDB/ENGINE=NDB/g' |mysql -u root world


Configurando o PERL para as ferramentas 

Pré-requisitos

yum install perl-DBI
yum install perl-DBD-MySQL
yum install perl-Class-MethodMaker

Testando ferramenta Perl: Size of NDB DataBase
ndb_size.pl --database=world --host=127.0.1:5000
ndb_size.pl --database=world --host=127.0.1:5000 > result.log