GreenPlum数据库日常维护

GP数据库日常维护

GPDB的日常维护包括以下两点

对所有用户表执行‘analyze’

1. 对所有用户表执行‘analyze’, 步骤如下。这个可以考虑一个月执行一次,或者更短时间执行过一次。

psql

\o /tmp/table_analyze.out;

select 'analyze '||schemaname||'.'||tablename||';' from pg_tables where schemaname not in ('pg_catalog','information_schema','gp_toolkit') and tablename not like '%1_prt_%';

然后将这个/tmp/ table_analyze.out 内容拆分为多次执行(比如每次执行内容放入table_analyze1.out),并行执行(因为把所有一起执行比较慢)。

  注意大表比如analyze public.tpd_lcdl; 表比较大,单独执行,还有C网的大表

执行nohup psql -f table_analyze1.out & 接着复制下一段再执行

具体如下:

以gpadmin用户登录到GP数据库服务器上,然后进入psql模式下,运行select语句,把查询出来的语句复制粘贴到table_analyze.out文件中,如果不拆分就执行在最后nohup  psql f  /tmp/ table_analyze.out &

如下:

可以直接复制粘贴如下命令行

psql

\o /tmp/table_analyze.out;

然后粘贴查询语句后回车执行

输入\q 后回车退出,可以见到在/tmp 目录下有table_analyze.out文件

自动将查询结果的“analyze public.XXXX”这些内写到table_analyze.out文件中,最后给table_analyze.out文件赋可执行权限:

如果不分多次执行就是执行 nohup psql –f table_analyze.out &

ps -ef|grep table_analyze.out  查看执行状态,如果发现进程在像上面图的,说明还在执行,如果没存在像下面截图在说明执行完成了。

对catalog 表执行‘’vacuum full analyze' 操作

二:对catalog 表执行‘’vacuum full analyze' 操作。这个也可以一个月执行一次。

 #!/bin/bash

            DBNAME="niosdb"

            VCOMMAND="VACUUM FULL ANALYZE"

psql -tc "select '$VCOMMAND' || ' pg_catalog.' || relname || ';' from pg_class a,pg_namespace b where a.relnamespace=b.oid and b.nspname= 'pg_catalog' and a.relkind='r'" $DBNAME | psql -a $DBNAME

将这个脚本保存为一个shell 文件(这个文件已经有,在/home/gpadmin/vacuum下的vacuum_full_analyze.sh)。

1、如果在正常模式下也可以执行,不用重启数据库直接执行,但是应该比受限模式下更慢点,数据也可以入库。

2、正常来说要把数据库重启到维护模式下,但是数据不能入库。先停止入库进程。ps -ef|grep 8080查找后杀掉进程。然后将数据库重启为restricted mode后,就可以执行了。执行完毕后,正常启动数据库。

备注:数据库的restricted mode的操作方法如下:

首先把数据库关闭,然后运行gpstart -R 启动,就进入了restricted mode。然后执行,执行完毕后可运行gpstop -M fast关闭restricted mode。然后启动数据库。

gpstop -M fast

gpstart -R

cd /home/gpadmin/vacuum

sh vacuum_full_analyze.sh

过程可查看进程,如下存在说明还没执行完,ps ef|grep vacuum_full_analyze.sh

花13天还没执行完。

猜你喜欢

转载自blog.csdn.net/weixin_42821740/article/details/135581009