• 售前

  • 售后

热门帖子
入门百科

PostgreSQL利用MySQL外表的步骤详解(mysql_fdw)

[复制链接]
沙漠里的鱼2017 显示全部楼层 发表于 2021-10-26 13:36:14 |阅读模式 打印 上一主题 下一主题
浅谈
  1. postgres
复制代码
不知不觉已经升到了版本13,记得两年前照旧版本10,固然这中间不停期望着哪天能在项目中利用postgresql,现在已实现哈~;
顺带说一下:利用
  1. postgresql
复制代码
的原因是它的生态完整,尚有一个很重要的点儿是
  1. 速度快
复制代码
这个在第10版的时 这么说大概还为时过早,
但是在13这一版本下一点儿也不为过,真的太快了,我简单的用500w的数据做聚合,在不创建索引(主键除外)的情况下 执行一个聚合操作,postgres
的速度是
  1. mysql
复制代码
的8倍,真的太快了~;好了,这一章节我就聊一聊我实际碰到的标题,就是:跨库查询,这里是用mysql_fdw实现的。
情况预备

      
  • 一个
    1. mysql
    复制代码
    实例(5.7或8均可)  
  • 一个
    1. postgres
    复制代码
    实例(这里利用源码编译安装的13,发起13,11或12也可)  
  • 一台linux(以下内容利用的是
    1. centos
    复制代码
    ,别的体系也可参考哈)
以下内容仅仅为安装及利用mysql_fdw的教程,详细mysql及postgres怎么安装我就一并略去
预备libmysqlclient

留意:若mysql与postgresql在同一台linux机上,则无需安装mysql工具,请略过本段
  1. wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar.xz
  2. tar -xvJf mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar.xz
  3. chown -R mysql:mysql /usr/local/mysql/
  4. cd mysql-8.0.22-linux-glibc2.17-x86_64-minimal
  5. cp -r ./* /usr/local/mysql/
复制代码
设置情况变量
设置文件
  1. vi /etc/profile
复制代码
添加mysql情况变量
  1. export MYSQL_HOME=/usr/local/mysql
  2. export PATH=$PATH:/usr/local/mysql/bin
  3. export LD_LIBRARY_PATH=MYSQL_HOME/lib:$LD_LIBRARY_PATH
复制代码
添加postgres情况变量
  1. export PG_HOME=/usr/local/pgsql
  2. export LD_LIBRARY_PATH=$PG_HOME/lib:$MYSQL_HOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib
  3. export PATH=$PG_HOME/bin:$MYSQL_HOME/bin:$PATH:.
复制代码
刷新设置
  1. source /etc/profile
复制代码
下载并编译mysql_fdw

下载地点:
https://github.com/EnterpriseDB/mysql_fdw/releases
解压
  1. tar -xzvf REL-2_5_5.tar.gz
复制代码
进入
  1. cd mysql_fdw-REL-2_5_5
复制代码
编译
  1. make USE_PGXS=1
复制代码
安装
  1. make USE_PGXS=1 install
复制代码
重启postgres

安装mysql_fdw 并 设置完成情况变量必须重启postgresql,这个很重要
  1. su postgres
  2. /usr/local/pgsql/bin/pg_ctl -D /mnt/postgres/data -l logfile stop
  3. /usr/local/pgsql/bin/pg_ctl -D /mnt/postgres/data -l logfile start
  4. psql [ or /usr/local/pgsql/bin/psql]
复制代码
登录到postgres并设置mysql_server
  1. \c YOUR_DB_NAME
  2. CREATE EXTENSION mysql_fdw;
  3. CREATE SERVER mysql_server FOREIGN DATA WRAPPER mysql_fdw OPTIONS (host 'HOST', port '3306');
  4. CREATE USER MAPPING FOR YOUR_DB_NAME SERVER mysql_server OPTIONS (username 'USERNAME', password 'PASSWORD');
  5. GRANT USAGE ON FOREIGN SERVER mysql_server TO YOUR_DB_NAME;
  6. GRANT ALL PRIVILEGES ON ods_tianmao_transaction TO YOUR_DB_NAME;
复制代码
创建外表

创建的外表必须在mysql中有对应的表,否则无法利用(也不会在DB工具中表现)
样例
  1. CREATE FOREIGN TABLE YOUR_TABLE_NAME(
  2. id numeric(22),
  3. date date ,
  4. name varchar(50),
  5. create_time timestamp
  6. )SERVER mysql_server OPTIONS (dbname 'YOUR_DB_NAME', table_name 'MYSQL_TABLE_NAME');
复制代码
删除操作
删除扩展
  1. DROP EXTENSION mysql_fdw CASCADE;
复制代码
删除mysql_server
  1. DROP SERVER [mysql_server] CASCADE;
复制代码
删除外表
  1. DROP FOREIGN TABLE [YOUR_FOREIGN_TABLE_NAME] CASCADE;
复制代码
修改user mapping
  1. ALTER USER MAPPING FOR YOUR_DB_USER SERVER mysql_server OPTIONS (SET password 'PASSWORD');
  2. ALTER USER MAPPING FOR YOUR_DB_USER SERVER mysql_server OPTIONS (SET username 'USERNAME');
复制代码
最后
想说的是postgresql的外表功能着实是太好用了,创建mysql外表后可直接在posgresql中执行增删改查等操作
更强盛的是 还可以执行与postgresql表的连表查询,真香~,省去了应用设置数据源的贫苦。
到此这篇关于PostgreSQL利用MySQL外表的步调详解(mysql_fdw)的文章就先容到这了,更多相干PostgreSQL利用MySQL外表内容请搜刮脚本之家以前的文章或继续欣赏下面的相干文章希望大家以后多多支持脚本之家!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作