最近业务,是要实现在一个中间数据库存储其他不同数据库的表数据
可以用FEDERATED存储引擎解决。
首先查看中间数据库的FEDERATED状态,命令行为:
show engines;
如果字段为NO,需要手动开启。
找到mysql的配置文件(my.ini)
然后再【mysqid】下加上一句federated
重新启动数据库,再次查询状态
开始建表,表名随便起,但字段,表结构必须一致:
CREATE TABLE `incoming_count_info` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '收货统计标识',
`site_no` varchar(20) NOT NULL DEFAULT '' COMMENT '据点编号',
`trans_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '事务状态',
`supplier_id` int(11) NOT NULL COMMENT '供应商标识',
`supplier_name` varchar(200) NOT NULL DEFAULT '' COMMENT '供应商名称',
`po_no` varchar(50) NOT NULL DEFAULT '' COMMENT '采购单号',
`call_date` datetime DEFAULT NULL COMMENT '要号日期',
`impforecast_print_date` datetime DEFAULT NULL COMMENT '采购订货单打印时间',
`imporder_print_date` datetime DEFAULT NULL COMMENT '进货单据打印时间',
`whole_qty` decimal(20,6) NOT NULL DEFAULT '0.000000' COMMENT '整箱箱数',
`tear_qty` decimal(20,6) NOT NULL DEFAULT '0.000000' COMMENT '拆零箱数',
`remark` varchar(200) NOT NULL DEFAULT '' COMMENT '备注',
`create_user` int(11) NOT NULL DEFAULT '0' COMMENT '登录人',
`create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '登录日期',
`update_user` int(11) NOT NULL DEFAULT '0' COMMENT '修改人',
`update_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改日期',
PRIMARY KEY (`id`)
) ENGINE=FEDERATED CONNECTION='mysql://root:123456@192.168.100.100:3306/fle_statistics/incoming_count_info' AUTO_INCREMENT=219 DEFAULT CHARSET=utf8 COMMENT='收货统计表';
关键是在建表中使用了FEDERATED存储引擎即:ENGINE=FEDERATED
映射表完成,远程表数据的改变,映射表跟随改变
跨服务器查询,查本地映射表即可!