暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

pg_dump迁移表/存过/函数

原创 Z·A·Q 2022-04-20
650

迁移用户表

  • 1)确认源端、目标端信息
版本 IP地址 端口 数据库名 用户名 schema名
源库 12.3 192.168.56.101 15432 prodb root u1
目标库 12.3 192.168.56.102 15432 testdb root u1
  • 2)源库查询要迁移的表信息
$ psql -h 192.168.56.101 -p 15432 -d prodb -U root

select c.relname, c.relkind, c.relpages,pg_size_pretty(pg_relation_size(c.oid))
from pg_class c join pg_namespace n on c.relnamespace=n.oid where n.nspname='u1'
and c.relname in ('t1_202201','t1_202202');
  • 3)源库执行表备份
    -h 指定数据库主机
    -p 指定数据库端口
    -d 指定连接的数据库名
    -U 指定连接用户名
    -n 指定要导出的schema名
    -t 指定要导出的表名
$ pg_dump -h 192.168.56.101 -p 15432 -d prodb -U root -n u1 
-t t1_202201 -t t1_202202 -Fc -f u1_table.dmp -v >u1_table_dump.log 2>&1
  • 4)目标库执行表恢复
$ pg_restore -h 192.168.56.102 -p 15432 -d testdb -U root u1_table.dmp -v >u1_table_restore.log 2>&1

迁移用户函数、存过

  • 1)备份源库指定schema的所有元数据信息
    -s 只导出对象定义
$ pg_dump -h 192.168.56.101 -p 15432 -d prodb -U root -n u1 -s -Fc -f u1.dmp
  • 2)-l 列出备份文件的内容,该操作的输出可以作为 -L 的输入
    -L list-file 仅恢复 list-file 中列出的元素,并按照它们在文件中出现的顺序恢复它们
筛选函数、存过,并生成文本文件
$ pg_restore --list u1.dmp | grep FUNCTION > u1_func_list
$ pg_restore --list u1.dmp | grep PROCEDURE > u1_proc_list

查看函数、存过的数量
$ cat u1_func_list|wc -l
$ cat u1_proc_list|wc -l
  • 3)将存过、函数恢复到目标库
$ pg_restore -h 192.168.56.102 -p 15432 -d testdb -U root -c -L u1_func_list u1.dmp -v >u1_func.log 2>&1

$ pg_restore -h 192.168.56.102 -p 15432 -d testdb -U root -c -L u1_proc_list u1.dmp -v >u1_proc.log 2>&1
  • 4)目标库查询函数、存过数量
$ psql -h 192.168.56.102 -p 15432 -d testdb -U root

SELECT
p.prokind,count(*)
from pg_catalog.pg_proc p
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
WHERE n.nspname OPERATOR(pg_catalog.~) '^(u1)$' COLLATE pg_catalog.default and p.prokind in ('f','p')
group by p.prokind;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论