3.1 pgAdmin 基本操作使用指南
3.1.1 连接云数据库 PostgreSQL
pgAdmin是一款设计、维护和管理PostgreSQL数据库的客户端管理软件,它允许您连 接到特定的数据库,创建表和运行各种从简单到复杂的SQL语句。它可支持
Windows、Linux、Mac OS X等不同的操作系统。该软件最新版本架构是基于浏览器 的BS架构。本文介绍的pgAdmin基于版本为pgAdmin4-4.17。
本文主要介绍利用pgAdmin连接华为云数据库PostgreSQL以及创建数据库和表基本操 作。
更多功能请参考pgAdmin官方文档。
操作步骤
步骤1 获取pgAdmin的安装包。
请访问pgAdmin官方网站,以pgAdmin4-4.17为例,下载Windows平台的pgAdmin安 装包。
步骤2 双击安装包,按照向导完成安装。
步骤3 安装完成后,启动pgAdmin客户端。
步骤4 请参见通过pgAdmin连接实例连接华为云数据。
前提条件
您已成功连接云数据库 PostgreSQL。
操作步骤
步骤1 在左侧结构树导航栏中,选择数据库实例节点,单击鼠标右键,在菜单中选择
“Create > Database”。
步骤2 在弹出框的“General”页签,输入“Database”,单击“Save”。
图3-1 创建数据库
前提条件
● 您已成功连接云数据库 PostgreSQL。
● 您需要在当前用户创建的库和schema下创建表。
操作步骤
步骤1 在左侧结构树导航栏中,选择目标表,单击鼠标右键,在菜单中选择“Create >
Table”。
步骤2 在弹出框的“General”页签,填写表的基本信息,单击“Save”。
图3-2 基本信息
步骤3 单击“Columns”页签,在“Columns”页签添加表列,单击“Save”。
----结束
3.1.4 使用 Query Tool 执行 SQL
操作场景
本章节将介绍如何使用Query Tool执行SQL命令。
前提条件
您已成功连接云数据库 PostgreSQL。
插入数据
步骤1 在顶部导航栏选择“Tools > Query Tool”,进入SQL命令执行界面,即可执行用户输 入的SQL语句。
步骤2 在SQL命令执行界面,输入INSERT命令后,单击“执行”即可在对应表中插入数据。
查询数据
步骤1 在顶部导航栏选择“Tools > Query Tool”,进入SQL命令执行界面,即可执行用户输 入的SQL语句。
步骤2 在SQL命令执行界面,输入SELECT命令后,单击“执行”即可查询对应表中的数据。
----结束
3.1.5 数据库监控
操作场景
本章节将介绍数据库监控。
前提条件
您已成功连接云数据库 PostgreSQL。
pgAdmin 监控
----结束
RDS 监控
云服务平台提供的云监控,可以对关系型数据库的运行状态进行日常监控。您可以通 过管理控制台,直观地查看关系型数据库的各项监控指标。详见查看云数据库 PostgreSQL监控指标。
3.1.6 备份恢复
操作场景
本章节将介绍备份恢复。
前提条件
您已成功连接云数据库 PostgreSQL。
pgAdmin 备份恢复
备份数据库
步骤1 在左侧结构树导航栏中,选择需要备份的数据库,单击右键选择“Backup”。
步骤2 在弹出框的“General”页签,填写基本信息,选择要备份的路径、备份的格式,并输 入备份文件的名称,单击“Backup”等待备份成功即可。
----结束 恢复数据库
步骤1 在左侧结构树导航栏中,选择需要恢复的数据库,单击右键选择“Restore”。
步骤2 在弹出框中选择备份好的文件,单击“Restore”进行恢复。
----结束
RDS 备份恢复
关系型数据库服务支持数据库实例的备份和恢复,以保证数据可靠性。详见云数据库 PostgreSQL的备份与恢复。
3.2 PoWA 插件使用
3.2.1 插件介绍
PoWA是一套开源的用于对PostgreSQL数据库进行性能监控的系统。它由PoWA-archivist、PoWA-collector、PoWA-web三个部件组成工作系统,并通过安装于 PostgreSQL数据库中的其他插件获取性能数据。重要组成如下所示:
● PoWA-archivist:作为PostgreSQL的一个插件,用于收集其他插件获取到的性能 数据。
● PoWA-collector:是通过部署于远程服务器上的专用于存储库收集目标 PostgreSQL数据库性能指标的守护进程。
● PoWA-web:通过Web图形用户界面展示PoWA-collector收集到的性能指标。
● 其他插件:性能指标数据的实际来源,安装于目标PostgreSQL数据库实例上。
● PoWA:整个系统的总称。
● 在PoWA-collector配置文件中,powa-repository的连接信息中无连接口令配置,
表示powa-repository对于PoWA-collector的连接配置项必须为trust,存在安全风 险。
● 在PoWA-web配置文件中,可选配置username、password对应powa-repository
(远程模式)或者数据库实例(本地模式)的root用户及连接口令,且以明文形
首先,至少需要激活pg_stat_statements插件,可能还有选择的其他支持的Stats 插 件。这些插件可能会减慢您的实例速度,具体取决于您配置它们的方式。
如果您不使用远程设置模式,数据将定期存储在本地。根据快照频率,开销可能很重 要。磁盘使用情况会影响备份功能。
3.2.2.1 数据库级性能指标 General Overview
图3-3 General Overview
表3-1 Calls 字段解释
字段 中文解释 英文解释
Queries per
sec 每秒执行查询的次
数。 Number of time the query has been executed,per second
Runtime per 每秒内执行查询的 Total duration of queries executed,per
表3-2 Blocks 字段解释
字段 中文解释 英文解释
Total shared
buffers hit 命中共享缓冲区的 数据量。
Amount of data found in shared buffers
Total shared
buffers miss 未命中共享缓冲区 的数据量。
Amount of data found in OS cache or read from disk。
Database Objects
图3-4 Database Objects
表3-3 Access pattern 字段解释
字段 中文解释 英文解释
Index scans
ratio 索引扫描/序列扫描的比
率。 Ratio of index scan / seq scan Index scans 每秒索引扫描次数。 Number of index scan per second Sequential
scans 每秒顺序扫描次数。 Number of sequential scan per second
表3-4 DML activity 字段解释
字段 中文解释 英文解释
Tuples inserted 每秒插入的行数。 Number of tuples inserted per second
表3-5 Vacuum activity 字段解释
字段 中文解释 英文解释
# Vacuum 每秒手动清理的 次数。
Number of vacuum per second
#Autovacuum 每秒自动清理的 次数。
Number of autovacuum per second
# Analyze 每秒手动分析的 次数。
Number of analyze per second
#Autoanalyze 每秒自动分析的
次数。 Number of autoanalyze per second
Details for all databases
图3-5 Details for all databases
表3-6 Details for all databases 字段解释
字段 注释
Query 执行的SQL。
(Execution) # 执行该SQL次数。
(Execution) Time 执行该SQL总时间。
(Execution) Avg time 执行该SQL平均时间。
字段 注释
(Blocks) Written 磁盘写页面数。
(Temp blocks) Read 磁盘读临时页面数。
(Temp blocks) Write 磁盘写临时页面数。
3.2.2.2 实例级性能指标 General Overview
图3-6 General Overview 性能指标
表3-7 Query runtime per second (all databases)字段解释
字段 中文解释 英文解释
Queries per
sec 每秒执行查询的次数。 Number of time the query has been executed, per second
Runtime per
sec 每秒执行的查询的总持
续时间。 Total duration of queries executed, per second
Avg runtime 平均查询时长。 Average query duration
表3-8 Block access in Bps 字段解释
字段 中文解释 英文解释
Total hit 在共享缓冲区中找到的 Amount of data found in shared
Background Writer
图3-7 Background Writer 性能指标
表3-9 Checkpointer scheduling 字段解释
字段 中文解释 英文解释
of requested
checkpoints 已执行的请求检查点
数。 Number of requested checkpoints that have been performed
of scheduled
checkpoints 已执行的预定检查点
数。 Number of scheduled checkpoints that have been performed
表3-10 Checkpointer activity 字段解释
字段 中文解释 英文解释
Buffers
alloc 分配的缓冲区数。 Number of buffers allocated Sync time 文件同步到磁盘的检查点处理部
分所花费的总时间(单位 : 毫 秒)。
Total amount of time that has been spent in the portion of checkpoint processing where files are synchronized to disk, in milliseconds
Write time 在将文件写入磁盘的检查点处理 部分中花费的总时间(单位 : 毫 秒)。
Total amount of time that has been spent in the portion of checkpoint processing where files are written to disk, in milliseconds
表3-11 Background writer 字段解释
Number of times the background writer stopped a cleaning scan because it had written too many buffers
Buffers
clean 后台写入器写入的缓冲区
数。 Number of buffers written by the background writer
表3-12 Backends 字段解释
fsync 调用的次数。 Number of times a backend had to execute its own fsync call (normally the background writer handles those even when the backend does its own write)
Buffers
backend 后端直接写入的缓冲 区数。
Number of buffers written directly by a backend
Database Objects
图3-8 Database Objects 性能指标
表3-13 Access pattern 字段解释
字段 中文解释 英文解释
表3-14 DML activity 字段解释
字段 中文解释 英文解释
Tuples
inserted 每秒插入的行数。 Number of tuples inserted per second Tuples
updated 每秒更新的行数。 Number of tuples updated per second Tuples HOT
updated 每秒更新(HOT)。 Number of tuples HOT updated per second
Tuples
deleted 每秒删除的行数。 Number of tuples deleted per second
表3-15 Vacuum activity 字段解释
字段 中文解释 英文解释
# Vacuum 每秒手动清理的次数。 Number of vacuum per second
#Autovacuum 每秒自动清理的次数。 Number of autovacuum per second
# Analyze 每秒手动分析的次数。 Number of analyze per second
#Autoanalyze 每秒自动分析的次数。 Number of autoanalyze per second
Details for all databases
图3-9 Details for all databases 性能指标
表3-16
字段 注释
Blocks read 磁盘读取的页面数。
Blocks hit 共享缓冲区命中的页面数。
Blocks dirtied 脏页数。
Blocks written 磁盘写页面数。
Temp Blocks written 磁盘写临时页面数。
I/O time I/O等待时间。
3.2.3 PoWA 工作模式
PoWA的工作模式分为本地模式和远程模式,出于云上环境的安全性考虑,RDS for PostgreSQL不支持PoWA的本地模式,仅支持远程模式部署。
由于云上架构安全性考虑,RDS for PostgreSQL暂不支持本地模式的部署。
图3-10 本地模式架构图
远程模式
使用第4版PoWA,可以将一台或多台服务器的数据存储在外部 PostgreSQL 数据库 上,当前RDS for PostgreSQL支持的PoWA版本为4.1.2。
相对于本地模式来说,远程模式主要变化在于设置了一个专门用于存储性能指标数据 的数据库(Powa repository),通过PoWA-collector来完成这项工作。
RDS for PostgreSQL支持远程模式的部署。
远程模式架构如下图所示:
图3-11 远程模式架构图
3.2.3.1 远程模式部署
华为云上进行远程模式部署,需要一台ECS,并在ECS上安装PostgreSQL数据库以及 PoWA-archivist、PoWA-collector、PoWA-web。
安装PostgreSQL数据库不在此处赘述,本章节主要讲解PoWA-archivist、PoWA-collector、PoWA-web的安装过程。
架构如下图所示:
图3-12 远程模式架构图
准备 ECS
通过华为云购买ECS并配置弹性公网IP,本次演示所购买的ECS系统镜像为:CentOS 8.2 64bit,并提前安装好PostgreSQL12.6。
Python3 的安装部署
安装PoWA-collecotor、PoWA-web依赖Pytho3n环境,且使用pip3安装可以减少很多 依赖环境安装的工作量。当前ECS以默认安装了 Python 3.6.8版本,由于版本偏低,安 装最新版本的PoWA失败,建议安装最新的python版本,详情请参见安装Python 3.9.9。
安装 PoWA-archivis
1. 安装PostgreSQL12.6以后,通过wget命令获取PoWA-archivist源码:
wget https://github.com/powa-team/powa-archivist/archive/refs/tags/
REL_4_1_2.tar.gz
2. 将下载好的REL_4_1_2.tar.gz进行解压。
3. 进入解压后的目录,执行命令完成安装。
make && make install
安装 PoWA-collector、PoWA-web
1. 切换到PostgreSQL数据库安装用户下,本次演示使用的是postgres。
su - postgres
/home/postgres/.local/bin
├── powa-collector.py
├── powa-web
└── __pycache__
常见问题
Q:在执行pip install psycopg2时可能会遇到报错python setup.py build_ext --pg-config /path/to/pg_--pg-config build。
A:配置 PostgreSQL的bin、lib路径到环境变量中,重新执行 pip install psycopg2 即 可完成安装。
3.2.3.2 配置远程模式
性能指标采集目标实例配置
步骤1 使用root用户登录目标实例的powa数据库。(若不存在,请先自行创建powa数据 库)
步骤2 在powa数据库中创建插件powa。
select control_extension('create', 'pg_stat_statements');
select control_extension('create', 'btree_gist');
select control_extension('create', 'powa');
----结束
本地 PostgreSQL 配置
本次演示ECS自建PostgreSQL(powa-repository)信息:
● 版本: PostgreSQL 12.6
● superuser: postgres
● data路径:/home/postgres/data
步骤1 修改配置文件 /home/postgres/data/postgresql.conf,添加 pg_stat_statements 至参 数 shared_preload_libraries,如下图所示:
步骤2 执行命令重启数据库。
pg_ctl restart -D /home/postgres/data/
步骤3 使用超级用户登录数据库,并创建database: powa,以及安装相关插件。
You are now connected to database "powa" as user "postgres".
You are now connected to database "powa" as user "postgres".