腾讯云云数据库PostgreSQL完全对接指南:从开通到生产级应用

apphuang2026年07月14日 10:05:593

1. 云数据库PostgreSQL概述

腾讯云云数据库PostgreSQL(TencentDB for PostgreSQL)是腾讯云基于开源PostgreSQL打造的企业级关系型数据库服务。它具备自动备份、监控告警、弹性扩容、只读实例、安全组隔离等全套能力,让开发者无需关心底层运维,即可享受高性能、高可用的数据库服务。

PostgreSQL作为世界上最先进的开源关系型数据库之一,以其强大的ACID事务支持、丰富的数据类型与扩展能力、强大的索引功能以及高度可扩展性而闻名。腾讯云在此基础上进行了深度优化,提供了双机高可用架构、自动故障切换、定期备份等企业级特性。

需要先登录腾讯云控制台,点击:腾讯云控制台,还没有账号,点击:注册后再关联,已有账号点击:登录后再关联

2. 创建PostgreSQL实例

2.1 实例创建流程

在使用云数据库PostgreSQL之前,首先需要完成实例的创建。登录腾讯云控制台后,在数据库分类下找到云数据库PostgreSQL,点击创建实例。

创建过程中需要配置以下关键参数:

  • 数据库版本:目前支持PostgreSQL 10到17等多个大版本。建议选择较新版本以获得更好的性能和更多特性支持,腾讯云已于2025年全面支持PostgreSQL 17.0。
  • 地域与可用区:选择与业务服务器相同的地域,以降低网络延迟。
  • 实例规格:包括CPU与内存配置。腾讯云提供从1核2GB到90核720GB的多种规格选择。通用型规格覆盖1core 2GiB到90core 720GiB,磁盘容量支持10GB至8000GB。
  • 存储空间:根据业务数据量预估选择合适的存储大小,注意当实例实际使用容量超出已购买容量时,实例将被自动锁定,只能进行读操作无法写入。
  • 网络类型:建议选择私有网络VPC,将数据库部署在与业务服务器相同的VPC内。

2.2 计费模式选择

腾讯云PostgreSQL支持按量计费和包年包月两种计费模式。按量计费适合短期测试或业务波动较大的场景,包年包月适合长期稳定运行的生产环境,价格更具优势。

3. 网络连接配置

腾讯云PostgreSQL提供两种连接方式:内网连接和外网连接。

3.1 内网连接(推荐)

内网连接是指通过同一VPC内的云服务器CVM访问数据库的内网地址。这种方式的优势在于:

  • 使用内网高速网络,延迟极低(通常在1ms以内)
  • 数据传输不走公网,安全性更高
  • 不产生额外的外网流量费用

建议将CVM和数据库部署在同一账号、同一地域、同一VPC内。如果CVM和数据库处于不同的VPC下,可以通过对等连接或云联网实现内网互通。

创建完成后,系统会自动分配一个内网地址(VIP)和端口(默认为5432)。该VIP通过接入网关集群统一访问数据库实例,即使发生主机故障或主备切换,内网IP也不会发生变化。

3.2 外网连接

外网连接适用于开发测试或辅助管理场景,不推荐用于正式业务访问。开启外网地址后,数据库服务将暴露在公网上,存在被攻击的风险。

目前仅广州、上海、北京、成都、中国香港、硅谷等地域支持开启外网访问。开启方式为:在实例详情页的基本信息区域,单击外网IPv4地址后的开启按钮。开启外网后,必须配置安全组规则才能正常访问。

需要注意的是,外网访问不纳入SLA可用性保障,且外网IP可能因规格调整或网络升级而发生变化,建议使用外网域名而非IP进行访问。

4. 客户端连接方式

4.1 使用psql命令行工具(Linux)

psql是PostgreSQL官方自带的命令行客户端,是在Linux环境下最常用的连接方式。

首先需要在Linux云服务器上安装PostgreSQL客户端:

yum install -y postgresql.x86_64

安装完成后,执行以下命令连接数据库:

psql -U 用户名 -h 访问地址 -p 端口 -d postgres

参数说明:

  • -U:数据库用户名,使用初始化实例时设置的管理员用户名
  • -h:访问地址,内网连接使用内网地址,外网连接使用外网地址
  • -p:端口号,默认为5432
  • -d:数据库名称,postgres为默认数据库

如果是在与数据库同VPC的CVM中,访问地址可直接使用数据库内网地址进行访问。

4.2 使用pgAdmin图形化工具(Windows)

pgAdmin是PostgreSQL官方推荐的图形化管理工具。连接步骤如下:

  1. 下载并安装pgAdmin客户端
  2. 在pgAdmin上方选择Object > Create > Server
  3. 在对话框中填写名称、主机IP地址、端口号、用户名和密码
  4. 单击Save完成连接

