federated存储引擎 (mysql)

时间:2022-10-21 22:21:24

1.先查看federated存储引擎存储引擎是否启用

show engines;

federated存储引擎  (mysql)


support有以下几种状态:

yes : 支持并开启

default:支持并开启,并且是默认的存储引擎

no:不支持

disable:支持但没有开启


注意:federated 默认是no状态的,此处我已经设置好了,在my.ini配置文件(win系统下)中mysqld下追加一行:deferated

然后保存,重启mysql服务就可以了。


现在我要说的是重点:

  我的版本是免安装版本,所以my.ini文件是不存在的,所以我就创建了my.ini文件,但是创建了之后,总是会出现无法启动,错误内容是:无法启动MYSQL服务”1067 进程意外终止”,调查了很久,后来发现原来是my.ini文件中basedir=E:\\Program Files\\mysql-5.0.27的目录必须是\\,我用了\,


2.创建远程连接表

CREATE TABLE FEDERATED_actor (
`actor_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`first_name` varchar(45) NOT NULL,
`last_name` varchar(45) NOT NULL,
`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`actor_id`),
KEY `idx_actor_last_name` (`last_name`)
) ENGINE =FEDERATED CONNECTION='mysql://root:123456@127.0.0.1:3306/sakila/actor';


本地创建的表名必须在远程服务器存在,创建的字段也必须是远程表中的字段,可以比远程表的字段少,但是不能多,本地存储引擎选择:ENGINE =FEDERATED,

CONNECTION选项中的连接字符串的一般形式如下:scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name

还有一些连接字符串的例子:

CONNECTION='mysql://username:password@hostname:port/database/tablename'
CONNECTION='mysql://username@hostname/database/tablename'
CONNECTION='mysql://username:password@hostname/database/tablename'

注意:配置密码作为纯文本的话会存在安全问题,运行show create table,show table status是可以见的

  


以下是我的测试结果:

DROP TABLE IF EXISTS `federated_paytype`;

CREATE TABLE `federated_paytype` (
  `id` varchar(32) NOT NULL COMMENT '主键',
  `code` varchar(2) NOT NULL COMMENT '编码',
  `cname` varchar(64) NOT NULL COMMENT '中文名称',
  `ename` varchar(64) DEFAULT NULL COMMENT '英文名称',
  `currcode` varchar(2) NOT NULL COMMENT '货币类型 默认“00”',
  `changeflag` int(11) NOT NULL DEFAULT '0' COMMENT '是否找零 0-不找零;1-找零',
  `getnumflag` int(11) NOT NULL DEFAULT '0' COMMENT '是否输入卡号 0-不用卡号;1-输入卡号',
  `exchgrate` decimal(12,4) NOT NULL DEFAULT '1.0000' COMMENT '汇率',
  `state` int(11) NOT NULL DEFAULT '1' COMMENT '是否启用 0-禁用;1-启用',
  `referid` varchar(8) DEFAULT NULL COMMENT 'erp支付编码 erp系统对应支付方式编码',
  PRIMARY KEY (`id`),
  UNIQUE KEY `ix_t_s_paytype` (`code`)
) ENGINE= FEDERATED CONNECTION = 'mysql://root:root@192.168.1.231/cclcloud/t_s_paytype' CHARSET=utf8;


创建后的表中数据就是192.168.1.231中的数据,可以直接查看。无法修改该表的结构,修改数据时,这2个都会做修改。