Mysql 的 federate 引擎

federated 引擎主要应用于 数据库磁盘空间紧缺,或者IO比较大,需要分担一些表或库到其他mysql服务器上 的场景。

目标:让主库可以使用其他mysql主机上的数据文件,改善磁盘空间不足的问题
背景:2台机器
192.168.1.1(A主机)
192.168.1.2(B报表)
计划让 192.168.1.1 可以访问使用 192.168.1.2的数据资源,需要使用到 federated 引擎
先查看 A 是否有配置 federated 引擎:
Mysql > show engines;

如果没有federated 相关信息,需要将mysql重新编译一次:
tar zxvf mysql-5.5.3-m3.tar.gz
cd mysql-5.5.3-m3
./configure --prefix=/usr/local/webserver/mysql/ --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=partition,innobase,myisammrg --with-server-suffix=-max --with-innodb --with-bdb --with-federated-storage-engine
Make && make install
(配置说明:
1.要允许这个存储引擎,当你构建MySQL时请使用--with-federated-storage-engine来configure。
2.federated引擎需要 mysql服务器配置为 MySQL-Max服务器
MySQL-Max服务器配置要点:
--with-server-suffix=-max 该选项为mysqld版本字符串添加一个-max后缀
--with-innodb该选项启用InnoDB存储引擎支持。MySQL-Max服务器包括InnoDB支持。在MySQL 4.0及以上版本中,默认InnoDB包括在所有二进制分发版中,因此你不需要用MySQL-Max服务器只是用来获取InnoDB支持。)

Mysql 服务器配置完成,下面开始配置federated 表:
假设远程表为B机上的 DNBIZV2 库 BlockDayReport
CREATE TABLE federated_table (
id int(20) NOT NULL auto_increment,
name varchar(32) NOT NULL default '',
other int(20) NOT NULL default '0',
PRIMARY KEY (id),
KEY name (name),
KEY other_key (other)
)
ENGINE=FEDERATED
DEFAULT CHARSET=utf-8
CONNECTION='mysql://:3306/DNBIZV2/BlockDayReport';
这里有一些连接字符串的例子:
CONNECTION='mysql://username:password@hostname:port/database/tablename'
CONNECTION='mysql://username@hostname/database/tablename'
CONNECTION='mysql://username:password@hostname/database/tablename'
为指定连接字符串使用CONNECTION是非可选,并且在将来可能会改变。当你使用FEDERATED表的时候,要记得这个,因为这意味着当将来发生那种改变之时,可能被要求。

配置完成,可以进行数据的添、删、改、查操作。
需要注意的几点:
在第一个版本中,远程服务器必须是一个MySQL服务器。FEDERATED对其它数据库引擎的支持可能会在将来被添加。
FEDERATED表指向的远程表在你通过FEDERATED表访问它之前必须存在。
一个FEDERATED表指向另一个FEDERATED表是可能的,但是你必须小心不要创建一个循环。
没有对事务的支持。
如果远程表已经改变,对FEDERATED引擎而言是没有办法知道的。这个的原因是因为这个表必须象数据文件一样工作,除了数据库其它任何都不会被写入。如果有任何对远程数据库的改变,本地表中数据的完整性可能会被破坏。
FEDERATED存储引擎支持SELECT, INSERT, UPDATE, DELETE和索引。它不支持ALTER TABLE, DROP TABLE或任何其它的数据定义语言语句。当前的实现不使用预先准备好的语句。
执行使用SELECT, INSERT, UPDATE和DELETE,但不用HANDLER。
FEDERATED表不能对查询缓存不起作用。
这些限制中的一些在FEDERATED处理机的将来版本可能被消除。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值