Cluster MySQL en ubuntu con VirtualBox

Primero que todo se utilizan tres maquinas ubuntu (un nodo de administracion y dos nodos de datos) virtualizadas con VirtualBox, luego se ponen en red y se crea el cluster.

  • Se crea una máquina virtual con ubuntu 8.10 según mi caso, se le instala mysql-server-5.0 con apt que al tiempo de este post era el último que soporta cluster.
  • $ sudo apt-get install mysql-server-5.0
  • Después de tener la maquina virtual con mysql server,  se procede a clonar las otras dos para completar las tres:
    $ vboxmanage clonevdi Master.vdi node1.vdi
    $ vboxmanage clonevdi Master.vdi node2.vdi
    $ vboxmanage clonevdi Master.vdi mgmt.vdi
  • Para este paso las dos maquinas virtuales deben estar creadas sin disco para añadirles los discos clonados anteriormente:
    $ vboxmanage modifyvm Node1 -hda node1.vdi
    $ vboxmanage modifyvm Node2 -hda node2.vdi
    $ vboxmanage modifyvm Mgmt -hda mgmt.vdi
  • Se crea la red interna para que las máquinas virtuales se comuniquen entre sí pero no podŕan ver al host.
    $ vboxmanage modifyvm Node1 -nic1 intnet
    $ vboxmanage modifyvm Node1 -intnet1 testnet
    $ vboxmanage modifyvm Node2 -nic1 intnet
    $ vboxmanage modifyvm Node2 -intnet1 testnet
    $ vboxmanage modifyvm Mgmt -nic1 intnet
    $ vboxmanage modifyvm Mgmt -intnet1 testnet
  • Por último se configuran las interfaces de red de las virtuales dentro de la misma red y usando como puerta de enlace la ip del host.
  • Luego entramos en la máquina que va a ser el nodo de administración y tecleamo su – para quedar como root y evitar teclear sudo en cada comando.
  • CONFIGURANDO EL NODO DE ADMINISTRACIÓN.
  • Crear el texto a continuación en el archivo /etc/mysql/ndb_mgmd.cnf
  • [NDBD DEFAULT]
    NoOfReplicas=2
    DataMemory=80M    # How much memory to allocate for data storage
    IndexMemory=18M   # How much memory to allocate for index storage
    # For DataMemory and IndexMemory, we have used the
    # default values. Since the "world" database takes up
    # only about 500KB, this should be more than enough for
    # this example Cluster setup.
    [MYSQLD DEFAULT]
    [NDB_MGMD DEFAULT]
    [TCP DEFAULT]
    # Section for the cluster management node
    [NDB_MGMD]
    # IP address of the management node (this system)
    HostName=192.168.1.5
    
    # Section for the storage nodes
    [NDBD]
    # IP address of the first storage node
    HostName=192.168.1.6
    DataDir=/var/lib/mysql-cluster
    BackupDataDir=/var/lib/mysql-cluster/backup
    DataMemory=512M
    [NDBD]
    # IP address of the second storage node
    HostName=192.168.1.7
    DataDir=/var/lib/mysql-cluster
    BackupDataDir=/var/lib/mysql-cluster/backup
    DataMemory=512M
    
    # one [MYSQLD] per storage node
    [MYSQLD]
    [MYSQLD]
  • AHORA SE CONFIGURAN LOS NODOS DE ALMACENAMIENTO
  • Como se ve en el archivo,  se hace referencia a la carpeta backup la cual no existe entonces se crea y se le cambia el dueño:
  • $ mkdir /var/lib/mysql-cluster/backup
    $ chown -R mysql:mysql /var/lib/mysql-cluster
  • Ahora se debe editar el archivo de configuración de MySQL /etc/mysql/my.cnf, buscar por [mysqld] y añadir el texto siguiente.
  • [mysqld]
    ndbcluster
    # IP address of the cluster management node
    ndb-connectstring=192.168.1.5
  • Luego en el mismo archivo buscar por [MYSQL_CLUSTER] y añadir el texto siguiente:
  • [MYSQL_CLUSTER]
    ndb-connectstring=192.168.1.5
  • Realizar estas configuraciones en los dos nodos de datos.
  • Luego en el nodo de administración se inicia el servicio.
  • /etc/init.d/mysql-ndb-mgm restart
  • Luego se accede a la consola de administración con el comando ndb_mgm.
  • En el prompt teclear show; y debe mostrar algo como lo siguiente.
  • ndb_mgm> show;
    Connected to Management Server at: localhost:1186
    Cluster Configuration
    ---------------------
    [ndbd(NDB)]    2 node(s)
    id=2 (not connected, accepting connect from 192.168.1.6)
    id=3 (not connected, accepting connect from 192.168.1.7)
    
    [ndb_mgmd(MGM)]    1 node(s)
    id=1    @192.168.1.5  (Version: 5.0.51)
    
    [mysqld(API)]    2 node(s)
    id=4 (not connected, accepting connect from any host)
    id=5 (not connected, accepting connect from any host)
  • Luego iniciar el servicio en los nodos de datos.
  • /etc/init.d/mysql restart
    /etc/init.d/mysql-ndb restart
  • Y de vuelta en el nodo de administración el comando show; debe mostrar algo como:
  • ndb_mgm> show;
    Cluster Configuration
    ---------------------
    [ndbd(NDB)]    2 node(s)
    id=2    @192.168.1.6  (Version: 5.0.51, Nodegroup: 0, Master)
    id=3    @192.168.1.7  (Version: 5.0.51, Nodegroup: 0)
    [ndb_mgmd(MGM)]    1 node(s)
    id=1    @192.168.1.5  (Version: 5.0.51)
    [mysqld(API)]    2 node(s)
    id=4    @192.168.1.7  (Version: 5.0.51)
    id=5    @192.168.1.6  (Version: 5.0.51)
  • Luego para pruebas, se crea la misma base de datos en ambos nodos de datos, pero se crea la tabla solo en uno y se verifica que desde los dos nodos se vean los datos de las tablas creadas en cluster.
  • mysql> create database clustertest;
    Query OK, 1 row affected (0.00 sec)
    mysql> use clustertest;
    Database changed
    mysql> create table test (i int) engine=ndbcluster;
    Query OK, 0 rows affected (0.71 sec)
    
    mysql> insert into test values (1);
    Query OK, 1 row affected (0.05 sec)
    
    mysql> select * from test;
    +------+
    | i    |
    +------+
    |    1 |
    +------+
    1 row in set (0.03 sec)

~ by aguerrerotoro on March 26, 2009.

5 Responses to “Cluster MySQL en ubuntu con VirtualBox”

  1. [...] http://aguerrerotoro.wordpress.com/2009/03/26/cluster-mysql-en-ubuntu-con-virtualbox/ [...]

  2. No me ha funcionado el mensaje con show siempre es igual nunca se conectan los otros nodos

  3. Debe validar la cantidad de nodos conectados como en este ejemplo que dice “[ndbd(NDB)] 2 node(s)” ya que en los mensajes posteriores dice que no estan conectados, también debe intentar ingresar un registro en un nodo y validar si lo ingresa también en el otro nodo.

  4. Una pregunta que puede ser si en el administrador se ve la tabla y en el nodo no???, ya me aparecieron los @ en el ndb_mgm segun ya estan conectados…

  5. gracias me funciono

    con algunos servicios pero resulto que era las asignaciones de ip’s

    muy bueno el tutorial
    siga publicando
    y colaborando

Leave a Reply