首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

进阶数据库系列(十五):PostgreSQL 主从同步原理与实践

主从复制 基于文件的日志传送 创建一个高可用性(HA)集群配置可采用连续归档,集群中主服务器工作在连续归档模式下,备服务器工作在连续恢复模式下(1台或多台可随时接管主服务器),备持续从主服务器读取WAL...-D $PGDATA -Fp -P -Xs -R -v -l postgresbak --启动数据库(170) pg_ctl start --新主库查询同步状态(171) select pid,state...test 数据库,说明主从同步正常。...使用前提:需要数据库 wal_log_hints(默认 off,开启),full_page_writes(默认 on,开启),这两个参数开启。...(171) create database test; 新备库(170) \l 可查询到主库创建的 test 数据库,说明主从同步正常

2.6K22

进阶数据库系列(二十六):PostgreSQL 数据库监控管理

自由空间映射用于跟踪数据库中使用空间的位置。不在映射表里面的自由空间是不能重复使用的,通过合理地设置,可以提高磁盘的利用率。...查询规划 在PostgreSQL中,查询优化器选择查询规划时,有时候并不是最优的方法。数据库管理员可以通过设置配置参数,强制优化器选择一个更好的查询规划。...自动清理 数据库管理员可以通过设置自动清理的缺省行为,从而提高工作效率。 客户端连接缺省 数据库管理员可以设置客户端连接时的语句行为、区域和格式化等。...) from pg_stat_database; 备库查询冲突数 select sum(conflicts) from pg_stat_database; 死锁数 select sum(deadlocks...我们只需要将数据库连接配置到监控中即可运行正常监控操作。

90420
您找到你想要的搜索结果了吗?
是的
没有找到

30个实用SQL语句,玩转PostgreSQL

3、查询当前连接数详细信息 select * from pg_stat_activity; 4、查询数据库中各个用户名对应的数据库连接数 select usename, count(*) from...(); 3、查看当前wal的buffer中有多少字节写入磁盘 select pg_xlog_location_diff(pg_current_xlog_insert_location(),pg_current_xlog_location...5; 10、获取数据库当前的回滚事务数以及死锁数 select datname,xact_rollback,deadlocks from pg_stat_database 11、查询访问指定表的慢查询...-Ft 2、备份postgres库,转储数据为带列名的INSERT命令 pg_dumpall -d postgres -U postgres -f postgres.sql --column-inserts...总结 本文主要针对PostgreSQL数据库中在日常开发中比较常用的SQL进行了分类的总结,那么大家日常开发工作中,可以在分析数据库性能、数据库连接情况、sql执行情况等数据库分析方面都有对应的SQL

64520

CVE-2020-7471 漏洞详细分析原理以及POC

首先补充一个知识点,如果你熟悉 django 或者至少做过 django 渗透,你应该知道在 django 开发中编写查询操作的时候,正确的做法是用下面的代码段: sql = "SELECT * FROM...如果你的查询代码像下面这种写法就存在注入的风险: sql = "SELECT * FROM user_contacts WHERE username = %s" % 'zhugedali'cursor.execute...这里的转义号是因为 sql 是个字符串,这行命令最终放入 postgres 中执行就变成了: SELECT "vul_app_info"."...,并且允许用户指定哪种连接符的时候,应该多加思考是否该服务更新为最新版本,可以尝试这个 CVE 漏洞。...    '''    注入点证明    分别设置delimiter为 单引号 二个单引号 二个双引号    尝试注释后面的内容 ')--    :return:    '''     print("[+]正常的输出

3.5K10

PostgreSQL 14中TOAST的新压缩算法LZ4,它有多快?

SELECT id, postgres-# pg_column_compression(id) AS compression_colid, postgres-# pg_column_compression...压缩/解压缩速度 Insert和查询时TOAST数据会被压缩和解压缩。因此,我执行一些SQL语句查看不同压缩算法带来的影响。 首先比较了INSERT语句,列使用LZ、PGLZ和使用压缩时的性能。...可以看到与压缩数据比,LZ4耗费稍微多一点时间,PGLZ耗费时间更多。LZ4的压缩时间比PGLZ平均节省20%。这是一项非常显著的改进。 下面比较SELECT。...16个客户端的SELECT,多数场景下,LZ4性能优于PGLZ: 同样也比较了使用字符串函数的SELECT、UPDATE处理文本的速度。整个场景下LZ4优于PGLZ。...和压缩数据相比,查询速度几乎一样,和PGLZ相比,插入快80%。当然某些场景下压缩率不太好,但如过你想要提升执行速度,强烈推荐使用LZ4算法。 同样需要注意,需要考虑表中的数据是否合适压缩。

2.7K20

如何在Ubuntu 16.04上安装和使用PostgreSQL

PostgreSQL或Postgres是一个关系数据库管理系统,它提供SQL查询语言的实现。...现在我们的软件已经安装完毕,我们可以了解它的工作原理以及它与您可能使用的类似数据库管理系统的不同之处。...您必须从具有sudo权限的帐户(postgres用户身份登录)执行此操作: sudo adduser sammy 获得适当的帐户后,您可以通过键入以下内容切换并连接到数据库: sudo -i -u...您可以通过查询所需的记录并将列设置为您要使用的值来更新现有条目的值。我们可以查询“swing”记录(这将匹配我们表中的每个 swing)并将其颜色更改为“red”。...如果我们给秋千组画一个绘画工作,这可能很有用: UPDATE playground SET color = 'red' WHERE type = 'swing'; 我们可以通过再次查询我们的数据来验证操作是否成功

5.1K10

如何在Ubuntu 18.04上安装和使用PostgreSQL

PostgreSQL或Postgres是一个关系数据库管理系统,它提供SQL查询语言的实现。...postgresql-contrib 现在已经安装了该软件,我们可以了解它的工作原理以及它与您可能使用的类似数据库管理系统的不同之处。...您必须从具有权限的非root帐户执行此操作sudo(意味着,postgres用户身份登录): $ sudo adduser sammy 一旦这个新帐户可用,您可以通过输入以下内容切换并连接到数据库:...如果您发现您的工作人员使用单独的工具来跟踪维护历史记录,您可以通过输入以下内容来删除该列: sammy=# ALTER TABLE playground DROP last_maint; 这将删除last_maint...您可以通过查询所需的记录并将列设置为您要使用的值来更新现有条目的值。您可以查询“swing”记录(这将匹配表中的每个 swing)并将其颜色更改为“red”。

5.4K60

PostgreSQL 难搞的事系列 --- vacuum 的由来与PG16的命令的改进 (1)

导致aggressive vacuum 后最大的问题是,aggressive vacuum中的扫描工作,普通的vacuum本身并不会对数据表中每页的数据进行扫描,而aggressive vacuum 则是针对冻结的数据页面全部扫描...下面我们通过一个列子来进行展示,我们找到一张表,其中我们计算出他的相关的age 是 478 postgres=# SELECT c.oid::regclass as table_name,greatest...=# SELECT postgres-# oid::regclass::text AS table, postgres-# age(relfrozenxid) AS xid_age, postgres-...# mxid_age(relminmxid) AS mxid_age, postgres-# least( postgres(# (SELECT setting::int postgres(# FROM...pg_settings postgres(# WHERE name = 'autovacuum_freeze_max_age') - age(relfrozenxid), postgres(# (SELECT

19931

LLM如何助我打造Steampipe的ODBC插件

当你执行select * from aws_sns_topic时,Steampipe实际调用的是AWS ListTopics API。...Jose Reyes的Postgres插件是另一个灵感来源(清楚起见,这只是他对Steampipe的深入研究的一小部分)。Postgres插件使Steampipe可以查询远程Postgres表。...实现SQL到SQL的下推 这是一个查询来找到分配给你的关闭问题。...当查询包含where state = 'OPEN'时,插件会调整API调用以包含该过滤条件。 当插件的API是SQL时,同样的想法也适用。你可以在这里的Postgres插件中看到。...尽管Postgres插件提供了清晰的例子,但它提供的部分解决方案正确地调整了传递给SQLite的SQL,却忽略了定义可选键列这一点。这很容易修复,最终我们一起实现了这个功能,比我自己工作轻松许多。

7810

PostgreSQL 性能优化创建正确的索引具有不确定性

大多数的问题是在于索引建立后并不能一直良好的工作,主要有以下几个问题 1 重复功能的索引,让查询无法把握或者在管理人员不知情的情况下,走了其他的索引,索引并不能有效的工作,并成为负担。...但是这样的工作对于主键是不合适的,所以查看这样的工作可以对主键进行一个屏蔽。 同时不可以忽略的问题是随着数据的增长,索引无法完全加载到内存当中,导致的数据查询性能的问题。...我们用下面的例子来说明,同样的表,同样的查询的方式 postgres=# explain SELECT postgres-# p.last_name, postgres-# p.first_name...=# postgres=# explain SELECT postgres-# p.last_name, postgres-# p.first_name postgres-# FROM passenger...,我们的查询执行计划基本是相同的 postgres=# postgres=# explain SELECT postgres-# p.last_name, postgres-# p.first_name

90140

postgresql 提升主库的操作

机器环境说明:   postgres版本 10 切换前的拓扑关系:   master: 10.0.20.25   standby: 10.0.20.26 操作前,先切换到 postgres 账号: 10.0.20.25...在 10.0.20.26 上创建一个测试表,用于稍后验证新的复制是否正常 create table test_t1(a int ); insert into test_t1 select 100; select... dbname=postgres password=postgres' -P -- 说明: 这里10.0.20.26上的postgres用户的密码是postgres,需要根据自己的情况来写pg_rewind...                   # 一般查多于写的应用从库的最大连接数要比较大 hot_standby = on                      # 说明这台机器不仅仅是用于数据归档,也用于数据查询...; 然后,在主库、从库 查询复制状态: select txid_current_snapshot();

1.2K40

如何在CentOS 7上安装和使用PostgreSQL

PostgreSQL或Postgres是一个关系数据库管理系统,它使SQL查询语言的得到了实现。...我们可以了解它的工作原理以及它与您可能使用的类似数据库管理系统的不同之处。 使用PostgreSQL角色和数据库 默认情况下,Postgres使用称为“角色”的概念来帮助进行身份验证和授权。...为了使用Postgres,我们需要登录该帐户。您可以通过键入以下内容来执行: sudo -i -u postgres 系统将要求您输入正常的用户密码,然后为postgres用户提供shell提示符。...您可以通过查询所需的记录并将列设置为您要使用的值来更新现有条目的值。我们可以查询“swing”记录(这将匹配我们表中的每个 swing)并将其颜色更改为“red”。...如果我们给它一个绘画工作,这可能是有用的: UPDATE playground SET color = 'red' WHERE type = 'swing'; 我们可以通过再次查询我们的数据来验证操作是否成功

4.6K10

在 Kubernetes 上快速测试 Citus 分布式 PostgreSQL 集群(分布式表,共置,引用表,列存储)

目录 准备工作 创建分布式表 使用共置(Co-location)创建分布式表 创建引用表 使用列式存储创建表 准备工作 这里假设,你已经在 k8s 上部署好了基于 Citus 扩展的分布式 PostgreSQL...创建分布式表 create_distributed_table 将在本地或工作节点之间透明地切分您的表。...SELECT create_distributed_table('events', 'device_id'); 执行此操作后,对特定设备 ID 的查询将有效地路由到单个工作节点,而跨设备 ID 的查询将在集群中并行化...,以下显示了查询其中一个分片的计划以及如何完成跨分片的聚合 执行 sql 语句: EXPLAIN (VERBOSE ON) SELECT count(*) FROM events;...您可以单独使用列存储,也可以在分布式表中使用,以结合压缩和分布式查询引擎的优势。 使用列式存储时,您应该只使用 COPY 或 INSERT..SELECT 批量加载数据以实现良好的压缩。

2.4K20
领券