PostgreSQL 跨数据库实例之间的数据访问

本文探讨了在PostgreSQL中如何实现跨数据库甚至跨实例的数据访问。通过介绍postgres_fdw和db_link,以及PostgreSQL 10版本的LSR功能,详细解释了在不同场景下访问关联数据的方法。示例展示了在同一个数据库集簇中创建扩展、服务、用户映射,以及建立外部表的过程,使得用户可以在本地查询远程数据库的数据。
摘要由CSDN通过智能技术生成

前言

PostgresSQL 作为单示例多数据库,通常一个数据库实例会包含多个表空间和数据库,一个表空间可以存放多个数据库,在此关系中,一个表空间可以包含多个数据库,但是一个数据库只能属于一个表空间,不能跨表空间存放。而表空间是一个逻辑概念,实质上在 PostgresSQL 中,一个表空间实际上就是一个可以供安装 PostgresSQL 用户读写的目录,所以,一个数据库集簇的最大大小取决于组成数据库的这些表空间所对应目录大小的总和大小。那么这些多个数据库组成的数据库集簇可以用来隔离不同业务的数据,同时,也方便管理数据的存储,但是,既然以数据库来区分不同业务的数据,如果在一个数据库集簇或者在属于不同实例的数据库集簇中,这些业务数据之间有可能有关联数据,那么此刻需要跨数据库或者跨数据库实例去访问,如何才能实现?实现的方法有哪些?

上面问题的解决方式有以下几种解决方案,分别是:

· 在同一个数据库集簇或者跨实例的数据库集簇中,可以通过 postgres_fdw 和 db_link 访问。

· 使用 10 版本提供的LSR可以对需要的数据同步到查询的数据库实例上,从而在本地查询。

postgres_fdw简介
简介

fdw(Foreign Data Wrapper),外部数据封装器,使用 postgres_fdw 可以访问外部 PostgreSQL 数据库服务器上的数据。postgres_fdw 专门为同构数据库实例提供的外部封装访问扩展应用。fdw使用步骤如下:

· 创建扩展

· 创建服务

· 创建用户映射

· 创建与访问表对应的外表

  1. 数据库 db1 db2

使用 postgres 用户创建两个数据库


[postgres@developer ~]$ psql -d postgres
    psql (13.4)
    Type "help" for help.

    postgres=# create database db1;
    CREATE DATABASE
    postgres=# create database db2;
    CREATE DATABASE
  1. 表对象存放于不同的数据库下

在两个数据库db1和db2中分别创建一张表


postgres
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值