當前位置:首頁 » 數據倉庫 » linuxsybase資料庫備份
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

linuxsybase資料庫備份

發布時間: 2023-01-15 17:37:28

Ⅰ sybase ase linux 怎麼備份

Sybase Ase 12.5 for Linux全攻略

Sybase Ase 12.5 for Linux全攻略

一、創建資料庫
但是在開始之前,很有必要定義用戶資料庫所需要的存儲區域,而不要在伺服器默認的主設備(master)上創建用戶資料庫.

創建資料庫設備:通過sybase安裝過程創建了master和sybsystemprocs,所有其他的資料庫設備則是通過 disk init 命令來創建。我們必須保證sybase的用戶對欲創建的設備的目錄具有讀寫許可權,否則就無法創建成功。先以sybase用戶登陸linux系統(資料庫是以sybase用戶安裝的,關於安裝和初試配置,請參照「Redflag Server 4搭建sybase」一文),進入sybase用戶的主目錄 /opt/sybase,創建目錄userdata;啟動資料庫服務,用sybase的isql連接資料庫,然後執行disk init 來完成此項操作。
[sybase@sybase sybase]$ cd ASE-12_5/install
[sybase@sybase install]$ ./startserver //啟動sybase伺服器
[sybase@sybase sybase]$ cd
[sybase@sybase sybase]$ mkdir userdata //創建目錄用於存放用戶資料庫
[sybase@sybase sybase]$ cd /OCS-12_5/bin
[sybase@sybase bin]$ ./isql –U sa –S SYBASE //連接資料庫伺服器,我的數據//庫伺服器名稱為SYBASE,sa
//密碼為空
[sybase@sybase bin]$ ./isql -U sa -S SYBASE //下面是回顯
保密字:
Msg 2401, Level 11, State 2:
Server 'SYBASE':
Character set conversion is not available between client character set 'gb18030'
and server character set 'iso_1'.
No conversions will be done.
Msg 4017, Level 16, State 1:
Server 'SYBASE':
Neither language name in login record 'chinese' nor language name in syslogins
'' is an official language name on this SQL Server. Using server-wide
default 'us_english' instead. //回顯到此,進入客戶操作模式
1> disk init //如果輸錯了,按「Ctrl」+」back space」刪除
2> name=userdev, //命名最好便於識別為佳
3> physname=」/opt/sybase/userdata/userdev.dat」, //要用絕對路徑
4> size=」500M」
5> go
1> disk init //給日誌文件分配設備
2> name=logdev,
3> physname=」/opt/sybase/userdata/logdev.dat」,
4> size=」50M」
5> go

更改默認設備:如本文開頭部分所言,為了防止用戶資料庫被分配到資料庫系統主設備master上,應該在安裝完資料庫後修改默認設備—安裝完sybase ASE後,master是唯一的默認設備。Sybase建議,master設備只應該提供給系統資料庫而不是用戶資料庫。因此,對於用戶資料庫,我們應當單獨創建設備,並且把用戶設備設置成默認狀態。上一步我們已經創建了用戶設備「userdev」和「logdev」.其過程如下:
1> sp_diskdefault 『master』, 『defaultoff』 //取消master的默認設備資格
2> go
1> sp_diskdefault 『userdev』, 『defaulton』 //設定uerdev為默認設備
2> go
1> sp_diskdefault 『logdev』, 『defaulton』 //設定logdev為默認設備
2> go
在後面創建用戶資料庫的過程中,如果不指定資料庫設備,則該用戶資料庫理所當然地創建在默認設備。

