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.

11 Responses to “Cluster MySQL en ubuntu con VirtualBox”

  1. […] https://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

  6. oye mil gracias me funciono de maravilla, busque y busque info acerca d esto por dos semanas, tu guia es la mejor ke encontre, sencilla facil de seguir y va al punto, te lo agradezco

  7. Amigo que version utilizaste para la virtualBox porque al correr vboxmanage clonevdi Master.vdi node1.vdi me lanza un error El programa «vboxmanage» no está instalado actualmente. Puede instalarlo escribiendo:
    sudo apt-get install virtualbox-ose

    Ayuda.

    • Hola, debe cambiar el vboxmanage por VBoxManage note el cambio de las mayúsculas ya que con las nuevas versiones de virtualbox cambia el comando

  8. Hola. No entiendo algo. Ubuntu es el SO desde el cual creas las máquinas virtuales o es el SO de las máquinas virtuales?

    • En este caso ubuntu actúa en los dos escenarios como host y como guest.

      • Bien. Este comando: $ VBoxManage clonevdi Master.vdi node1.vdi se corre desde el host o el gest administrador? Y de quién es Master.vdi?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: