MySQL远程表使用
1.1.1 MySQL远程表介绍及注意问题
I. 实现原理
通过创建存储引擎为Federated 的表来实现远程共享服务器表数据。
Federated:能够将多个分离(不在同一台服务器上的机器)的MySQL服务器链接起来,从多个物理服务器创建一个逻辑数据库。十分适合于分布式环境或数据集市环境。
II. 应用注意问题
1. 本地数据库服务必须支持“FEDERATED”存储引擎,远程服务器可以不支持
2. 本地服务器最好不是集成环境,例如 apmxe ,wamp 等,集成环境,启动“FEDERATED”存储引擎会出现其他问题,不能正常启动
3. “FEDERATED”存储引擎是从MySQL5.0开始支持的 。
4. 因为操作本地库中的远程表,就是操作远程库中对应的数据库表,所以在本地库中对应远程表的操作(新增,修改,删除),均为反应都对应的远程表中。
5. 其他
III. 关于延迟问题
1. 本地服务器与远程服务器在同一网段中(局域网),测试延迟时间感觉不到。
2. 延迟与网速和服务器性能有关。
1.1.2 实际应用举例
I. 检查数据库服务器是否支持远程表
在MySQL命令行使用 “showengines ;”检查是否支持远程表,实际上是查看当前数据库服务器(想远程共享其他服务器数据库数据的机器)是否支持“FEDERATED”存储引擎。参考语句及结构如下
II. 为服务器开启“FEDERATED”存储引擎
第一步:
修改MySQL数据库配置文件 ,参考过程如下:
第二步:
重启MySQL数据库服务
第三步:检查“FEDERATED”存储引擎是否开启
III. “showengines ;”命令输出结果简单介绍
字符集
Value |
Meaning |
|
The engine is supported and is active (支持当前引擎) |
|
Like |
|
The engine is not supported (当前数据库默认不支持当前引擎,通过其他配置或安装对应插件可以支持) |
|
The engine is supported but has been disabled (支持当前存储引擎,但未开启) |
A value of NO
means that the server wascompiled without support for the engine, so it cannot be enabled at runtime.
A value of DISABLED
occurs either because theserver was started with an option that disables the engine, or because not alloptions required to enable it were given. In the latter case, the error logfile should contain a reason indicating why the option is disabled. See Section 5.2.2, “The Error Log”.
You might also see DISABLED
for a storageengine if the server was compiled to support it, but was started with a --skip-engine_name
option. For the NDBCLUSTER
storage engine, DISABLED
means the server was compiled withsupport for MySQL Cluster, but was not started with the --ndbcluster
option.
IV. 应用举例
1.服务器情况
类别 |
IP地址 |
数据库端口 |
登录用户名 |
登录用户密码 |
是否需要支持“FEDERATED” |
其他 |
数据库 |
表名 |
服务器1(本地服务器) |
192.168.1.134 |
3306 |
zichen |
62672000 |
需要 |
本地服务器,远程共享183服务器数据 |
cbs_db_zyh |
dblink_jykzcs |
服务器2(远程服务器) |
192.168.1.183 |
3306 |
zichen |
62672000 |
不需要 |
|
tms_db |
cs_jykzcs |
登录用户名与密码可以不一样 。
2.创建远程表 :
DROP TABLE IF EXISTS dblink_jykzcs; CREATE TABLE IF NOT EXISTS dblink_jykzcs ( jykzid int(15) NOT NULL AUTO_INCREMENT COMMENT '交易控制id', jykzkg varchar(25) NOT NULL DEFAULT 'FF800000000000000000' COMMENT '交易控制开关,由TMS页面配置可生成', jysfskmm varchar(5) NOT NULL DEFAULT '1111' COMMENT '交易是否输卡密码,1是,0否,第一位:消费撤销,第二位:预授权撤销,第三位:预授权完成撤销,第四位:预授权完成(请求),其他交易均需要输卡密码', sfsrzgmm varchar(2) DEFAULT '1' COMMENT '是否输入主管密码,1是,0否,仅适用消费撤销、退货、预授权撤销、预授权完成撤销交易;其他交易均不需要输入主管密码', cxwcsfsk varchar(4) DEFAULT '11' COMMENT '消费撤销、预授权完成撤销是否需要刷卡,第一位:消费撤销(1是,0否),第二位:预授权完成撤销(1是,0否)', sfyxsskh varchar(2) DEFAULT '1' COMMENT '是否允许手输卡号,1是,0否,仅适用预授权完成(请求、通知)、预授权撤销交易,其他交易均不允许手输卡号', jsxgkz varchar(4) DEFAULT '11' COMMENT '结算相关控制,第一位:自动签退(1是,0否),第二位:打印明细(1是,0否)', lxjyxgkz varchar(4) DEFAULT '11' COMMENT '离线交易相关控制,第一位:上送方式(1联机前,0结算前否)第二位:上送次数(1-9)', mrskjy varchar(2) DEFAULT '1' COMMENT '默认刷卡交易,1表示消费,0表示预授权', thxe varchar(15) DEFAULT '50000' COMMENT '退货限额,精确到分', sfcdjm varchar(2) DEFAULT '1' COMMENT '是否磁道加密,1是,0否', yzqsfpbkh varchar(2) DEFAULT '0' COMMENT '预授权是否屏蔽卡号,1是,0否', sfdymx varchar(2) DEFAULT '0' COMMENT '是否打印(失败)明细,1是,0否,是否打印没有收到成功应答和上送失败的IC卡或离线交易明细,默认不打印。', sfsfyz varchar(2) DEFAULT '1' COMMENT '是否支持订购持卡人身份验证,1是,0否,订购持卡人身份验证为查询类交易,默认打开。', bmtcfcs varchar(2) DEFAULT '3' COMMENT '报文头处理要求重发次数,1-9之间,针对交易中报文头返回码的处理要求,达到设定次数后清空该标志位,默认3次。', mqje varchar(4) DEFAULT '100' COMMENT '免签金额(麦当劳、汉堡王),1-999之间', sfdyewm varchar(2) DEFAULT '1' COMMENT '是否打印二维码,1-999之间,1是,0否,默认为1', jyspkg varchar(2) DEFAULT '0' COMMENT '交易锁屏开关(TPOS),1是,0否,默认为0', sfmq varchar(2) DEFAULT '1' COMMENT '是否免签(麦当劳、汉堡王、星巴克),1是,0否,默认为1', urlxx varchar(260) DEFAULT NULL COMMENT 'url信息,生成二维码使用的url', ewmsmxx varchar(50) DEFAULT NULL COMMENT '二维码的标题', xjcz varchar(4) DEFAULT '1111' COMMENT '现金充值、次卡账户充值、通用积分充值、专属积分充值,商盈通专用,第一位:现金充值,第二位:次卡账户充值,第三位:通用积分充值,第四位:专属积分充值', yhkcz varchar(4) DEFAULT '1111' COMMENT '银行卡充值、次卡账户充值、通用积分充值、专属积分充值商盈通专用,第一位:银行卡充值,第二位:次卡账户充值,第三位:通用积分充值,第四位:专属积分充值', vvywsfkq varchar(1) DEFAULT '1' COMMENT 'VISA VEPS业务是否开启,1、是,0、否,默认1', zdh int(8) NOT NULL COMMENT '终端号', jsh varchar(50) NOT NULL COMMENT '机身号', jykzylzd1 varchar(50) DEFAULT NULL COMMENT '交易控制预留字段1', jykzylzd2 varchar(50) DEFAULT NULL COMMENT '交易控制预留字段2', jykzylzd3 varchar(50) DEFAULT NULL COMMENT '交易控制预留字段3', jykzylzd4 varchar(50) DEFAULT NULL COMMENT '交易控制预留字段4', jykzylzd5 varchar(50) DEFAULT NULL COMMENT '交易控制预留字段5', PRIMARY KEY (jykzid), UNIQUE KEY jsh (jsh) )<span style="color:#FF0000;"> ENGINE=federated connection="mysql://zichen:123456@192.168.1.183:3306/tms_db/cs_jykzcs" </span> DEFAULT CHARSET=gbk COMMENT='交易控制参数' AUTO_INCREMENT=104 ;
3.测试
在本地库对dblink_jykzcs表进行操作 ,查看远程服务器表(cs_jykzcs)数据情况,在远程服务器表(cs_jykzcs)操作,查询本地服务器dblink_jykzcs表变化情况
两边插入数据或删除,修改数据,另外一端均可同步。(具体步骤 省略)