在工作中会遇到MySQL要跨服务器访问 , 下面就介绍mysql的FEDERATED引擎如何建立跨服务器访问
进入mysql命令行 , 没有看到Federated , 说明没有安装
mysql>show engines;
文章插图
安装Federated
mysql> install plugin federated soname 'ha_federated.so';
文章插图
查看有了Federated , 但是是NO , 说明没有开启
文章插图
vi /etc/my.cnf , 加入一行federated,保存并退出
文章插图
重启mysql服务
service mysqld restart
文章插图
再次查看 , 已经是yes了
文章插图
使用FEDERATED建表语句如下:
CREATE TABLE (......) ENGINE =FEDERATED CONNECTION='mysql://[name]:[pass]@[location]:[port]/[db-name]/[table-name]'
name--mysql用户名
pass--mysql密码
location--ip
port:端口号
db-name:数据库名
table-name:表名
PS:创建的表名和远程访问的表名可以不同 。
目前使用federated 最大的缺点:
1. select count(*), select * from limit M, N 等语句执行效率非常低 , 数据量较大时存在很严重的问题 , 但是按主键或索引列查询 , 则很快 , 如以下查询就非常慢(假设 id 为主索引)
select id from db.tablea where id >100 limit 10 ;
而以下查询就很快:
select id from db.tablea where id >100 and id<150
2. 如果虚拟虚拟表中字段未建立索引 , 而实体表中为此字段建立了索引 , 此种情况下 , 性能也相当差 。但是当给虚拟表建立索引后 , 性能恢复正常 。
3. 类似 where name like "str%" limit 1 的查询 , 即使在 name 列上创建了索引 , 也会导致查询过慢 , 是因为
federated引擎会将所有满足条件的记录读取到本 , 再进行 limit 处理 。
这几个问题已经严重影响了federated 在实际环境中的应用 , 所以这个引擎很冷门 , 不过在一些特定环境还是能用的 。
————————————————
【MySQL 跨服务器访问之-FEDERATED引擎】版权声明:本文为CSDN博主「纠结的逗号」的原创文章 , 遵循 CC 4.0 BY-SA 版权协议 , 转载请附上原文出处链接及本声明 。
原文链接:https://blog.csdn.net/commasx/article/details/87284878
推荐阅读
- 妹子在生产服务器执行了 rm -rf /*,还好有我帮她恢复了
- mysql搭建及主从同步+读写分离
- 在linux服务器上如何下载ftp上面的文件?解决各类问题!lftp详解
- 安利一款免费、开源、实时的服务器监控工具:Netdata
- 安溪,借鉴晋江经验推进科学发展 跨越发展
- XAMPP 搭建PHP+MySQL环境 在macOS下,怎样本地安装WordPress ?
- docker搭建自己的文件服务器
- 服务器需要开通哪些常用的端口?
- 如何彻底了解MySQL查询优化分析,看了这篇就够了
- 跨境电商物流操作流程 货代操作流程