Tablas federadas en MySQL

Tablas
federadas en
MySQL
Desde Windows y CentOS
1. Primera DB en Windows
tbnaucalpan
Crear la DB local
mysql> use tbnaucalpan
mysql> show tables;
+-----------------------+
| Tables_in_tbnaucalpan |
+-----------------------+
| cliente
|
| transferencia
|
+-----------------------+
mysql> describe cliente;
+--------+-------------+------+-----+---------+-------+
| Field | Type
| Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| No | int(11) | NO | PRI | NULL |
|
| nombre | varchar(40) | YES | | NULL |
|
| saldo | double
| YES | | NULL |
|
+--------+-------------+------+-----+---------+-------+
mysql> describe transferencia;
+---------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+---------+------+-----+---------+-------+
| folio | int(11) | NO | PRI | NULL |
|
| c1
| int(11) | YES | MUL | NULL |
|
| c2
| int(11) | YES | MUL | NULL |
|
| importe | double | YES | | NULL |
|
+---------+---------+------+-----+---------+-------+
Crear la DB local
mysql> select * from cliente;
+----+---------+-------+
| No | nombre | saldo |
+----+---------+-------+
| 4 | Lupita | 10000 |
| 5 | Juanito | 10 |
| 6 | Josue | 10000 |
+----+---------+-------+
mysql> select * from transferencia;
+-------+------+------+---------+
| folio | c1 | c2 | importe |
+-------+------+------+---------+
| 1 | 4 | 5 | 1000 |
+-------+------+------+---------+
Consultar las dos tablas locales
mysql> select cliente1.nombre, cliente2.nombre,
-> importe
-> from cliente as cliente1, cliente as cliente2,
-> transferencia
-> where cliente1.No = c1
-> and cliente2.No = c2;
+--------+---------+---------+
| nombre | nombre | importe |
+--------+---------+---------+
| Lupita | Juanito | 1000 |
+--------+---------+---------+
2. Habilitar el engine federated.
Verificar el engine federated

En Windows, en la consola de mysql:
mysql> show engines;
+--------------------+---------+---------------------------------------------------------------+--------------+------+------------+
| Engine
| Support | Comment
| Transactions | XA | Savepoints |
+--------------------+---------+---------------------------------------------------------------+--------------+------+------------+
| FEDERATED
| NO | Federated MySQL storage
engine
| NO
| NO | NO
|
Habilitar el engine federated
 Editar
el archivo mi.ini
Habilitar el engine federated
 Editar
el archivo mi.ini
# The MySQL server
[mysqld]
federated
port= 3306
…
# skip-networking
# skip-federated
Reiniciar
mysqld
Verificar el engine federated

En Windows, en la consola de mysql:
mysql> show engines;
+--------------------+---------+---------------------------------------------------------------+--------------+------+------------+
| Engine
| Support | Comment
| Transactions | XA | Savepoints |
+--------------------+---------+---------------------------------------------------------------+--------------+------+------------+
| FEDERATED
| YES | Federated MySQL storage
engine
| NO
| NO | NO
|
3. Segunda DB en Windows.
tbnaucalpan_r
Crear la segunda DB y una tabla de
clientes
mysql> create database tbnaucalpan_r;
mysql> use tbnaucalpan_r;
mysql> create table cliente
-> (No integer primary key,
-> nombre varchar(40),
-> saldo double);
En la primera DB crear una tabla federada
mysql> use tbnaucalpan;
mysql> create table cliente_r
-> (No integer primary key,
-> nombre varchar(40),
-> saldo double)
-> engine federated
-> connection=
->'mysql://root@localhost:3306/tbnaucalpan_r/cliente'
-> ;
Insertar en la tabla federada
mysql> use tbnaucalpan;
mysql> show tables;
+-----------------------+
| Tables_in_tbnaucalpan |
+-----------------------+
| cliente
|
| cliente_r
|
| transferencia
|
+-----------------------+
mysql> insert into cliente_r values (...);
Verificar la inserción
mysql> use tbnaucalpan;
mysql> select * from cliente_r;
+-----+--------------+----------+
| No | nombre | saldo |
+-----+--------------+----------+
| 4 | margo | 3000 |
| 5 | fili
|
4|
+-----+--------------+----------+
Verificar en la segunda DB
mysql> use tbnaucalpan_r
mysql> show tables;
+---------------------------------------+
| Tables_in_tbnaucalpan_r |
+---------------------------------------+
| cliente
|
+---------------------------------------+
mysql> select * from cliente;
+----+----------------+---------+
| No | nombre | saldo |
+----+-----------------+---------+
| 4 | margo | 3000 |
| 5 | fili
|
4|
+----+----------------+----------+
Consultar las dos tablas, una local y otra
federada
mysql> select cliente1.nombre, cliente2.nombre,
-> importe
-> from cliente_r as cliente1, cliente_r as cliente2,
-> transferencia
-> where cliente1.No = c1
-> and cliente2.No = c2;
+--------+--------+---------+
| nombre | nombre | importe |
+--------+--------+---------+
| margo | fili | 1000 |
+--------+--------+---------+
4. Tercera DB en centOS
Tbnaucalpan_c
Iniciar la máquina virtual y
conectarse. (root, r00terio)
Check list en centOS
 Levantar
la red: ifup eth0
 Checar IP: ifconfig
 Ping
a IP de Windows
 Levantar mysqld: service mysqld start
 Abrir puertos: iptables -F
Conectarse a mysql
Crear la DB en centOS
Crear la DB en centOS
Crear un usuario en centOS
(liliana, 2222) y darle privilegios
En la primera DB crear una tabla federada
mysql> use tbnaucalpan;
mysql> create table cliente_c
-> (No integer primary key,
-> nombre varchar(40),
-> saldo double)
-> engine federated
-> connection=
-> ‘mysql://liliana:[email protected]:3306/tbnaucalpan_c/cliente'
-> ;
Consultar las dos tablas, una local y otra
federada
mysql> select cliente1.nombre, cliente2.nombre,
-> importe
-> from cliente_c as cliente1,
-> cliente_c as cliente2,
-> transferencia
-> where cliente1.No = c1
-> and cliente2.No = c2;
+--------------+--------------+-------------+
| nombre | nombre | importe |
+--------------+--------------+-------------+
| Peter | kity
|
1000 |
+--------------+--------------+-------------+