主机IP地址和端口号可在PostgreSQL控制台实例详情页中的内网地址或外网地址查看。用户名和密码使用初始化实例时设置的数据库管理员账号与密码,如忘记密码可在控制台的账号管理页重置。

4.3 使用DMC数据库管理工具

DMC(Database Management Center)是腾讯云提供的一款数据库管理工具,集库表级操作、实时监控、实例会话管理、SQL窗口、数据管理于一体。DMC的最大优势在于无需安装任何客户端软件,直接在浏览器中即可完成数据库的全生命周期管理,且目前免费使用。

使用DMC连接数据库的步骤:在腾讯云控制台找到目标实例,在登录实例页面选择DMC方式登录。

5. 数据迁移与同步

5.1 使用DTS数据传输服务

除了使用传统的pg_dump和pg_restore方法进行数据导入导出之外,腾讯云数据库提供了数据传输服务DTS以支持数据迁移上云以及云上实例数据迁移的功能。

DTS支持以下迁移场景:

  • 云下自建PostgreSQL迁移至腾讯云数据库
  • 其他云厂商的PostgreSQL数据库迁移至腾讯云数据库
  • 云上CVM或容器等自建的PostgreSQL迁移至腾讯云数据库
  • 腾讯云数据库PostgreSQL之间的迁移
  • 跨账号数据库迁移
  • TDSQL-C PostgreSQL版与云数据库PostgreSQL数据互相迁移

DTS支持PostgreSQL 10及之后的所有版本互相跨版本迁移,如PostgreSQL 10迁移至PostgreSQL 12,PostgreSQL 14迁移至PostgreSQL 11。PostgreSQL 9.4、9.5、9.6版本可通过源端安装插件的形式支持作为源数据库进行全量+增量迁移。

5.2 DTS迁移注意事项

在执行数据迁移时,需要注意以下事项:

  • DTS在执行全量数据迁移时会占用一定源端实例资源,可能导致源实例负载上升
  • 建议在业务低峰期进行迁移
  • 迁移速率受源端读取性能、网络带宽、目标端规格性能等因素影响
  • 迁移并发度由目标端实例规格的核心数决定
  • 相互关联的数据对象需要同时迁移,否则会导致迁移失败
  • CVM自建实例迁移不支持跨地域迁移
  • 迁移类型选择全量+增量迁移时,源数据库中的表必须有主键
  • 增量迁移时源库wal_level参数值必须为logical
  • 目标库的可用空间须是源库待迁移实例的1.2倍以上

5.3 使用pg_dump和pg_restore

对于小规模数据或不需要增量同步的场景,可以使用PostgreSQL自带的pg_dump和pg_restore工具进行数据导入导出。

导出数据:

pg_dump -h 源数据库地址 -p 端口 -U 用户名 -d 数据库名 > backup.sql

导入数据:

psql -h 目标数据库地址 -p 端口 -U 用户名 -d 数据库名 < backup.sql

6. 高可用与读写分离

6.1 主实例与高可用架构

云数据库PostgreSQL默认支持双机高可用一主一从架构。主实例是可读可写的实例,采用高可用版架构。当主实例发生故障时,系统会自动切换到备实例,保证服务的连续性。

6.2 只读实例

只读实例是仅提供读功能的实例,采用单节点只读架构。只读实例无法单独存在,必须隶属于某个主实例,唯一数据来源是从主实例同步数据。只读实例只能与主实例同地域。

默认允许单主实例创建6个只读实例,如需创建超过此数量的只读实例,可通过在线支持申请。

主实例可挂载只读实例,实现读写分离的功能。读写分离可以将读请求分流到只读实例,减轻主实例的读压力,提升整体性能。

6.3 只读实例组

只读实例无高可用能力,建议使用只读实例组。只读组中只有一个只读实例的情况会存在单点风险,且此只读组不会计入云数据库PostgreSQL服务的整体可用性计算中。单个只读实例不提供可用性SLA保证,建议只读组中至少选购2个只读实例,来保证只读组的可用性。

7. 监控与告警

7.1 核心监控指标

腾讯云PostgreSQL提供丰富的监控指标,包括:

  • CPU利用率
  • 内存使用率
  • 磁盘使用率
  • QPS/TPS
  • 连接数
  • 慢查询数量

这些指标可在实例管理页面的实例监控模块查看。

7.2 进程监控视图

腾讯云PostgreSQL提供业界领先的数据库进程监控视图tencentdb_process_system_usage,应用可实时检测多租户进程的CPU和内存使用详情,从而判断租户当前的健康度等情况。

7.3 告警配置

