日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux postgres恢复数据库,从纯文本格式的备份文件恢复数据库

發(fā)布時間:2023/12/15 linux 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux postgres恢复数据库,从纯文本格式的备份文件恢复数据库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

六、從純文本格式的備份文件恢復數(shù)據(jù)庫

下面我們詳細介紹如何使用psql程序從一個純文本格式的備份文件恢復數(shù)據(jù)庫。

注意:如果您使用的是Postgres Plus Advanced Server的話,那么可以使用edb-psql程序。

上面,我們?yōu)閿?shù)據(jù)庫sample建立了一個純文本格式的備份文件,即sample_backup,之后我們要用它來恢復該示例數(shù)據(jù)庫。

第一步:登錄到Postgres Plus數(shù)據(jù)庫服務器所在的計算機。在該計算機上任何有效的帳戶都可以。

第二步:如果想把數(shù)據(jù)庫恢復到建立備份文件的數(shù)據(jù)庫集群之外的數(shù)據(jù)庫集群的話,或者從數(shù)據(jù)庫集群中刪除了角色的話,那么要確保制作備份文件時數(shù)據(jù)庫對象屬主的所有的角色名稱都存在于用來恢復備份文件的數(shù)據(jù)庫集群中。

注意:如果制作備份文件時不知道數(shù)據(jù)庫對象屬于哪些角色,您可以使用文本編輯程序搜索ALTER object OWNER TO role語句,下面是些例子:

ALTERPROCEDURAL LANGUAGE plpgsql OWNERTOpostgres;ALTERTYPEpublic.emp_query_type OWNERTOpostgres;ALTERFUNCTIONpublic.emp_comp(p_sal numeric, p_comm numeric) OWNERTOpostgres;

您可以通過psql程序連接到數(shù)據(jù)庫集群,然后運行\(zhòng)dg命令列出當前存在于數(shù)據(jù)庫集群中的角色,如下所示:

$ cd/opt/PostgresPlus/8.4SS/bin

$ ./psql-d postgres-U postgres

Passwordforuserpostgres:

psql (8.4.1)

Type "help"forhelp.

postgres=# \dg

Listofroles

Role name|Attributes|Memberof-----------+-------------+-----------postgres|Superuser|{}

:Createrole

:CreateDB

如果您需要創(chuàng)建角色的話,可以使用CREATE ROLE語句。

注意:如果用來恢復數(shù)據(jù)庫對象的數(shù)據(jù)庫集群中沒有該數(shù)據(jù)庫對象原屬主的角色,那么當ALTER語句無法指定該屬主時,就會顯示一個出錯信息。當執(zhí)行恢復操作時,該數(shù)據(jù)庫對象最終將分配給psql程序的-U選項指定的角色。

第三步:保證在用于恢復數(shù)據(jù)庫的數(shù)據(jù)庫集群中沒有與制作備份的數(shù)據(jù)庫同名的數(shù)據(jù)庫。

注意:如果不知道制作備份文件的數(shù)據(jù)庫的名稱,您可以使用文本編輯程序搜索CREATE DATABASE語句,下面舉例說明:

CREATEDATABASEsampleWITHTEMPLATE=template0 ENCODING='UTF8'LC_COLLATE='en_US.UTF-8'LC_CTYPE='en_US.UTF-8';

您可以通過psql程序連接到數(shù)據(jù)庫集群,然后運行\(zhòng)l命令列出當前存在于數(shù)據(jù)庫集群中的數(shù)據(jù)庫,如下所示:

$ cd/opt/PostgresPlus/8.4SS/bin

$ ./psql-d postgres-U postgres

Passwordforuserpostgres:

psql (8.4.1)

Type "help"forhelp.

postgres=# \l

Listofdatabases

Name|Owner|Encoding|Collation|Ctype|Accessprivileges-----------+----------+----------+-------------+-------------+-----------------------postgres|postgres|UTF8|en_US.UTF-8|en_US.UTF-8|template0|postgres|UTF8|en_US.UTF-8|en_US.UTF-8|=c/postgres

: postgres=CTc/postgres

template1|postgres|UTF8|en_US.UTF-8|en_US.UTF-8|=c/postgres

: postgres=CTc/postgres

(3rows)

如果數(shù)據(jù)庫集群中的一個數(shù)據(jù)庫與用于建立備份文件的數(shù)據(jù)庫同名,那么您現(xiàn)在就可以使用ALTER DATABASE語句的RENAME TO選項給現(xiàn)有的數(shù)據(jù)庫改名,或者使用DROP DATABASE語句刪除它。

注意:在恢復操作期間,如果該數(shù)據(jù)庫集群含有一個與制作備份文件的數(shù)據(jù)庫同名的數(shù)據(jù)庫的話,那么當CREATE DATABASE語句無法用同一名稱新建數(shù)據(jù)庫時,就會顯示一個出錯信息。這時,psql程序?qū)默F(xiàn)有的數(shù)據(jù)庫中的備份文件來重新創(chuàng)建各數(shù)據(jù)庫對象。這很可能導致生成的數(shù)據(jù)庫中包含不希望有的數(shù)據(jù)庫對象,并且數(shù)據(jù)庫設(shè)置也不正確。

第四步::使用cd命令將當前工作目錄切換至Postgres Plus所在的bin目錄。

cd/opt/PostgresPlus/8.4SS/bin

注意:如果您使用的是Postgres Plus Advanced Server的話,請將當前工作目錄通過cd命令切換至dbserver/bin。

第五步:運行psql程序,并給出要連接(使用-d選項)的數(shù)據(jù)庫的名稱、具有超級用戶特權(quán)的角色(使用-U選項)和備份文件的目錄路徑(使用-f選項)。

注意:用-d選項規(guī)定的數(shù)據(jù)庫對恢復操作沒有影響。psql程序需要先通過數(shù)據(jù)庫連接建立一個會話,然后才能處理備份文件中的SQL語句和psql命令。

./psql-d postgres-U postgres-f/home/user/sample_backup

這樣就會從備份文件sample_backup中重新創(chuàng)建數(shù)據(jù)庫sample。下面給出psql程序處理備份文件中的SQL語句和psql命令時所顯示的部分消息:

$ ./psql-d postgres-U postgres-f/home/user/sample_backup

Passwordforuserpostgres:SETSETSETSETSETSETCREATEDATABASEALTERDATABASEpsql (8.4.1)

You are now connectedtodatabase"sample".

總結(jié)

以上是生活随笔為你收集整理的linux postgres恢复数据库,从纯文本格式的备份文件恢复数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。