GreenPlum数据库日常维护
??????
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA工作经验
一位上进心十足的【大数据领域博主】!???
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
擅长主流数据Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】???
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️
文章目录
前言
本文详细的阐述了GreenPlum数据库日常维护? 1.官方文档
https://docs-cn.greenplum.org/
http://docs-cn.greenplum.org/v6/homenav.html
https://www.bookstack.cn/read/greenplum-admin_guide-6.0-zh/9ccd913ea8be24b9.md
Pivotal在2020年被VMware收购,GP商业版就属于VMware了
? 2.管理工具日志文件
Greenplum数据库管理工具的日志文件默认被写入到~/gpAdminLogs。管理日志文件的命名规则是:
script_name_date.log
日志详情的格式是:
timestamp:utility:host:user:[INFO|WARN|FATAL]:message
注:每次一个工具运行时,就会向其每日的日志文件中增加与其执行相关的日志信息。
? 3.日常运维
✨ 3.1 数据库启动
数据库启动:gpstart
-a : 直接启动,不提示终端用户输入确认
-m:只启动master 实例,主要在故障处理时使用
✨ 3.2 数据库停止
-a:直接停止,不提示终端用户输入确认
-m:只停止master 实例,与gpstart –m 对应使用
-M fast:停止数据库,中断所有数据库连接,回滚正在运行的事务
-u:不停止数据库,只加载pg_hba.conf 和postgresql.conf中运行时参数,当改动参数配置时候使用。
注意:-a用在shell里,最多用的还是-M fast
✨ 3.3 查看实例配置和状态
[gpadmin@master ~]$ psql -d rptdb
rptdb=# l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+---------+----------+------------+------------+---------------------
postgres | gpadmin | UTF8 | en_US.utf8 | en_US.utf8 |
rptdb | gpadmin | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | gpadmin | UTF8 | en_US.utf8 | en_US.utf8 | =c/gpadmin +
| | | | | gpadmin=CTc/gpadmin
template1 | gpadmin | UTF8 | en_US.utf8 | en_US.utf8 | =c/gpadmin +
| | | | | gpadmin=CTc/gpadmin
(4 rows)
rptdb=# c postgres gpadmin
postgres=# select * from gp_segment_configuration;
dbid | content | role | preferred_role | mode | status | port | hostname | address | datadir
------+---------+------+----------------+------+--------+------+----------+----------+--------------------------------
1 | -1 | p | p | n | u | 5432 | master | master | /greenplum/data/master/gpseg-1
2 | 0 | p | p | n | u | 6000 | segment1 | segment1 | /greenplum/data/primary/gpseg0
3 | 1 | p | p | n | u | 6000 | segment2 | segment2 | /greenplum/data/primary/gpseg1
(3 rows)
✨ 3.4 集群状态查询
查询命令:gpstate
显示Greenplum数据库运行状态,详细配置等信息
常用可选参数:-c:primary instance 和 mirror instance 的对应关系
-m:只列出mirror 实例的状态和配置信息
-f:显示standby master 的详细信息
-Q:显示状态综合信息
该命令默认列出数据库运行状态汇总信息,常用于日常巡检。
评:最开始由于网卡驱动的问题,做了mirror后,segment经常down掉,用-Q参数查询综合信息还是比较有用的。
查询命令:gpstate -m
Status均为Passive,Data Status均为为Synchronized则正常,否则异常
✨ 3.5 负载查询
使用vmstat命令可以监控 CPU 使用、进程状态、内存使用、虚拟内存使用、硬盘输入/输出状态等信息
常使用方法为:vmstat [刷新延时 刷新次数]
vmstat命令,是 Virtual Meomory Statistics(虚拟内存统计)的缩写,可用来监控 CPU 使用、进程状态、内存使用、虚拟内存使用、硬盘输入/输出状态等信息
[root@segment1 ~]# vmstat 1 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 2810936 2108 909084 0 0 17 26 25 39 0 0 99 0 0
0 0 0 2810936 2108 909084 0 0 0 0 87 112 0 0 100 0 0
0 0 0 2810820 2108 909084 0 0 0 0 80 101 0 0 100 0 0
✨ 3.6 磁盘空间查询
postgres=# select * from gp_toolkit.gp_disk_free;
dfsegment | dfhostname | dfdevice | dfspace
-----------±-----------±--------------------------------±---------
1 | segment2 | /dev/mapper/centos_jeames-root | 40727268
0 | segment1 | /dev/mapper/centos_jeames-root | 40694128
select dfsegment,dfhostname,dfdevice,round(dfspace/1024,2) as free_disk_MB
from gp_toolkit.gp_disk_free
ORDER BY free_disk_MB DESC ;
注:dfspace 实例所在的文件系统的空闲磁盘空闲空间(千字节为单位)
系统命令行查看(在此例中“host_list”为所有服务器节点清单,
“data”为数据存放目录,根据实际目录文件名查询即可)
gpssh -f host_list -e “df -h |grep data”
✨ 3.7 数据库、表占用空间
select pg_size_pretty(pg_relation_size('schema.tablename'));
select pg_size_pretty(pg_database_size('rptdb'));
1.查看所有库大小
select sodddatname,sodddatsize/1024/1024 as db_size_MB from gp_toolkit.gp_size_of_database;
2.查看库下面的所有schema占用的磁盘空间
select sosdnsp,round(sosdschematablesize/1024/1024,2) schema_tb_size_MB,round(sosdschemaidxsize /1024/1024,2) as schema_idx_size_MB from gp_toolkit.gp_size_of_schema_disk;
3.查看schema下所有表和索引 占用的磁盘空间
SELECT soatioid,soatischemaname,soatitablename,round(soatisize/1024/1024,2) as INDEX_SIZE_MB FROM gp_toolkit.gp_size_of_all_table_indexes
order by INDEX_SIZE_MB desc,soatischemaname,soatitablename ;
4.查看表占用空间
select sotuoid, sotuschemaname,sotutablename,round(cast(sotusize as integer )/1024/1024,2) as table_SIZE_MB from gp_toolkit.gp_size_of_table_uncompressed order by sotuschemaname, table_SIZE_MB desc,sotutablename;
5.查看膨胀表
select * from gp_toolkit.gp_bloat_diag order by bdinspname,(bdirelpages-bdiexppages)desc,bdirelname;
没有统计信息且可能需要ANALYZE的表。
select * from gp_toolkit.gp_stats_missing order by smischema,smicols desc;
必须在数据库所对应的存储系统里,至少保留30%的自由空间,日常巡检,要检查存储空间的剩余容量。
评:可以查看任何数据库对象的占用空间,pg_size_pretty可以显示如mb之类的易读数据,另外,可以与pg_tables,pg_indexes之类的系统表链接,统计出各类关于数据库对象的空间信息。