本期整理的几个问题如下:
- 如何提前绑定VIP
- 结果集的元数据如何获取
- 善用psql条件交互式
- 表空间size查询需要什么权限
Q1.监听如何提前绑定VIP?
在高可用环境中,主备节点会发生切换,通常使用虚拟IP(VIP)向外提供写服务,这样对于用户是无感的。
在PG里需要配置listen_addresses为“*”或者“0.0.0.0”(全链路监听),即监听本机所有网卡上的IP,但这存在遭受恶意连接的风险。
为了进行安全加固,应该避免全链路监听。但是,当绑定一个非本地IP,即网卡没有绑定的IP时,绑定会失败,报错信息为:
Cannot assign requested address
复制
此时,需修改操作系统的配置文件/etc/sysctl.conf:
net.ipv4.ip_nonlocal_bind=1
复制
该配置项默认值为0,表示不允许绑定一个不存在的IP。
参数值修改为1后,执行命令sysctl -p生效,然后重启数据库服务可以成功绑定VIP。
该问题引自闫老师的微信公众号文章:PgSQL-安全加固实践-如何设置非全零监听
Q2.SQL Server数据库set fmtonly on功能在PG里如何替换?
SQL Server数据库可以使用set fmtonly on获取结果集的元数据信息,在PG里可以使用元命令\gdesc来获取。
psql里可以通过?查看它的帮助信息:
\gdesc describe result of query, without executing it
\gdesc不需要实际执行查询,就可以获取结果集的元数据信息,示例如下:
postgres=# select relname,reloptions from pg_class \gdesc Column | Type ------------+-------- relname | name reloptions | text[] (2 rows)
复制
Q3.psql使用条件表达式让业务逻辑更清晰
下面这个需求是在主库执行一个存储过程
psql -d postgres -AtqXc "select not pg_is_in_recovery();" | grep -qx t || exit; psql -d postgres -qt -c "CALL xxx.proc1(TRUE);"
复制
可以使用psql的条件表达式来让逻辑变得更清晰,改写参考如下:
psql <<EOF select pg_is_in_recovery() as in_recovery \gset \if :in_recovery \echo -n 'do nothing ...' \else --call procedure or do something; \endif EOF
复制
Q4.表空间size查询需要什么权限
普通用户可以使用pg_tablespace_size函数查看pg_default默认表空间的size,但无法查看pg_global和其他自定义表空间的size。
postgres=> select pg_tablespace_size('pg_global'); ERROR: permission denied for tablespace pg_global
复制
上面的查询就提示对pg_global表空间无权限。
从PG 10开始,使用预置角色pg_read_all_stats或者pg_monitor可以解决上面的权限问题,PG 10之前的版本需要使用superuser权限。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
文章被以下合辑收录
评论
相关阅读
2025年3月中国数据库排行榜:PolarDB夺魁傲群雄,GoldenDB晋位入三强
墨天轮编辑部
2024次阅读
2025-03-11 17:13:58
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1332次阅读
2025-03-13 11:40:53
11 【HarmonyOS NEXT】 仿uv-ui组件开发之Avatar组件深度剖析(二)
若城
1062次阅读
2025-03-07 21:35:16
10 【HarmonyOS NEXT】 仿uv-ui组件开发之Avatar头像组件开发教程(一)
若城
1061次阅读
2025-03-07 21:10:59
12 【HarmonyOS NEXT】 仿uv-ui组件开发之Avatar组件设计精髓(三)
若城
1052次阅读
2025-03-07 21:49:38
13 【HarmonyOS NEXT】 仿uv-ui组件开发之Avatar组件进阶指南(四)
若城
1047次阅读
2025-03-07 22:07:57
Oracle RAC ASM 磁盘组满了,无法扩容怎么在线处理?
Lucifer三思而后行
805次阅读
2025-03-17 11:33:53
Oracle 统计信息锁定解决办法
JiekeXu
557次阅读
2025-03-11 14:26:05
MySQL8.0统计信息总结
闫建(Rock Yan)
502次阅读
2025-03-17 16:04:03
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
472次阅读
2025-03-13 14:38:19