EDB日常备份

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

EnterpriseDB Postgres Plus
Advanced Server
日常备份学习用例
V1.0
创建人版本信息创建日期内部密级内容
萧少聪V1.02011-11-07公开如果使恢复后的所有数据库对象属于指定的用户
用例⼀一:如果使恢复后的所有数据库对象属于指定的用户
数据库:Postgres Plus Advanced Server 8.x/9.0
操作需求:
生成库已经有数据库db_a,并属于user_a。

现要将db_a备份并恢复为db_b,所有者为usre_b。

环境准备:
1.建立用户user_a及user_b并让他们有“可以创建数据库对象”的权限,密码与用户名
相同。

a.用管理员帐号enterprisedb登陆数据库
b.右键点击:“登陆角色”->“新建登陆角色”
i.属性
ii.角色权限
c.最终得到
2.使用user_a链接数据库并生成测试数据
a.点击:“文件”->“新建服务器”,并填入以下信息,然后点击“确定”,保存。

b.右键点击:“服务器” ->“PPAS_local:5444(user_a)”-> “数据库”,选择“新建数据
库”
填写“名称”、“所有者”后点击“确定”
c.右键点击:“PPAS_local:5444(user_a)” -> “数据库”->“db_a”
d.然后点击:“工具”->“查询工具”,或
注意:右上方的“db_a在user_a@127.0.0.1:5444”
此处说明当前所有SQL操作都是通过user_a用户登陆到127.0.0.1:5444的db_a数据库中执行的
e.在Query窗口中输入以下SQL,并点击运行
CREATE TABLE table1 (a int);
INSERT INTO table1 VALUES(1);
INSERT INTO table1 VALUES(2);
INSERT INTO table1 VALUES(3);
INSERT INTO table1 VALUES(4);
3.备份数据库db_a
a.右键点击“PPAS_local:5444(user_a)”->“数据库”->“db_a”->“备份”
b.输入“文件名”,点击“确定”
4.使用user_b链接数据库
a.建立新的数据库服务器连接
b.右键点击:“服务器” ->“PPAS_local:5444(user_b)”-> “数据库”,选择“新建数据
库”
5.通过db_a.backup文件恢复数据库db_b
a.右键点击: “PPAS_local:5444(user_b)”-> “数据库”->“db_b”,选择“恢复”
b.输入“文件名”,点击“确定”
c.在“消息”中会显示以下信息
/opt/PostgresPlus/9.0AS/bin/pg_restore --host 127.0.0.1 --port 5444 --username "user_b" --dbname "db_b" --verbose "/tmp/db_a.backup"
pg_restore: 为恢复数据库与数据库联接
pg_restore: 创建 SCHEMA public
pg_restore: 创建 COMMENT SCHEMA public
pg_restore: 创建 TABLE table1
pg_restore: [归档 (db)] PROCESSING TOC 时错误:
pg_restore: [归档 (db)] 错误来自 TOC 记录 2642; 1259 20184 TABLE table1 user_a
pg_restore: [归档 (db)] could not execute query: ERROR: must be member of role "user_a"
Command was: ALTER TABLE public.table1 OWNER TO user_a;
注意此处:由于当前操作用户为user_b因此无法将数据库对象的拥有者设为user_a,因此系统会默认将此数据库对象的拥有者设为user_b,这也就是我们所需要的效果。

pg_restore: 为表 "table1" 恢复数据
pg_restore: 为 SCHEMA public 设置属主和权限
pg_restore: 为 COMMENT SCHEMA public 设置属主和权限
pg_restore: 为 ACL public 设置属主和权限
pg_restore: WARNING: no privileges could be revoked for "public"
pg_restore: WARNING: no privileges could be revoked for "public"
pg_restore: WARNING: no privileges were granted for "public"
pg_restore: WARNING: no privileges were granted for "public"
pg_restore: 为 TABLE table1 设置属主和权限
pg_restore: 为 TABLE DATA table1 设置属主和权限
警告: 恢复中忽略错误: 1
进程退出并返回 1
通过以上操作后,原user_a所拥有的db_a数据库,全部迁移到了db_b中。

db_b的拥有者为user_b,同时在db_b下所有数据库对象的拥有者也将变成user_b。

相关文档
最新文档