因为牵扯到两台服务器之间,相互核对数据。所以找了些研究了下这个技术。技术分享
在另一片文章中,内容是说主从服务器配置, 这个有个局限就是会自动同步数据,不可控!
以下为配置过程步骤:
/******************************
(1) 配置 federated引擎表
****************************/
执行以下命令
mysql->show engines;
+------------+--------+
| Engine | Support |
+------------+--------+
| FEDERATED | NO |
#显示为上述结果,说明有引擎,但是没有开启;
需要在my.ini中、[mysqld]下添加一行:federated
重启Mysql,完成。
× 如果没有出现结果, 就是没有federated引擎。具体方法没有研究过
(2)以下是配置同步表
//远程表格式 (ip 192.168.1.2) 即有数据的实体表结构
use test;
CREATE TABLE `tab` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`a` varchar(32) DEFAULT NULL,
`b` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=41 DEFAULT CHARSET=gbk
(3)//本地创建对应的远程虚拟表,实际里面没有数据,这个表的作用就是用来在本地查询远程表中的数据
表结构需要一致,表名和数据库名称没有特殊要求;
注意:ENGINE=federated
use test_1; (ip:192.168.1.1)
CREATE TABLE `tab1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`a` varchar(32) DEFAULT NULL,
`b` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=federated DEFAULT CHARSET=gbk connection="mysql://用户名:密码@192.168.1.2:3306/test/tab";
//用户名:密码@远程地址:端口/数据库/表名
配置完成后,可以在本地测试,比如查询(select)或者insert
一些注意事项: 1. 对本地虚拟表的结构修改,并不会修改远程表的结构 2. truncate 命令,会清除远程表数据 3. drop命令只会删除虚拟表,并不会删除远程表 4. 不支持 alter table 命令