【Linux环境】PostgreSQL环境准备

  • Last update: November 09, 2023
  • 1. 概述

    FDL 工程部署在 Linux 环境中,通过数据管道实时同步 PostgreSQL 数据前,需要参考本文在数据源中进行一些配置,为后续的数据同步做好准备。

    注1:FDL 工程部署在 Windows 环境中,实时同步 PostgreSQL 数据前,环境准备步骤请参见:【Windows环境】PostgreSQL环境准备

    注2:CDC原理和支持说明请参见:CDC原理和支持

    2. 操作步骤

    注:当前不支持同步视图。

    2.1 确认当前使用的数据库版本

    确认是否为数据管道同步任务所支持的版本。

    当前仅支持 PostgreSQL 9.4 及以上的单实例非只读数据库。支持情况详情参见:数据管道概述

    2.2 修改REPLICA IDENTITY

    该属性决定了当数据发生UPDATE,DELETE时,日志记录的字段

    • DEFAULT - 更新和删除将包含primary key列的现前值

    • NOTHING - 更新和删除将不包含任何先前值

    • FULL - 更新和删除将包含所有列的先前值

    • INDEX index name - 更新和删除事件将包含名为index name的索引定义中包含的列的先前值 如果有多表合并同步的场景,则Tapdata需要调整该属性为FULL 示例

    修改代码如下:

    注:所有需要进行实时同步的表,都应该做此操作。

    alter table schema.tablename REPLICA IDENTITY FULL;

    1)使用默认的 postgres 账号登录名为 fdl 的数据库:-U指定用户,-d指定数据库,-h指定服务器,-p指定端口。

    psql -U postgres -d fdl -h 192.168.101.119 -p 5432

    输入密码后,登陆数据库。

    1699411243438562.png

    2)例如将模式为 public 的表「产品名称维度」修改设置,则输入如下语句:

    1699424098958429.png

    2.3 安装 wal2json 

    2.3.1 PostgreSQL 11 及以上版本

    1)更新镜像库文件,刷新可安装的 wal2json 列表。

    sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-6-x86_64/pgdg-redhat-repo-latest.noarch.rpm

    2)使用yum list wal2json*语句,列出可安装的 wal2json 。如下图所示:

    21.png

    3)根据 PostgreSQL 数据库版本和 Linux 内核版本选择 wal2json 。

    使用rpm -qa | grep postgresql语句查看安装的数据库版本;cat /proc/version语句查看Linux内核版本。如下图所示:

    24.png

    所以本文示例选择 wal2json_12.x86_64 版本,安装语句为:yum install wal2json_12.x86_64

    4)安装完成后,使用yum list wal2json*语句,可查看已安装的 wal2json 。如下图所示:

    22.png

    2.3.2 PostgreSQL 9.5 及以上,11 以下版本

    1)低版本数据库需要额外配置镜像地址,以 PosgreSQL 9.6 为例:

    cd /etc/yum.repos.d

    vi pgdg-96.repo

    文件中写入:

    [pgdg90]
    name=PostgreSQL 9.6 RPMs for RHEL/Centos 7
    baseurl=https://yum-archive.postgresql.org/9.6/redhat/rhel-7-x86_64
    enabled=1
    gpgcheck=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG

    1699509446701108.png

    保存并退出。

    2)使用yum list wal2json*语句,列出可安装的 wal2json 。如下图所示:

    33.png

    3)根据 PostgreSQL 数据库版本和 Linux 内核版本选择 wal2json 。

    登陆 PostgreSQL 数据库,使用SELECT version();语句查看数据库版本;退出数据库后,使用cat /proc/version语句查看Linux内核版本。如下图所示:

    35.png

    所以本文示例选择 wal2json96.x86_64 版本,安装语句为:yum install wal2json96.x86_64

    4)安装完成后,使用yum list wal2json*语句,可查看已安装的 wal2json 。如下图所示:

    36.png

    2.4 修改配置文件

    进入 PosgreSQL 安装目录下的 data 文件夹,进入 data 文件夹中,找到 postgresql.conf、pg_hba.conf,对这两个文件进行修改。

    1)修改 PosgreSQL 复制槽设置。

    本文示例中,postgresql.conf 文件在/var/lib/pgsql/12/data目录下,使用vi /var/lib/pgsql/12/data/postgresql.conf(用户根据实际情况修改 postgresql.conf 所在路径)语句编辑该文件,在文件末尾追加以下配置:

    注:或者找到下面代码中的设置项,取消注释,修改对应的值。

    shared_preload_libraries = 'wal2json'
    wal_level = logical
    max_wal_senders = 10
    max_replication_slots = 10

    2)设置用户 replication 权限。

    本文示例中,pg_hba.conf 文件在/var/lib/pgsql/12/data目录下,使用vi /var/lib/pgsql/12/data/pg_hba.conf(用户根据实际情况修改 pg_hba.conf 所在路径)语句编辑该文件,把下图中红圈中的两行前边的 # 去掉:

    1699526112746525.png

    2.5 重启数据库

    用户根据实际情况修改语句:

    systemctl restart postgresql-12

    2.6 用户权限确认

    以上都是用默认的用户 Postgres 进行,若用其他用户进行配置,则需要该用户为 PostgreSQL replication 角色、PostgreSQL login 角色,并且有需要同步的表的 select / update 权限。

    1)创建一个具有用户,该用户为 PostgreSQL replication 角色、PostgreSQL login 角色。

    注:wendy 为用户名,123456 为密码,用户自定义即可。

    CREATE USER wendy WITH REPLICATION LOGIN PASSWORD '123456';

    1699424170445315.png

    2)在指定模式中的所有表上执行 select 操作的权限赋给用户:

    注:schemaname 为模式名称,username为用户名称,用户根据需要修改。

    GRANT SELECT ON ALL TABLES IN SCHEMA schemaname TO username;

    1699424400185994.png

    update 权限同理。

    3)赋予用户 replication 和 login 权限命令。

    进入安装目录下的 data 文件夹,对配置文件 pg_hba.conf 检查,确保用户拥有这些权限。参考本文2.4节中「设置用户 replication 权限」步骤。

    2.7 检查权限是否可用

    输入以下命令,提示复制槽名 "slot_test" 已经存在

    select * from pg_create_logical_replication_slot('slot_test', 'wal2json');

    1699426578101008.png

    3. 后续步骤

    在配置好数据库后,即可完成数据源配置。

    需要在使用数据管道进行实时同步任务配置前,在 FineDataLink 中配置好需要同步的源端和目标端数据库数据连接,以便在同步任务配置过程中,通过选择数据源名称来控制同步任务,详情参见:配置数据连接

    然后设置数据管道任务即可,详情参见:配置数据管道任务




    附件列表


    主题: 数据管道
    Previous
    Next
    • Helpful
    • Not helpful
    • Only read

    滑鼠選中內容,快速回饋問題

    滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

    不再提示

    10s後關閉

    Get
    Help
    Online Support
    Professional technical support is provided to quickly help you solve problems.
    Online support is available from 9:00-12:00 and 13:30-17:30 on weekdays.
    Page Feedback
    You can provide suggestions and feedback for the current web page.
    Pre-Sales Consultation
    Business Consultation
    Business: international@fanruan.com
    Support: support@fanruan.com
    Page Feedback
    *Problem Type
    Cannot be empty
    Problem Description
    0/1000
    Cannot be empty

    Submitted successfully

    Network busy