可以针对关键指标配置告警策略,当指标超过阈值时通过短信、邮件等方式通知运维人员。建议对CPU利用率、内存使用率、磁盘使用率、连接数等核心指标配置告警,特别是磁盘使用率,避免因磁盘满导致数据库被锁定。

8. 性能调优

8.1 pg_stat_statements插件

pg_stat_statements模块提供一种方法追踪一个服务器所执行的所有SQL语句的执行统计信息。该模块必须通过在postgresql.conf的shared_preload_libraries中增加pg_stat_statements来载入,因为它需要额外的共享内存。增加或移除该模块需要服务器重启才能生效。

开启pg_stat_statements后,可以通过查询pg_stat_statements视图获取SQL执行次数、执行时间、返回行数等统计信息。这对于定位慢查询和优化数据库性能非常有帮助。

安装pg_stat_statements插件:

CREATE EXTENSION pg_stat_statements;

8.2 SQL限流

当多租户中某些场景占用资源过多需要限制时,可以使用SQL限流能力,可基于SQL语句或者queryid去限制SQL的实时并发。获取SQL语句的query_id可通过查询pg_stat_statements或pg_stat_activity得到。

查看当前活跃查询的query_id示例:

SELECT datname, usename, client_addr, state, query_id, query 
FROM pg_stat_activity 
WHERE usename='dbadmin' 
LIMIT 10;

8.3 数据库资源隔离

在多租户共享资源的场景中,腾讯云PostgreSQL提供database资源隔离能力,可以精确地控制租户使用的CPU资源。如需开启database资源隔离模式,可提交工单联系腾讯云开启tencentdb_serverless插件并设置相关参数。

9. 安全管理

9.1 安全组配置

安全组用于配置IP白名单,控制哪些IP地址可以访问数据库实例。开启外网访问后,必须配置安全组规则才能正常访问。

配置安全组时,建议遵循最小权限原则,只开放业务必需的IP地址和端口。

9.2 账号权限管理

云数据库PostgreSQL支持通过控制台的账号管理功能进行用户管理和权限分配。可以创建不同权限级别的数据库账号,分配给不同的应用程序或开发人员使用。

9.3 备份与恢复

云数据库PostgreSQL默认支持自动备份和手动备份。自动备份包括全量备份和增量备份,支持按时间点恢复(PITR)。当数据出现严重问题时,能快速恢复到某个正常时间点。

备份功能可通过控制台的备份恢复模块进行管理。

9.4 审计功能

腾讯云PostgreSQL同时支持极速版和精细版两种审计模式。极速版能满足一般审计需求,而精细版使用pgaudit插件并加以优化,增加了执行函数内容、对象类型、对象名的审计。

10. 高级特性

10.1 冷热数据分离

腾讯云PostgreSQL提供两种冷热数据分离方案:

  • cos_fdw插件:用户无需关心不同存储介质的访问形式,通过cos_fdw插件就可以将COS中的数据加载到PostgreSQL数据库表中,像访问普通表一样访问COS中的数据,实现冷热存储分离。
  • starocks_fdw插件:引入StarRocks的分析能力,冷数据可以存储在StarRocks本地或者对象存储上,轻松实现TP和AP的连接。

10.2 跨库访问

云数据库PostgreSQL支持跨库访问功能。使用步骤如下:

  1. 使用CREATE EXTENSION语句安装所需插件
  2. 为每个需要连接的远程数据库创建外部服务器对象并创建链接映射
  3. 使用对应命令访问外部表以获取数据

10.3 AI能力集成

腾讯云PostgreSQL(PostgreSQL 17版本)支持AI相关功能,可通过tencentdb_ai插件在SQL内直接对慢查询进行AI分析。云数据库PostgreSQL可与CloudBase深度集成,实现前端直连、云函数、AI能力的全栈应用开发。

11. 多语言编程连接示例

11.1 Python连接示例(psycopg2)

psycopg2是Python中最成熟的PostgreSQL适配器,提供了高性能和稳定的连接,支持事务处理和高级功能。

import psycopg2

# 连接配置
conn = psycopg2.connect(
    host='内网地址或外网地址',
    port=5432,
    database='数据库名',
    user='用户名',
    password='密码'
)

# 创建游标
cur = conn.cursor()

# 执行查询
cur.execute('SELECT version()')
version = cur.fetchone()
print(f'PostgreSQL版本: {version[0]}')

# 关闭连接
cur.close()
conn.close()

