背景:
部分金蝶公有云客户,需要进行大量二次开发。而公有云的模式对开发者限制较多,故需搭建本地私有云苍穹环境,并从公有云迁移数据库至本地私有化环境。本文档专指postgre数据库类型。
步骤:
一、从公有云迁移数据
在公有云天梯提单,申请数据库备份。公有云工作人员处理好后,会给出的下载链接(下载限时6小时),点击下载。
二、数据存放
将公有云下载好的数据库文件(假设为2023-11-14.tar.gz),上传至私有化环境的数据库上。建议放至postgre用户的根目录/home/postgres/
注:因为还原数据需要用postgre用户(苍穹安装器安装的均用postgre用户非操作系统root用户)进行。
三、文件预处理
1、 切换用户为postgres
su - postgres
2、先对数据库文件进行解压:
tar -zxvf 2023-11-14.tar.gz
解压后的文件名类似:10.199.22.254_5432_prod_myfjdtest_all.dump
3、(可选)重命名一下文件(降低后续处理的麻烦)
mv 10.199.22.254_5432_prod_myfjdtest_all.dump myfjdtest_all.dump
4、将备份文件中的表和索引(函数和存储过程等去除掉)列到一个文件中,例如1114.toc
pg_restore -l myfjdtest_all.dump | grep -v -E "FUNCTION|PROCEDURE|TYPE" >./1114.toc
四、数据库预处理
1、 先进入数据库
在当前用户已经是postgres用户的情况下,直接输入psql进入数据库
2、 (可选,用安装器安装的苍穹环境已默认有cosmic用户,需跳过)建立新数据库用户(自定义用户名$a和密码$b)
CREATE USER $a PASSWORD '$b';
3、 新建一个数据库$c,例如public1114, 所有者为$a, 例如cosmic
create database $c encoding utf8 owner $a;
举例为create database public1114 encoding utf8 owner cosmic;
4、 授权
GRANT ALL ON DATABASE $c TO $a;
举例为GRANT ALL ON DATABASE public1114 TO cosmic;
5、 退出数据库界面,输入exit后回车即可
五、数据恢复
1、 保证当前用户是postgres,看命令行的前缀,一般是用户名@主机名,例如[postgres@localhost ~]
2、 (可选)密码设置进环境变量,pg_resore过程中需要数据库密码,初次恢复需要设置,后续不再需要
export PGPASSWORD=$b;
3 开始恢复数据:-h是主机ip,-p是端口,-U是用户名 -d是目标数据库名, -L是文件预处理步骤中列出的toc文件名,--role是数据库预处理步骤中建立的用户(默认则为cosmic),最后为数据库文件所在位置和名字(如放在/home/postgres目录), 回车开始执行
pg_restore -h 127.0.0.1 -p 5432 -U cosmic -d public1114 -c --if-exists -L 1114.toc --no-owner --role cosmic /home/postgres/myfjdtest_all.dump
此处视数据库文件的大小和机器性能,恢复时间不等,
可以另外开一个窗口用df -h查看硬盘的变化,或者再进入数据库,用select pg_size_pretty(pg_database_size('具体实例名'));查看数据库大小的变化
六、恢复存储过程
有几个重要的存储过程,如p_AlterPK等,需要恢复进数据库,(此处已将其存放在/homt/postgres目录下的proc_pg.sql文件),此处的-d就是数据库名称
psql -d public1114 -f /home/postgres/proc_pg.sql
七、注册至苍穹
打开苍穹的MC,进入租户,新建数据中心,分库规则选择“不分库”,实例名设置为数据库名,此处是public114,元数据库也同样是public114,保存后启用,集群管理里点“发布”即可。
公有云沙箱环数据库迁移至本地步骤.docx(462.78KB)
proc_pg库脚本.zip(4.19KB)
您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!
请选择打赏金币数 *