mysql使用federated实现类似oracle的dblink的功能.docx_第1页
mysql使用federated实现类似oracle的dblink的功能.docx_第2页
mysql使用federated实现类似oracle的dblink的功能.docx_第3页
mysql使用federated实现类似oracle的dblink的功能.docx_第4页
mysql使用federated实现类似oracle的dblink的功能.docx_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

使用场景: 原理不多做介绍 ,请自行百度之, oracle有dblink功能,当我们的业务系统需要调用其他的业务系统时候, 需要从数据库层面进行系统间的数据调用。Oracle中我们的客户端通过dblink调用已经成功实现。姑且把我们的主业务数据库称作为A,被调用的其他业务数据库(也可以理解为其他公司的数据库)称作为B。我们需要在A库中建立对B的映射, 需要通过federated引擎来实现(这个貌似没有事务处理的能力,未加验证(不支持)。)只有innodb 引擎支持 事务参考链接/edeed/item/1e3f741eeb4fbef487ad4eb9B库需要做什么? B库需要做的很简单, 只需要告知我们需要的表结构,用户名密码,连接串,数据库串,当然一般情况下 B库是会建立一个view供A库使用 , 并建立新用户赋予相应的权限供A库使用,用户权限如果是只读的 那么A库就只有只读的权限, 总而言之,B库就是需要给我们可访问的权限。A库需要做什么, 工作以及注意点 主要都在A库上了。查看A库的引擎情况如图:Show engines;此图是win7 32位 mysql 5.0.9 版本 默认情况 federated 是未开启的 也是 support字段为NO 。 如何开启? 找到mysql的安装位置 找到根目录下的my.ini文件 在 mysqld下边添加 rederated 即可 我的默认是 skip-rederated 你们的是什么就不知道了哦然后重启mysql服务 在查询show engines; Federated 的support就会变为 YES了, 此时我们的mysql已经支持该引擎了。Linux怎么做? 测试系统为centos 6.x 64位 mysql版本 为 5.1.71首次查询show engines; 的时候 没有federated的。增加该引擎的支持有两种办法(我查到的) 第一种是安装时候tar包的时候./configure -prefix=/usr/local/mysql -without-debug -without-bench -enable-thread-safe-client -enable-assembler -enable-profiling -with-mysqld-ldflags=-all-static -with-client-ldflags=-all-static -with-charset=latin1 -with-extra-charset=utf8,gbk -with-innodb -with-csv-storage-engine -with-federated-storage-engine -with-mysqld-user=mysql -without-embedded-server -with-server-suffix=-community -with-unix-socket-path=/usr/local/mysql/sock/mysql.sock 红色的代码表示编译的时候支持rederated 引擎 第二种是在mysql安装完成之后 Mysql install plugin federated soname ha_federated.so; 执行该语句就会动态将federated引擎加入到mysql中。(网上有的说执行这个语句会报错, 可能是版本太低的原因), 我执行该语句 未报任何错误,成功安装该引擎。支持该引擎之后, 在linux下还需要做一步就是修改 my.conf文件 类似于windows下的my.ini文件。Vim /etc/f然后运行 show engines;下边开始实践:以我们的114库 为B库 建立test库 建立abc表CREATETABLEabc(idint(11)NOTNULLAUTO_INCREMENT,namevarchar(11)DEFAULTNULL,sexvarchar(22)DEFAULTNULL,birthdayvarchar(22)DEFAULTNULL,PRIMARYKEY(id)ENGINE=MyISAMAUTO_INCREMENT=15DEFAULTCHARSET=utf8数据执行插入。数据用户和用户权限略。做测试不限制了现在处理A库 我本地的mysql数据库创建表CREATE TABLE abc ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(11) DEFAULT NULL, sex VARCHAR(11), birthday VARCHAR(11), PRIMARY KEY (id) ENGINE=FEDERATED AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 CONNECTION = mysql:/用户名:密码114.*.*.*:3306【端口】/test【库名】/abc【表名】;注意:1、connection串的正确性。 2、A库创建的表名可以与B库不一样 3、A库的表字段应该是B库的表字段的子集,如果A中表字段有B种不存在的字段,在查询等操作时候会报错。 4、字段不一致的情况, (1)如果A中新建的字段类型由varchar int 则查询时候 如B库中是字符串, 在A中的查询结果会变成0, 是数字的则不便。 (2)如果B中字段长度为4, A中字段长度为2 , 此时B中如果存储了“1234”, 则在A中查询出来会是“12” 所以推断为:查询时候B库的数据类型 会向A中兼容! 为验证的:从A中进行新增,或者修改数据时候,B中会如何处理(设计类型不一致的情况)。 不过一般情况下 B库只会给A库只读的权限。OK 到这里我们已经实现了我们想要的功能,怎么觉着比oracle的dblink 简单呢?记录几个简单的sql命令:show engines; 显示引擎 rootrzcx etc# ps -ef|grep mysqlroot 28180 1 0 15:08 pts/0 00:00:00 /bin/sh /usr/bin/mysqld_safe -datadir=/var/lib/mysql -socket=/var/lib/mysql/mysql.sock -pid-file=/var/run/mysqld/mysqld.pid -basedir=/usr -user=mysqlmysql 28285 28180 0 15:08 pts/0 00:00:10 /usr/libexec/mysqld -basedir=/usr -datadir=/var/lib/mysql -user=mysql -log-error=/var/log/mysqld.log -pid-file=/var/run/mysqld/mysqld.pid -socket=/var/lib/mysql/mysql.sockroot 30312 27726 0 16:50 pts/0 00:00:00 grep mysqlservice mysqld restart (start, stop) 注意是mysqld 不是mysqlld 我总以为是mysqlld 多了个l 纠结很久.rootrzcx etc# chkconfig -list mysqldmysqld 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭rootrzcx etc# whereis mysqlmysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz查看MYSQL数据库中所有用户mysql SELECT DISTINCT CONCAT(User: ,user,host,;) AS query FROM mysql.user;查看数据库中具体某个用户的权限show grants for cactiuser%;查看user表结构需要具体的项可结合表结构来查询mysql desc mysql.user;查询my

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论