待跑批完成后,进行如下操作
1.旧集群执行001脚本,统计表记录条数
sh 001-统计表数据量.sh
2.旧集群执行002脚本,生成创建hdfs目录脚本(手动划分成5个sh,同时执行)
sh 002-创建HDFS目录脚本.sh
sh $transfer_dir/create_hdfs.sh
3.旧集群执行003脚本,生成创建外表脚本
sh 003-自动生成创建外表脚本.sh
psql -d postgres -f $transfer_dir/create_external_table.sql
4.旧集群执行004脚本,生成备份insert脚本
sh 004-自动生成备份insert脚本.sh
sh $transfer_dir/insert_external.sh
5.新集群重新同步元数据
1) 执行psql -d postgres -f all.sql
2) 执行psql -d postgres -f $transfer_dir/create_external_table.sql
6.旧集群执行005脚本,生成备份恢复到新集群脚本(手动划分成15个sh,同时执行)
sh 005-自动生成备份恢复到新集群脚本.sh
新集群执行: sh $transfer_dir/recovery_from_external.sh
7.新集群执行001脚本,统计表记录条数
sh 001-统计表数据量.sh
并对新旧集群统计数据量进行对比(对比脚本未提供)
注: $transfer_dir=/home/gpadmin/transfer
001-统计表数据量.sh
#!/bin/bashset -o errexit
###################################################################################################################################################################### 作用: 统计数据库所有表的记录数,并生成csv文件 #### 作者: #### 日期: 2021-01-18 #### 版本: V1.0 #### 变更: #####################################################################################################################################################################开始执行echo"统计数据库所有表的记录数,并生成csv文件"echo"开始执行:"echo""#创建对应的目录
transfer_dir=/home/gpadmin/transfer
script_dir=/home/gpadmin/transfer/script_count
mkdir -p $transfer_dirmkdir -p $script_dir#重跑清空echo''>$script_dir/all_table_count.sh
echo'库名,表名,统计时间,统计时间戳,数据量'>$transfer_dir/table_count.csv
echo''>>$transfer_dir/table_count.csv
#获取所有库名
psql -d postgres -c "select datname from pg_database where datname not in ('template1','template0','postgres');"|grep -v 'datname\|-\|row)\|^$\|rows)'>$script_dir/database.list
#生成获取所有表名的SQLecho"select 'postgres'||'@#@'||c.nspname||'.'||b.relname
from gp_distribution_policy a,
(select oid,* from pg_class b where not exists(select 1 from pg_partitions where partitiontablename=b.relname)) b,
pg_namespace c
where b.relnamespace=c.oid and a.localoid=b.oid;">$script_dir/gather_table.sql
cat$script_dir/database.list |whileread line
doecho"\\c $line">>$script_dir/gather_table.sql
echo"select '$line'||'@#@'||c.nspname||'.'||b.relname
from gp_distribution_policy a,
(select oid,* from pg_class b where not exists(select 1 from pg_partitions where partitiontablename=b.relname)) b,
pg_namespace c
where b.relnamespace=c.oid and a.localoid=b.oid;">>