DB2 - Sao lưu và phục hồi

Chương này mô tả các phương pháp sao lưu và khôi phục cơ sở dữ liệu.

Giới thiệu

Các phương pháp sao lưu và phục hồi được thiết kế để giữ an toàn cho thông tin của chúng tôi. Trong Giao diện dòng lệnh (CLI) hoặc Giao diện người dùng đồ họa (GUI) sử dụng các tiện ích sao lưu và phục hồi, bạn có thể sao lưu hoặc khôi phục dữ liệu của cơ sở dữ liệu trong DB2 UDB.

Ghi nhật ký

Các tệp nhật ký bao gồm nhật ký lỗi, được sử dụng để khôi phục từ các lỗi ứng dụng. Các bản ghi lưu giữ hồ sơ về những thay đổi trong cơ sở dữ liệu. Có hai kiểu ghi nhật ký như mô tả bên dưới:

Ghi nhật ký vòng tròn

Đây là một phương pháp mà các bản ghi giao dịch cũ được ghi đè khi có nhu cầu cấp phát một tệp nhật ký giao dịch mới, do đó xóa chuỗi các tệp nhật ký và sử dụng lại chúng. Bạn chỉ được phép sao lưu toàn bộ ở chế độ ngoại tuyến. tức là, cơ sở dữ liệu phải ngoại tuyến để thực hiện sao lưu đầy đủ.

Ghi nhật ký lưu trữ

Chế độ này hỗ trợ Sao lưu trực tuyến và khôi phục cơ sở dữ liệu bằng cách sử dụng các tệp nhật ký được gọi là khôi phục cuộn chuyển tiếp. Chế độ sao lưu có thể được thay đổi từ vòng tròn sang lưu trữ bằng cách đặt logretain hoặc userexit thành BẬT. Để ghi nhật ký lưu trữ, cơ sở dữ liệu cài đặt sao lưu yêu cầu một thư mục có thể ghi được cho quá trình DB2.

Sao lưu

Sử dụng Backupbạn có thể sao chép toàn bộ cơ sở dữ liệu. Bản sao lưu này bao gồm các tệp hệ thống cơ sở dữ liệu, tệp dữ liệu, tệp nhật ký, thông tin điều khiển, v.v.

Bạn có thể sao lưu khi làm việc ngoại tuyến cũng như trực tuyến.

Sao lưu ngoại tuyến

Syntax: [Để liệt kê các ứng dụng / cơ sở dữ liệu đang hoạt động]

db2 list application

Output:

Auth Id  Application    Appl.      Application Id                                                
DB       # of   
         Name           Handle              
Name    Agents  
-------- -------------- ---------- ---------------------
----------------------------------------- -------- -----  
DB2INST1 db2bp          39         
*LOCAL.db2inst1.140722043938                                   
ONE      1

Syntax:[Để buộc ứng dụng bằng ứng dụng. Id được xử lý]

db2 "force application (39)"

Output:

DB20000I  The FORCE APPLICATION command completed 
successfully.  

DB21024I  This command is asynchronous and may not 
be effective immediately.

Syntax: [Để chấm dứt Kết nối Cơ sở dữ liệu]

db2 terminate

Syntax: [Để hủy kích hoạt Cơ sở dữ liệu]

db2 deactivate database one

Syntax: [Để lấy tệp sao lưu]

db2 backup database <db_name> to <location>

Example:

db2 backup database one to /home/db2inst1/

Output:

Backup successful. The timestamp for this backup image is : 
20140722105345

Sao lưu trực tuyến

Để bắt đầu, bạn cần thay đổi chế độ từ Circular logging đến Archive Logging.

Syntax: [Để kiểm tra xem cơ sở dữ liệu đang sử dụng ghi nhật ký vòng tròn hay lưu trữ]

db2 get db cfg for one | grep LOGARCH

Output:

First log archive method (LOGARCHMETH1) = OFF  
 Archive compression for logarchmeth1  (LOGARCHCOMPR1) = OFF 
 Options for logarchmeth1              (LOGARCHOPT1) =   
 Second log archive method             (LOGARCHMETH2) = OFF  
 Archive compression for logarchmeth2  (LOGARCHCOMPR2) = OFF  
 Options for logarchmeth2              (LOGARCHOPT2) =

Trong kết quả đầu ra ở trên, các giá trị được đánh dấu là [logarchmeth1 và logarchmeth2] ở chế độ tắt, có nghĩa là cơ sở dữ liệu hiện tại ở chế độ "CIRCULLAR LOGGING". Nếu bạn cần làm việc với chế độ 'ARCHIVE LOGGING', bạn cần thay đổi hoặc thêm đường dẫn trong các biến logarchmeth1 và logarchmeth2 có trong tệp cấu hình.

Cập nhật logarchmeth1 với thư mục lưu trữ bắt buộc

Syntax: [Để tạo thư mục]

mkdir backup 
mkdir backup/ArchiveDest

Syntax: [Để cung cấp quyền của người dùng cho thư mục]

chown db2inst1:db2iadm1 backup/ArchiveDest

Syntax: [Để cập nhật cấu hình LOGARCHMETH1]

db2 update database configuration for one using LOGARCHMETH1 
'DISK:/home/db2inst1/backup/ArchiveDest'

Bạn có thể sao lưu ngoại tuyến để đảm bảo an toàn, kích hoạt cơ sở dữ liệu và kết nối với nó.

