PostgreSQL使用MySQL外表(mysql_fdw)
postgres使用mysql外表
浅谈
postgres
不知不觉已经升到了版本13,记得两年前还是版本10,当然这中间一直期望着哪天能在项目中使用postgresql,现在已实现哈~;
顺带说一下:使用postgresql
的原因是它的生态完整,还有一个很重要的点儿是 速度快
这个在第10版的时 这么说也许还为时过早,
但是在13这一版本下一点儿也不为过,真的太快了,我简单的用500w的数据做聚合,在不建立索引(主键除外)的情况下 执行一个聚合操作,postgres
的速度是mysql
的8倍,真的太快了~;好了,这一章节我就聊一聊我实际碰到的问题,就是:跨库查询,这里是用mysql_fdw实现的。
环境准备
一个
mysql
实例(5.7或8均可)一个
postgres
实例(这里使用源码编译安装的13,建议13,11或12也可)一台linux(以下内容使用的是
centos
,其它系统也可参考哈)以下内容仅仅为安装及使用mysql_fdw的教程,具体mysql及postgres怎么安装我就一并略去
准备libmysqlclient
注意:若mysql与postgresql在同一台linux机上,则无需安装mysql工具,请略过本段
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar.xz
tar -xvJf mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar.xz
chown -R mysql:mysql /usr/local/mysql/
cd mysql-8.0.22-linux-glibc2.17-x86_64-minimal
cp -r ./* /usr/local/mysql/
配置环境变量
配置文件
vi /etc/profile
添加mysql环境变量
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:/usr/local/mysql/bin
export LD_LIBRARY_PATH=MYSQL_HOME/lib:$LD_LIBRARY_PATH
添加postgres环境变量
export PG_HOME=/usr/local/pgsql
export LD_LIBRARY_PATH=$PG_HOME/lib:$MYSQL_HOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib
export PATH=$PG_HOME/bin:$MYSQL_HOME/bin:$PATH:.
刷新配置
source /etc/profile
下载并编译mysql_fdw
解压
tar -xzvf REL-2_5_5.tar.gz
进入
cd mysql_fdw-REL-2_5_5
编译
make USE_PGXS=1
安装
make USE_PGXS=1 install
重启postgres
安装mysql_fdw 并 配置完成环境变量必须重启postgresql,这个很重要
su postgres
/usr/local/pgsql/bin/pg_ctl -D /mnt/postgres/data -l logfile stop
/usr/local/pgsql/bin/pg_ctl -D /mnt/postgres/data -l logfile start
psql [ or /usr/local/pgsql/bin/psql]
登录到postgres并配置mysql_server
- 切换到指定数据库(很重要!!!):
\c YOUR_DB_NAME
CREATE EXTENSION mysql_fdw;
CREATE SERVER mysql_server FOREIGN DATA WRAPPER mysql_fdw OPTIONS (host 'HOST', port '3306');
CREATE USER MAPPING FOR YOUR_DB_NAME SERVER mysql_server OPTIONS (username 'USERNAME', password 'PASSWORD');
GRANT USAGE ON FOREIGN SERVER mysql_server TO YOUR_DB_NAME;
GRANT ALL PRIVILEGES ON ods_tianmao_transaction TO YOUR_DB_NAME;
创建外表
创建的外表必须在mysql中有对应的表,否则无法使用(也不会在DB工具中显示)
样例
CREATE FOREIGN TABLE YOUR_TABLE_NAME(
id numeric(22),
date date ,
name varchar(50),
create_time timestamp
)SERVER mysql_server OPTIONS (dbname 'YOUR_DB_NAME', table_name 'MYSQL_TABLE_NAME');
删除操作
删除扩展
DROP EXTENSION mysql_fdw CASCADE;
删除mysql_server
DROP SERVER [mysql_server] CASCADE;
删除外表
DROP FOREIGN TABLE [YOUR_FOREIGN_TABLE_NAME] CASCADE;
修改user mapping
ALTER USER MAPPING FOR YOUR_DB_USER SERVER mysql_server OPTIONS (SET password 'PASSWORD');
ALTER USER MAPPING FOR YOUR_DB_USER SERVER mysql_server OPTIONS (SET username 'USERNAME');
最后
想说的是postgresql的外表功能实在是太好用了,建立mysql外表后可直接在posgresql中执行增删改查等操作
更强大的是 还可以执行与postgresql表的连表查询,真香~,省去了应用配置数据源的麻烦。
PostgreSQL使用MySQL外表(mysql_fdw)的更多相关文章
- 利用Navicat高效率postgresql转mysql数据库
本人很喜欢postgresql数据库,也一直认为postgresql比mysql要更好更强大. 可生态环境太差了,无奈,最近要把一个小站转成mysql数据库. 小站主要表数据110万,pg_dump备 ...
- [评测]低配环境下,PostgresQL和Mysql读写性能简单对比(欢迎大家提出Mysql优化意见)
[评测]低配环境下,PostgresQL和Mysql读写性能简单对比 原文链接:https://www.cnblogs.com/blog5277/p/10658426.html 原文作者:博客园--曲 ...
- PostgreSQL与MySQL常用命令比较[转]
PostgreSQL与MySQL常用命令比较 原文链接: http://www.phpwell.com/?p=174 PostgreSQL MySQL 服务启动:1)#service postgres ...
- 【转】PostgreSQL与MySQL比较
转自:https://www.cnblogs.com/geekmao/p/8541817.html PostgreSQL与MySQL比较 特性 MySQL PostgreSQL 实例 通过执行 M ...
- [转帖]PostgreSQL与MySQL比较 From 2010年
PostgreSQL与MySQL比较 [复制链接] http://bbs.chinaunix.net/thread-1688208-1-1.html osdba 稍有积蓄 好友 博客 消息 论坛徽章 ...
- PostgreSQL 优势,MySQL 数据库自身的特性并不十分丰富,触发器和存储过程的支持较弱,Greenplum、AWS 的 Redshift 等都是基于 PostgreSQL 开发的
PostgreSQL 优势 2016-10-20 21:36 686人阅读 评论(0) 收藏 举报 分类: MYSQL数据库(5) PostgreSQL 是一个自由的对象-关系数据库服务器(数据库 ...
- postgresql 和 mysql 数据库备份恢复以及时区问题
概要 postgesql 12 备份/恢复脚本 时区设置 mysql 5.6 备份/恢复脚本 时区设置 概要 postgresql 和 mysql 是最常用的 2 种开源关系数据库, 很多项目也会优先 ...
- PostgreSQL 和 MySQL 在用途、好处、特性和特点上的异同
PostgreSQL 和 MySQL 在用途.好处.特性和特点上的异同. PostgreSQL 和 MySQL 是将数据组织成表的关系数据库.这些表可以根据每个表共有的数据链接或关联.关系数据库使您的 ...
- Apache Doris ODBC Mysql外表在Ubuntu下使用方法及配置
Apache Doris 社区 2022 年的总体规划,包括待开展或已开展.以及已完成但需要持续优化的功能.文档.社区建设等多方面,我们期待有更多的小伙伴参与进来讨论.同时也希望多多关注Doris,给 ...
随机推荐
- 一千行MySQL命令
基本操作 /* Windows服务 */ -- 启动MySQL net start mysql -- 创建Windows服务 sc create mysql binPath= mysqld_bin_p ...
- Oracle函数使用1
一.字符串处理函数 1.ascii(x):返回字符的ASCII. SQL语句:select ascii('a') from dual; dual:空表,每创建一个用户都会生成这样一个dual表,表中只 ...
- 在CTF比赛中,命令中空格被过滤的解决方法
1.linux {cat,flag.txt} cat${IFS}flag.txt cat$IFS$9flag.txt cat<flag.txt cat<>flag.txt kg=$' ...
- python自带缓存lru_cache用法及扩展(详细)
本篇博客将结合python官方文档和源码详细讲述lru_cache缓存方法是怎么实现, 它与redis缓存的区别是什么, 在使用时碰上functiontools.wrap装饰器时会发生怎样的变化, ...
- Springcloud之gateway配置及swagger集成
前言 关于引入gateway的好处我网上找了下: 性能:API高可用,负载均衡,容错机制. 安全:权限身份认证.脱敏,流量清洗,后端签名(保证全链路可信调用),黑名单(非法调用的限制). 日志:日志记 ...
- Algorithm homework 1
一.已知下列递推式: \[C(n)= \begin{cases} 1 & , & n = 1 \\ 2C(n/2) + n - 1& , & n \geq 2 \end ...
- 移动端和PC端区分
1.移动端包括:浏览器.ios/android.qq端.微信端 九度数据官网源码.修改,要跳转的链接即可. function browserRedirect() { var sUserAgent = ...
- sql server如何把退款总金额拆分到尽量少的多个订单中
一.问题 原来有三个充值订单,现在要退款450元,如何分配才能让本次退款涉及的充值订单数量最少?具体数据参考下图: 二.解决方案 Step 1:对可退金额进行降序排列,以便优先使用可退金额比较大的订单 ...
- ab test压力测试
之前做性能调试的时候一直用的JMeter压测,最近发现一款简单易用的压力测试工具. ab(Apache benchmark)是一款常用的压力测试工具,是Apache附带的一个小工具 , 专门用于HTT ...
- SpringBoot基于JustAuth实现第三方授权登录
1. 简介 随着科技时代日渐繁荣,越来越多的应用融入我们的生活.不同的应用系统不同的用户密码,造成了极差的用户体验.要是能使用常见的应用账号实现全应用的认证登录,将会更加促进应用产品的推广,为生活 ...