使用db2 backup指令備份
使用db2 restore指令恢複
使用db2look提取資料庫結構DDL
用于資料移動的檔案格式
使用db2move導出全部資料
使用db2 export指令導出資料
使用db2move導入(import)資料
使用db2 import指令導入資料
1.使用db2 backup指令備份(testdb資料庫名,db2inst1執行個體名)
首先關閉所有到資料庫的連接配接,将資料庫置為“靜默”狀态:
$ db2 connect to testdb user db2inst1 using thepasswd
$ db2 quiesce database immediate force connections
$ db2 connect reset
現在可以開始備份了:
$ db2 backup database testdb to “/home/backup” user db2inst1 using thepasswd
解除資料庫的“靜默”狀态:
$ db2 connect to testdb user db2inst1 using thepasswd
$ db2 unquiesce database
$ db2 connect reset
說明:
以上指令将會把資料庫testdb備份到指定目錄 /home/backup下,是以請確定目前登陸使用者(db2inst1)對該目錄有讀寫的權限。
2.使用db2 restore指令恢複
相同庫名恢複:
$ db2 restore database testdb from “/home/backup”
說明:
這将會從指定的位置恢複資料庫testdb。
不同庫名恢複:
$ db2 restore database zwdb from “/home/db2inst1/finger” into wfyh
說明:
這個指令将會建立一個新庫,名為testdb_new,其結構、内容來自原先testdb的備份。
db2 restore database zwdb from “/data/20180717/shuju” taken at 20180717183305 on “/data/20180717/shuju” dbpath on “/zwdb” into fingerdb
db2指定需要還原的路徑
3.使用db2look提取資料庫結構DDL
su - db2inst1 (原執行個體使用者)
建立一個檔案夾
mkdir data
cd data
導出表結構:db2look –d testdb –e –o bak_db.sql
4.使用db2move導出全部資料
mkdir data
cd data
db2move testdb export –u db2inst1 –p thepasswd
說明:
這将會把資料庫testdb中的全部資料提取到目前目錄(data)中。每個表的内容都存儲在一個.ixf檔案中,每個.ixf檔案都有一個與之相對應的.msg檔案,.msg檔案是描述從表中導出資料時的資訊的。另外還有兩個檔案,db2move.lst用來記錄.ixf檔案、.msg檔案與表的一一對應關系,EXPORT.out記錄的是導出資料時的螢幕輸出。
5.使用db2 export指令導出資料
與上面提到的db2move的export功能不同,db2 export是一個更加細緻的導出工具,它支援三種資料檔案格式:DEL, WSF, IXF.
以下示範将資料庫testdb中表mytbl的資料導出,存儲在目錄 /home/backup 下。
建立到資料庫的連接配接:
$ db2
db2 => connect to testdb user db2inst1 using thepasswd
以DEL格式導出:
db2 => export to /home/backup/mytbl.txt of del select * from mytbl
以IXF格式導出:
db2 => export to /home/backup/mytbl.ixf of ixf select * from mytbl
注:若需要記錄導出過程中的message,使用:
db2 => export to /home/backup/mytbl.ixf of ixf messages /home/backup/mytbl.msg select * from mytbl
斷開連接配接:
db2 => connect reset
db2 => quit
6.使用db2move導入(import)資料
cd data
db2move testdb import –u db2inst1 –p thepasswd
存在的問題:
db2move import方式隻能導入“普通”的表,如果表中存在自增長的IDENTITY列,那麼使用db2move import時,會出錯。這是因為,如果IDENTITY列建立表的時候都是定義成always的話,那麼在導入資料的時候該列資料是不能被指派的,而是應該由系統生成,使用db2move無法導入這樣的表。對于這種含有IDENTITY列的表,隻能使用db2 import指令來進行導入,相關的參數是IDENTITYIGNORE,IDENTITYMISSING。我将在下一部分給出具體的指令操作。
7.使用db2 import指令導入資料
import和export是一對存在對應關系的指令,有一點不同的是,import支援四種格式:ASC, DEL, WSF, IXF, 而export隻支援三種(見上面相應部分的描述)。
以下示範将資料檔案/home/movedata/mytbl.ixf導入到資料庫testdb中。
$ db2
db2 => connect to testdb user db2inst1 using thepasswd
db2 => import from /home/movedata/mytbl.ixf of ixf insert into mytbl
db2 => commit work
db2 => connect reset
db2 => quit
若表中存在自增長的IDENTITY列,需要使用相應的參數才能導入,比如:
db2 => import from /home/movedata/mytbl2.ixf of ixf modified by identityignore insert into mytbl2
8.檢視資料庫中表:
db2 connect to testdb
db2 list tables
9.導出原資料庫表結構以及資料
su - db2izw (原執行個體使用者)
建立一個檔案夾
mkdir data
cd data
導出表結構:db2look –d zwdb –e –z db2izw –l –o whzw.sql
導出資料:db2move zwdb export
修改配置:修改db2move.lst裡面的執行個體名為導入資料庫的執行個體名
打包已導出表結構及資料:tar zcvf whzw.tar.gz data/
10.在新db2導入資料
将data.tar.gz包ftp到新伺服器上的執行個體使用者下
解壓tar xvf whzw.tar.gz
cd data
導入表結構:db2 –tvf whzw.sql
導入資料:db2move zwdb load -lo replace --把上述“db2move zwdb export “導出的資料導入到資料庫中并把相同的資料替換掉