創建資料庫:本資料庫創建在設備 userdev上,而在分開的設備(logdev)上創建資料庫日誌。
1> create database mydatabase //創建一個名為mydatabase的資料庫
2> on userdev = 「50M」 //資料庫的存儲空間為50M,資料庫設備
//是userdev,而不是master
3> log on logdev=」10M」 //日誌文件的存儲空間為10M4> go
也可以用命令 create database mydatabase 來創建用戶資料庫mydatabase,這個資料庫也會默認的創建在設備userdev上,日誌文件也創建在userdev,但不幸的的是,用戶創建的這個資料庫將只有2M的容量,恐怕這不是創建者所期望的。因此,不管是Sybase還是我本人,都強烈建議使用上表的過程創建用戶資料庫,以便於這個資料庫可以滿足真實的應用場景。創建完資料庫後,我們很想知道創建的這個資料庫到底是怎麼一個狀況?通過系統存儲過程-sp_helpdb來獲得資料庫的各種信息。下面是我的某個sybase伺服器的範例:
1> sp_helpdb
2> go
name db_size owner dbid
created
status
------------------------ ------------- ------------------------ ------
------------------
------------------------------------------------------------------------------------------------------
master 12.0 MB sa 1
Jun 28, 2005
mixed log and data
model 4.0 MB sa 3
Jun 28, 2005
mixed log and data
myfirstdatabase 110.0 MB sa 4
Jul 08, 2005
no options set
secdatadb 98.0 MB sa 5
Jul 08, 2005
no options set
sybsystemdb 4.0 MB sa 31513
Jun 28, 2005
mixed log and data
sybsystemprocs 120.0 MB sa 31514
Jun 28, 2005
trunc log on chkpt, mixed log and data
tempdb 4.0 MB sa 2
Aug 13, 2005
select into/bulk/pllsort, trunc log on chkpt, mixed log and data

(1 row affected)
(return status = 0)
1>
在創建用戶資料庫時,應該預留足夠大的空間,以便能夠保留將來輸入的所有數據。但是也不要把資料庫定義得太大,以免在將來恢復數據時產生麻煩。究竟需要定義多大的空間才算合適,這需要資料庫管理員多次試驗才可以決定的。一個經驗是-低估一個資料庫的大小比高估要好,如果資料庫空間太小了,可以很容易的擴充資料庫的空間,如果空間過大,則非常麻煩。這里,我們來修改一下前面創建的資料庫的空間大小,過程如下:
1> alter database mydatabase
2> on userdev=」1024M」 //由50M變成1G
3> log on logdev=」50M」 //由10M變成50M4> go

goodcjh2005 2005-12-21 02:50

繼續

二、資料庫的管理
設置資料庫管理員密碼:在安裝完sybase ASE資料庫後,資料庫管理員的默認管理員密碼為空,基於安全考慮,必須為資料庫管理員賬號設置密碼。先以賬號sybase登錄系統,然後啟動Sybase資料庫,用isql連接資料庫伺服器(操作過程如前面「創建資料庫設備」一節),接著執行下面的操作:
1> sp_password null , dr5623H //設置新密碼為「dr5623H」2> go
在退出資料庫,下一次客戶端連接資料庫時,提示用戶輸入密碼。

用戶和授權:sybase ASE伺服器提供一種嚴密的體系來保障數據的安全,並且使數據的保護級別達到非常精細的程度。在通常情況下,資料庫伺服器不是只給一個用戶sa來使用,為了讓資料庫滿足實際需求,需要在 sybase 資料庫里添加賬號/用戶,為添加的用戶分配適合的許可權。這個操作分以下幾步進行:
1、 添加資料庫系統的注冊賬號。執行存儲過程sp_addlogin來完成資料庫注冊賬號的添加,如 exec sp_addlogin sery , d7#W6g , mydatabase 表示添加一個注冊賬號sery,密碼是「d7#W6g」,登錄到默認資料庫為「mydatabase」。這個操作執行完畢後,將在master資料庫的syslogins表中增加一行紀錄。添加資料庫系統注冊賬號屬於伺服器級的安全,換句話說就是這個賬號只能連接資料庫伺服器,但沒有訪問用戶資料庫的權力。
2、 添加資料庫用戶。執行存儲過程sp_adser將用戶直接添加到資料庫,添加資料庫用戶屬於資料庫級的安全,這時才可以以用戶的身份訪問用戶資料庫。這個操作執行完畢後,將在允許訪問的資料庫的sysusers表中添加紀錄。
3、 授權。能夠訪問資料庫但並不意味可以訪問其中的數據,有時需要具備單個資料庫對象的相應許可,才可以選取、更改資料庫所屬表中的數據信息或執行一個存儲過程。這是屬於對象訪問級的安全。授權的格式為: grant <許可權列表> on <表名> to <角色/用戶>。這個操作執行完畢後,會向sysprotects表中添加紀錄。
接著,我們通過下面的事例來總結這3個步驟:
[sybase@sybase sybase]$ cd ASE-12_5/install
[sybase@sybase install]$ ./startserver //啟動sybase伺服器
[sybase@sybase sybase]$ cd /OCS-12_5/bin
[sybase@sybase bin]$ ./isql –U sa –S SYBASE –P dr5623H
1> sp_addlogin sery , d7#W6g , mydatabase
2> go
1> use mydatabase
2> go
1> sp_adser sery
2> go
1> grant select ,insert, update on custom to sery
2> go
1> shutdown2> go
[sybase@sybase bin]$ ./isql –U sery –S SYBASE –P d7#W6g //以用戶sery登錄數
//據庫mydatabase
1>
為了便於維護和管理資料庫,最好讓注冊名和資料庫用戶名使用相同的名稱。另外,注冊用戶的刪除、資料庫用戶的刪除以及授權的刪除都是比較簡單的了,請參照下面的操作:
1> revoke select ,insert, update on custom from sery
2> go
1> sp_dropuser sery
2> go
1> sp_droplogin sery2> go
需要注意的是,上述操作除用戶sery登錄資料庫外,都是在sa下完成的。