11.2 Java连接示例(JDBC)

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class PostgreSQLConnection {
    public static void main(String[] args) {
        String url = "jdbc:postgresql://内网地址:5432/数据库名";
        String user = "用户名";
        String password = "密码";
        
        try (Connection conn = DriverManager.getConnection(url, user, password);
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT version()")) {
            
            if (rs.next()) {
                System.out.println("PostgreSQL版本: " + rs.getString(1));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

11.3 Node.js连接示例(pg模块)

const { Client } = require('pg');

const client = new Client({
    host: '内网地址或外网地址',
    port: 5432,
    database: '数据库名',
    user: '用户名',
    password: '密码'
});

client.connect()
    .then(() => client.query('SELECT version()'))
    .then(res => {
        console.log('PostgreSQL版本:', res.rows[0].version);
    })
    .catch(err => console.error('连接错误:', err))
    .finally(() => client.end());

12. 常见问题与解答

Q1: 云数据库PostgreSQL支持哪些版本?

腾讯云云数据库PostgreSQL目前支持PostgreSQL 10到17等多个大版本。用户可在创建实例时选择所需的版本,也支持使用大版本升级能力升级至最新的PostgreSQL 17.0。

Q2: 内网连接和外网连接有什么区别?

内网连接通过同一VPC内的内网地址访问,延迟低(通常在1ms以内)、安全性高、不产生外网流量费用。外网连接通过公网地址访问,存在安全风险且不纳入SLA保障。生产环境强烈推荐使用内网连接。

Q3: 如何实现读写分离?

通过为主实例创建只读实例来实现读写分离。主实例处理写请求,只读实例处理读请求。默认允许单主实例创建6个只读实例。建议至少创建2个只读实例组成只读组以保证可用性。

Q4: DTS数据迁移时有哪些注意事项?

主要注意事项包括:在业务低峰期进行迁移;全量+增量迁移时源表必须有主键;增量迁移时源库wal_level必须为logical;目标库空间须为源库的1.2倍以上;CVM自建实例不支持跨地域迁移。

Q5: 如何监控和优化数据库性能?

可通过控制台监控面板查看CPU、内存、磁盘、连接数等核心指标。开启pg_stat_statements插件追踪SQL执行统计信息。使用tencentdb_process_system_usage监控进程资源使用。针对慢查询配置SQL限流规则。

Q6: 数据库磁盘满了怎么办?

当实例实际使用容量超出已购买容量时,实例将被自动锁定,只能进行读操作无法写入。解决方法包括:扩容存储空间、清理过期数据、将冷数据迁移至COS等对象存储。建议提前配置磁盘使用率告警,防患于未然。

相关文章

腾讯云服务器购买优惠!3 个省钱攻略 + 1 个安全真相,新手必看!

腾讯云服务器购买优惠!3 个省钱攻略 + 1 个安全真相,新手必看!

最近后台总收到小伙伴私信:“腾讯云服务器看着挺好,但价格有点顶,学生党 / 小团队实在买不起咋办?” 别急!今天就来手把手教你 “花小钱办大事”,不光有省钱攻略,还会扒一扒大家最关心的安全问题,看完这…

After 10 Years as a Tencent Cloud Agent, Let Me Talk About Rebates

After 10 Years as a Tencent Cloud Agent, Let Me Talk About Rebates

Lately, I’ve been getting a lot of questions from friends: “Does Tencent offer rebates? Can you…

2026腾讯云代理商返利政策深度解析:头部代理合作指南与成本优化策略

2026腾讯云代理商返利政策深度解析:头部代理合作指南与成本优化策略

一、腾讯云代理商返利机制核心逻辑1. 行业背景与代理模式腾讯云作为国内公有云市场的第二大领导者(据IDC 2025年数据,占据国内27.6%的市场份额),采用渠道商代理模式拓展市场。代理商负…

2026腾讯云代理商返利政策深度解析:头部代理合作指南与成本优化策略

2026腾讯云代理商返利政策深度解析:头部代理合作指南与成本优化策略

一、腾讯云代理商返利机制核心逻辑1. 行业背景与代理模式腾讯云作为国内公有云市场的第二大领导者(据IDC 2025年数据,占据国内27.6%的市场份额),采用渠道商代理模式拓展市场。代理商负…

2026腾讯云代理商返佣政策全解析:五级代理体系与企业上云成本优化指南

2026腾讯云代理商返佣政策全解析:五级代理体系与企业上云成本优化指南

一、腾讯云五级代理体系:权益阶梯与合作价值1. 五级代理的核心权益差异腾讯云按规模、服务能力与合作深度,构建了从基础到顶级的五级代理体系,各级权益呈现显著阶梯差:•标准级代理:入门门槛最低,仅能提供基…

2026年腾讯云代理深度解析:从折扣体系到最优合作策略

2026年腾讯云代理深度解析:从折扣体系到最优合作策略

上海汪远信息科技有限公司作为腾讯云全国级殿堂级代理,凭借13年云服务经验与深厚的官方合作关系,为企业提供全方位的上云支持,可百度:上海汪远信息科技有限公司,微信:791201210一、腾讯云代理体系全…