查看启Federated引擎是否安装
mysql>show engines;

Mysql使用FEDERATED引擎实现数据表映射 - 图1
可以看出服务器当前并未安装Federated引擎
安装Federated引擎
mysql> install plugin federated soname ‘ha_federated.so’;
Mysql使用FEDERATED引擎实现数据表映射 - 图2
查看本地数据库是否开启FEDERATED引擎
mysql>show engines;

Mysql使用FEDERATED引擎实现数据表映射 - 图3

  • 此处可以看到FEDERATED引擎已经开启(本地开启过了,实际情况初次安装是未开启状态)
  • 如果没有开启
    • Windows操作系统:在my.ini配置文件中添加“federated”
    • Linux操作系统:vi /etc/my.cnf,加入一行federated,保存并退出

Mysql使用FEDERATED引擎实现数据表映射 - 图4
重启mysql服务
mysql>service mysqld restart
Mysql使用FEDERATED引擎实现数据表映射 - 图5
再次查看(已经开启):mysql>show engines;
Mysql使用FEDERATED引擎实现数据表映射 - 图6

使用FEDERATED建表语句实现数据库映射

此处需要注意的一点,映射表的操作会同时对A库–B库建立映射关系的表同步操作,两表数据完全一直。如需对某库的表操作权限设置,请创建操作用户授权时授对应权限。
语法

  1. CREATE TABLE (......) ENGINE =FEDERATED CONNECTION='mysql://[name]:[pass]@[location]:[port]/[db-name]/[table-name]'
  2. name--mysql用户名
  3. pass--mysql密码
  4. location--ip
  5. port:端口号
  6. db-name:数据库名
  7. table-name:表名
  8. PS:创建的表名和远程访问的表名可以不同。

例:

  1. CREATE TABLE `user` (
  2. `id` int(11) NOT NULL,
  3. `name` varchar(30) NOT NULL,
  4. `age` int(11) NOT NULL,
  5. PRIMARY KEY (`id`)
  6. ) ENGINE=FEDERATED
  7. CONNECTION='mysql://newuser:NewUser(123456)@127.0.0.1:3306/test_a/user';