三、備份和恢復
災難的發生是不可預料的,作為資料庫管理員,可以通過備份數據來抵禦這些風險。創建備份和還原計劃可能需要大量的時間和精力,但這是值得的,否則一旦災難發生,後果真的不堪設想。因此定期備份資料庫是一個重要的任務,也是一個極好的習慣。

備份的策略和類型:一天備份一次資料庫和備份多次事務日誌是個值得推薦的選擇,實際上,很多系統管理員也是這樣執行的。資料庫備份是完全備份,而事務日誌的備份是增量備份,在做一個恢復備份計劃時,將完全備份和增量備份結合起來是十分必要的。

備份:在ASE10以前的版本,備份是由資料庫伺服器直接執行,這會對導致大量的系統資源爭用而引起伺服器處理性能下降。備份伺服器是伺服器上的一個單獨Open server應用程序,該程序可以直接訪問資料庫設備,在資料庫伺服器運行一個備份伺服器 backup server,定會帶來很多額外的好處。所幸的是我們在安裝 sybase ASE 12_5時已經把備份伺服器默認安裝好了,這里只需要啟用它(.以sybase用戶登陸系統,執行命令 #/opt/sybase/ASE-12_5/install/startserver –r RUN_SYBASE_BACKUP啟動sybase備份伺服器)。
備份的過程還是有點繁復,我們還是分步驟來進行吧!
1、創建備份存儲設備。為安全起見,最好把資料庫備份到另外的磁碟,為此,准備一個大的硬碟,分好區後(一個分區)把它掛接到文件系統,再進行創建設備的操作。當然sybase也支持直接使用原始設備。
[sybase@root /]# mkdir –p /sybbackup
[sybase@root /]# chown sybase.sybase /sybbackup
[sybase@root /]# mount /dev/sdc1 /sybbackup //掛接新的硬碟分區到///sybbackup
[sybase@root /]# su sybase
[sybase@sybase sybase]$ cd /sybbackup
[sybase@sybase sybbackup]$ touch bk_mydatabase.dat
[sybase@sybase sybbackup]$ touch bk_log.dat

[sybase@sybase sybase]$ cd ASE-12_5/install
[sybase@sybase install]$ ./startserver //啟動sybase伺服器
[sybase@sybase sybase]$ cd /OCS-12_5/bin
[sybase@sybase bin]$ ./isql –U sa –S SYBASE –P dr5623H
1>sp_admpdevice 『disk』,『bk_mydatabase』,『/sybbackup/bk_sybbackup.dat』
1> go //創建備份設備bk_mydatabase
1> sp_admpdevice 『disk』 , 『bk_log』 , 『/sybbackup/bk_log.dat』
2> go //日誌文件的存儲位置
2、備份資料庫。使用mp database 命令備份資料庫數據。
1> mp database mydatabase to 『bk_mydatabase』 with init2> go
3、 備份事務日誌。使用命令mp transaction.
1> mp transaction mydatabase to 『bk_log』2> go
如果有多個資料庫,則需要多次執行備份資料庫和備份事務日誌操作。備份完成後,非常有必要對備份數據進行驗證,如果不這樣做將可能發生可怕的後果。筆者在此建議把備份文件多做幾份拷貝,放置在不同的地理位置,就算某天失火把伺服器和備份燒毀了也可起死回生。

資料庫恢復:可能需要經常備份資料庫和事務日誌,但不必經常進行資料庫恢復操作。只有在資料庫發生意外、資料庫移植、試驗等情況下才需要進行恢復操作。與備份相對應,恢復也可分幾步進行。需要注意的是,在資料庫恢復期間,不要讓用戶連接資料庫。
1、 創建資料庫。與要恢復的資料庫同名,如果是原資料庫損壞,需要先把資料庫刪除,然後再創建同名資料庫。
2、 恢復資料庫。使用命令load database命令來恢復資料庫。
1> load database mydatabase from 『bk_mydatabase』2> go
3、 恢復事務日誌。使用命令load transaction命令來恢復事務日誌。
1> load transaction mydatabase from 『bk_log』
2> go
4、 聯機資料庫。事務日誌裝載完畢之後,才可以使資料庫成為聯機狀態。
1> online database mydatabase2> go

Ⅱ 如何對Sybase SQL Anywhere資料庫進行數據備份和數據恢復

恢復整個資料庫

首先,如果要恢復的資料庫是含有授權表的mysql資料庫,將需要使用--skip-grant-tables選項運行伺服器。否則,伺服器將抱怨無法找到授權表。在恢復表之後,執行mysqladmin flush-privileges 來告訴伺服器載入授權表,並用它們啟動。

將原資料庫目錄的內容拷貝到其他的地方。例如,您可能會在稍後用它們進行崩潰表的事後分析檢查(post-mortem examination)。

用最新的備份文件重新載入資料庫。如果您打算使用由mysqlmp 載入的文件,則需要將它們作為mysql的輸入。如果打算使用從資料庫中直接拷貝的文件(如,用tar 或c p),則將它們直接拷貝回到該資料庫目錄中。但是,在這種情況下,應該在拷貝這些文件之前關閉伺服器,然後再重新啟動它。

用更新日誌重做在進行備份後又修改了資料庫表的查詢。對於所有可用的更新日誌,可使用它作為mysql的輸入。指定--one-database 選項,使mysql只對想要恢復的資料庫執行查詢。如果您知道需要使用所有的更新日誌文件,可在包含日誌的目錄中使用下列命令:

% ls-t-r-l update.(0-9)* | xargs cat | mysql--one-database db_name

ls 命令產生更新日誌文件的單列列表,更新日誌文件根據伺服器生成的順序進行排序(要知道,如果您修改了其中的任何文件,排序的順序都將改變,這將導致更新日誌按錯誤的順序使用)。

您很可能必須使用某些更新日誌。例如,如果自備份以來所產生的日誌命名為update.392、pdate.393 等等,可以重新運行它們中的命令:

% mysql--one-database db_name < updata.392
% mysql--one-database db_name < updata.393


如果正在運行恢復並打算使用更新日誌恢復由於失策的DROP DATA BASE、DROPTABLE或DELETE 語句而丟失的信息,應確保先從更新日誌中刪除這些語句。

恢復單個的表

恢復單個表是很困難的。如果有通過mysqlmp 生成的備份文件並且它恰好不包含您想要的表數據,則需要抽取相關的行並用它們作為mysql的輸入,這部分較容易。困難的是抽取應用於該表的更新日誌的片段。您會發現: mysql_find_rows 實用程序對這方面有幫助,它可以從更新日誌中抽取多行查詢。

另一種可能性是用另一個伺服器恢復整個資料庫,然後將所要的該表的文件拷貝到原始資料庫中。這實際很容易!在將文件拷貝回資料庫目錄時,應確保原始資料庫的伺服器關閉。

Ⅲ linux系統中,sybase資料庫如何進行備份和恢復

在win7客戶端上使用isql連接linux伺服器上的sybase資料庫。
備份使用mp
database
資料庫名
to
備份路徑
恢復使用
load
database
資料庫名
from
備份路徑