Chinaunix首页 | 论坛 | 博客
  • 博客访问: 211033
  • 博文数量: 11
  • 博客积分: 258
  • 博客等级: 二等列兵
  • 技术积分: 145
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-26 19:41
文章分类

全部博文(11)

文章存档

2011年(11)

分类: LINUX

2011-12-12 17:36:01

FEDERATED存储引擎的功能与oracle的DBLINK基本类似,主要用来提供对远程mysql服务器上面的数据的访问接口,默认情况下面,mysql是不启用该存储引擎的,如下

  1. mysql> show engines;
  2. +------------+---------+----------------------------------------------------------------+--------------+------+------------+
  3. | Engine | Support | Comment | Transactions | XA | Savepoints |
  4. +------------+---------+----------------------------------------------------------------+--------------+------+------------+
  5. | InnoDB | YES | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
  6. | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
  7. | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
  8. | CSV | YES | CSV storage engine | NO | NO | NO |
  9. | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
  10. | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
  11. | ARCHIVE | YES | Archive storage engine | NO | NO | NO |
  12. | MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO |
  13. +------------+---------+----------------------------------------------------------------+--------------+------+------------+
  14. 8 rows in set (0.00 sec)
  15. 从上面可以看到FEDERATED的Support是NO,说明没有启用,如果没有的话说明没有编译进去,需要重新安装,要像启用的话使Support为YES,可以在/etc/my.cnf加federated(在mysqld加),然后重启就可以启用

配置很简单
1、在本地数据库上做如下操作

  1. CREATE TABLE `game_broker` (
  2.   `ID` int(11) NOT NULL AUTO_INCREMENT,
  3.  `brokerid` varchar(10) NOT NULL COMMENT '券商id',
  4. `broker_name` varchar(20) NOT NULL COMMENT '名称',
  5. `father_id` int(11) NOT NULL COMMENT '父ID',
  6. `path` varchar(20) NOT NULL COMMENT 'id路径',
  7. `remark` varchar(100) COMMENT '备注',
  8. PRIMARY KEY (`ID`)
  9. )
  10. ENGINE=FEDERATED CHARSET=utf8 CONNECTION='mysql://dasai_fed:dasai_fed@172.31.1.98:3306/mysql/game_broker';
2、在远程表上做操作
  1. CREATE TABLE `game_broker` (
  2.   `ID` int(11) NOT NULL AUTO_INCREMENT,
  3.  `brokerid` varchar(10) NOT NULL COMMENT '券商id',
  4. `broker_name` varchar(20) NOT NULL COMMENT '名称',
  5. `father_id` int(11) NOT NULL COMMENT '父ID',
  6. `path` varchar(20) NOT NULL COMMENT 'id路径',
  7. `remark` varchar(100) COMMENT '备注',
  8. PRIMARY KEY (`ID`)
  9. )
  10. EENGINE=InnoDB DEFAULT CHARSET=utf8;


3、在远程表所在的mysql数据库上添加一个账号
grant select on mysql.game_broker to dasai_fed@'172.31.1.106' identified by 'daisai_fed';

4、如何查看数据库上有哪些远程表
首先到远程数据库上执行
  1. use mysql;
  2. select * from user \G
看究竟有哪些账号是给远程表使用的(可以看出在哪台数据库上,是哪个库,哪个表,哪个账号)
然后到挂载数据库上执行
show create table twioo_users #用这个语句也查询出建表语句
这样就可以查看到数据库是哪个有哪些是远程表了
5、错误
错误一
在要挂载远程表上的数据库上用comment和connection同时使用,可能会出现如上的错误
错误二、
如果建表的时候报如上的错误,可能是你对自增字段设置了默认值,一般将默认值取消就可以了

6、参考
阅读(1982) | 评论(0) | 转发(0) |
0

上一篇:apache的ab命令做压力测试

下一篇:没有了

给主人留下些什么吧!~~