MYSQL跨服务器实现数据查询

最近业务,是要实现在一个中间数据库存储其他不同数据库的表数据

可以用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

映射表完成,远程表数据的改变,映射表跟随改变

跨服务器查询,查本地映射表即可!

 

 


版权声明:本文为weixin_43821614原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。