背景
前段时间总结了PG数据库的批量备份恢复的脚本.
想着在总结一下 GaussDB数据库的批量备份恢复的脚本.
并且可以验证对比一下不同事宜.
因为部分语法存在差异, 所以还是需要关注一下.
GaussDB的参数处理
GaussDB的创建这里不在赘述.
创建数据库后需要修改几个参数:
gs_guc reload -Z coordinator -Z datanode -N all -I all -c \
"behavior_compat_options='skip_insert_gs_source,forbid_package_function_with_prefix,\
enable_bpcharlikebpchar_compare,enable_crosstype_integer_operator'";
gs_guc reload -Z datanode -I all -N all -c "session_timeout=36000"
gs_guc reload -Z datanode -I all -N all -h "host all all 10.0.0.0/8 sha256"
创建兼容数据库以及角色等
su - omm
gsql -d postgres -p 30100 -U root -W Testxxxxxxxx
create role myapp login password 'Testxxxxxxxx' ;
CREATE database "myapp" WITH OWNER = "myapp" ENCODING = 'UTF8' DBCOMPATIBILITY = 'PG';
# 注意 role的较色与PG不一样
# 注意 数据库需要选择字符集以及兼容模式, 不选择默认是 A 也就是Oracle兼容模式
批量创建角色:
for i in {0001..2000} ; do echo "create role myapp${i} login password 'Testxxxxxxxx' ;" ; done >role.txt
time gsql -d postgres -p 30100 -U root -W Testxxxxxxxx -f role.txt
# 批量执行SQL, 创建角色
数据库的备份与恢复脚本
mkdir -p myappdump
chown omm:omm myappdump
su - omm
time gs_dump -h 127.0.0.1 -U myapp -p 30100 -F p -f myappdump/myapp.sql myapp -W Testxxxxxxxx
# 注意PG9.2的版本是 -F c 模式的压缩文件编辑后无法进行导入.
# 所以建议使用 -F p sql文件的方式进行导出. 这样的话可以进行相关的更改schemas的操作.
time gsql -d myapp -p 30100 -U root -W Testxxxxxxxx -f myappdump/myapp.sql 1 > gsclod.log 2>myapperror.log
# 需要说明 -F p 必须使用 gsql进行导入 无法使用restore.
数据库批量恢复的方式
su - omm
for i in {0001..2000} ;
do
echo "mkdir -p myappdump/$i ";
echo "scp myappdump/myapp.sql myappdump/$i/myapp.sql ";
echo "sed -i 's/myapp/myapp${i}/g' myappdump/$i/myapp.sql" ;
echo "time gsql -d myapp -p 30100 -U root -W Testxxxxxxxx -f myappdump/$i/myapp.sql 1>/myappdump/myapp${i}.log 2>/myappdump/myapp${i}error.log" ;
echo "rm -rf myappdump/$i" ;
done > dbrestore.txt
# 需要说明 一共是 2000个数据库实例, 一个数据库实例的恢复脚本是 5行.
# 为了提高并发效率, 可以将 10000行 切割成 20-40个文件 并行导入.
# 我服务器上面是 48c/96现成的服务器. 我计划采用 40个并行导入. 所以每一个文件是 250行.
# 合计每一个文件是 50个数据库导入.
split -l 250 dbrestore.txt
# 在当前目录下执行:
for i in `ls` ; do echo "nohup ./$i > log_${i}.log & " ; done
等待结果就可以了.
文章转载自济南小老虎,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