Syntax: [Để sao lưu trực tuyến]

db2 backup database one online to 
/home/db2inst1/onlinebackup/ compress include logs

Output:

db2 backup database one online to 
/home/db2inst1/onlinebackup/ compress include logs

Xác minh tệp sao lưu bằng lệnh sau:

Syntax:

db2ckbkp <location/backup file>

Example:

db2ckbkp 
/home/db2inst1/ONE.0.db2inst1.DBPART000.20140722112743.001

Liệt kê lịch sử của các tệp sao lưu

Syntax:

db2 list history backup all for one

Output:

List History File for one 
  
Number of matching file entries = 4 
 
Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  
Backup ID  
 -- --- ------------------ ---- --- ------------ ------------ 
 --------------
  B  D  20140722105345001   F    D  S0000000.LOG S0000000.LOG 

 ------------------------------------------------------------ 
 ----------------   
 
 Contains 4 tablespace(s): 
 00001 SYSCATSPACE  
 
 00002 USERSPACE1
 
 00003 SYSTOOLSPACE 
 
 00004 TS1 
  ------------------------------------------------------------ 
  ---------------- 
  Comment: DB2 BACKUP ONE OFFLINE  
  
 Start Time: 20140722105345  
 
   End Time: 20140722105347
   
     Status: A
 ------------------------------------------------------------ 
 ---------------- 
 EID: 3 Location: /home/db2inst1 

 
 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  
 Backup ID
 -- --- ------------------ ---- --- ------------ ------------ 
 --------------  
  B  D  20140722112239000   N       S0000000.LOG S0000000.LOG   
 ------------------------------------------------------------ 
 ------------------------------------------------------------- 
 ------------------------------- 
 
 Comment: DB2 BACKUP ONE ONLINE  
 
 Start Time: 20140722112239 
 
   End Time: 20140722112240  
   
     Status: A 
 ------------------------------------------------------------ 
 ----------------  
  EID: 4 Location: 
SQLCA Information 
 
 sqlcaid : SQLCA     sqlcabc: 136   sqlcode: -2413   sqlerrml: 0 
 
 sqlerrmc:   
 sqlerrp : sqlubIni  
 sqlerrd : (1) 0                (2) 0                (3) 0 
 
           (4) 0                (5) 0                (6) 0  
		   
 sqlwarn : (1)      (2)      (3)      (4)        (5)       (6)  
 
           (7)      (8)      (9)      (10)       (11)  
 sqlstate: 
 
 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  
 Backup ID
  -- --- ------------------ ---- --- ------------ ------------ 
  -------------- 
   B  D  20140722112743001   F    D  S0000000.LOG S0000000.LOG   
 
 ------------------------------------------------------------ 
 ---------------- 
 Contains 4 tablespace(s): 
 
 00001 SYSCATSPACE 
 
 00002 USERSPACE1 
 
 00003 SYSTOOLSPACE 
 
 00004 TS1
  ------------------------------------------------------------- 
  ---------------- 
  Comment: DB2 BACKUP ONE OFFLINE 
  
 Start Time: 20140722112743 
 
   End Time: 20140722112743 
   
     Status: A 
 ------------------------------------------------------------- 
  ---------------- 
 EID: 5 Location: /home/db2inst1 
 
 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log 
 Backup ID   
  ------------------------------------------------------------- 
  ----------------
  
R  D  20140722114519001   F                                
20140722112743 

 ------------------------------------------------------------ 
 ----------------  
 Contains 4 tablespace(s):  
 
 00001 SYSCATSPACE 
 
  00002 USERSPACE1 
  
 00003 SYSTOOLSPACE  
 
 00004 TS1
 ------------------------------------------------------------ 
 ----------------  
Comment: RESTORE ONE WITH RF
  
 Start Time: 20140722114519 
 
   End Time: 20140722115015  
     Status: A  
	 
 ------------------------------------------------------------ 
 ----------------  
  EID: 6 Location:

Khôi phục cơ sở dữ liệu từ bản sao lưu

Để khôi phục cơ sở dữ liệu từ tệp sao lưu, bạn cần làm theo cú pháp đã cho:

Syntax:

db2 restore database <db_name> from <location> 
taken at <timestamp>

Example:

db2 restore database one from /home/db2inst1/ taken at 
20140722112743

Output:

SQL2523W  Warning!  Restoring to an existing database that is 
different from  
 
the database on the backup image, but have matching names. 
The target database  
 
will be overwritten by the backup version.  The Roll-forward 
recovery logs

associated with the target database will be deleted.  

Do you want to continue ? (y/n) y 
 
DB20000I  The RESTORE DATABASE command completed successfully.

Cuộn chuyển tiếp tất cả các nhật ký nằm trong thư mục nhật ký, bao gồm các thay đổi mới nhất ngay trước khi ổ đĩa bị lỗi.

Syntax:

db2 rollforward db <db_name> to end of logs and stop

Example:

db2 rollforward db one to end of logs and stop

Output:

Rollforward Status  
 Input database alias                   = one  
 Number of members have returned status = 1  
 Member ID                              = 0  
 Rollforward status                     = not pending  
 Next log file to be read               =  
 Log files processed                    = S0000000.LOG - 
 S0000001.LOG  
 Last committed transaction            = 2014-07-22- 
 06.00.33.000000 UTC  
DB20000I  The ROLLFORWARD command completed successfully.