逻辑备份及恢复
本章介绍 RDS PPAS 实例进行逻辑备份和恢复的步骤。
前提条件
已在本地主机或ECS安装EnterpriseDB。
操作步骤
- 在RDS实例上将所有用户权限赋给一个用户(用于数据导出)。
例如:如果导出时使用的用户为 A,而数据库中还有 B,C 两个用户,则需要执行下面的命令,把 B 和 C 的权限赋给 A。
--以用户B登录,然后执行: grant B to A; --再以用户C登录,然后执行: grant C to A;
这样,A 就有了访问所有 B 和 C 的数据表的权限。
- 在 pg_dump 所在目录(默认为/usr/pgsql-10/bin/),执行下面的命令进行备份。
./pg_dump -h <host> -p <port> -U <user> -f dump.sql <dbname>
- 如果需要恢复,可以在 psql 所在目录(默认为/usr/pgsql-10/bin/)执行如下命令。
./psql -h <host> -p <port> -U <user> -d postgres -c "drop database <dbname>" ./psql -h <host> -p <port> -U <user> -d postgres -c "create database <dbname>" ./psql -h <host> -p <port> -U <user> -f dump.sql -d <dbname>
常见问题
- 从PPAS导出遇到如下权限错误。
ERROR: permission denied for relation product_component_version LOCK TABLE sys.product_component_version IN ACCESS SHARE MODE
解决方案:这是由于用户使用 PostgreSQL 的 pg_dump 程序导出 PPAS 造成的。使用 PPAS 的二进制即可。PPAS 的下载方法见上面的步骤。
- 从PPAS导出遇到如下权限错误。
ERROR: permission denied for relation <用户表>
解决方案:这是由于导出时使用的账号没有访问其他用户数据的权限导致。解决方法为(如果用户可以接受),将其他用户的权限都授权给一个用户,再用这个用户导出,即执行如下命令。
GRANT ROLE <other roles>,<other roles> to <user for pg_dump>
- 使用pg_dump时遇到如下问题。
pgdump -U xxx -h yyy -p3433 <dbname> -f my.sql pg_dump: 命令行参数太多(第一个是”-f)
解决方案:在 windows 平台执行 pg_dump 时,必须把 <dbname> 放在所有其他参数后面。
- 使用 pg_dump 时报参数错误。
解决方案:可能是参数指定不正确,如:
pg_dump -Uxxx -h yyy
,这种方式是不允许的,-U 后面要有空格(其他参数类似)。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论