Làm cách nào để sao lưu cơ sở dữ liệu IBM DB2 trực tuyến?


7

Tôi đã cố gắng sao lưu Cơ sở dữ liệu IBM DB2 (LUW) bằng lệnh này:

./db2 backup database DBEMP to /home/user1/db2bkup

Nhưng tôi nhận được tin nhắn này:

SQL1035N Cơ sở dữ liệu hiện đang được sử dụng. SQLSTATE = 57019

Sau đó, tôi đã thử điều này:

./db2 backup database DBEMP online to /home/user1/db2bkup

Và tôi nhận được tin nhắn này:

Sao lưu trực tuyến SQL2413N không được phép vì cơ sở dữ liệu không thể phục hồi hoặc điều kiện chờ sao lưu có hiệu lực.

Nó có nghĩa là gì? Có cách nào khác để sao lưu cơ sở dữ liệu trực tuyến? Tôi không thể dừng cơ sở dữ liệu vì nó đang được sử dụng.


đây là ghi chú của tôi trên db2 sao lưu và phục hồi, tôi đã cố gắng giải thích trong ngắn hạn câu trả lời bạn đang tìm kiếm và ghi chú như vậy hơn - amolnpujari.wordpress.com/2009/08/29/...
Amol Pujari

Câu trả lời:


9

Thật không may, không thể thực hiện sao lưu trực tuyến cơ sở dữ liệu DB2 nếu nó ở chế độ ghi nhật ký tròn , là mặc định cho cơ sở dữ liệu DB2 khi chúng được tạo.

Bạn có thể kiểm tra xem cơ sở dữ liệu của bạn có đang sử dụng ghi nhật ký hay không bằng cách phát hành:

./db2 get db cfg for dbemp | grep LOGARCH

Nếu cả hai tùy chọn LOGARCHMETH đều bị tắt ...

First log archive method       (LOGARCHMETH1) = OFF
Second log archive method      (LOGARCHMETH2) = OFF

... sau đó bạn sẽ cần thay đổi cấu hình cơ sở dữ liệu của mình để sử dụng ghi nhật ký lưu trữ trước khi thực hiện sao lưu. Tôi không chắc chắn 100% về điều này nhưng tôi tin rằng bạn sẽ cần phải khởi động lại cơ sở dữ liệu của mình và sao lưu ngoại tuyến trước khi bạn có thể bắt đầu sao lưu trực tuyến.

Có một tổng quan về cách thực hiện điều này trong tài liệu "cấu hình các tùy chọn ghi nhật ký cơ sở dữ liệu" của IBM .

Lưu ý rằng nếu bạn thay đổi từ ĐĂNG NHẬP CIRCULAR sang ĐĂNG NHẬP ARCHIVE, bạn sẽ cần phải biết phải làm gì với các tệp nhật ký lưu trữ của mình. Lưu trữ chúng trên SAN / NAS / Băng để cho phép khôi phục chuyển tiếp có thể là một ý tưởng thực sự tốt nếu dữ liệu này quan trọng với bạn.


1
Vì vậy, chúng ta chỉ cần thiết lập LOGARCHMETH1, phải không? Có bất kỳ nhược điểm hoặc phức tạp nào bằng cách thiết lập LOGARCHMETH1 không? Có phải tốt hơn khi sử dụng DISK hoặc TSM cho tham số LOGARCHMETH1?
null

1
Có khả năng TSM sẽ không được cài đặt và bạn sẽ muốn sử dụng DISK (Nếu bạn có dịch vụ Quản lý lưu trữ Tivoli (TSM) đang chạy, tôi khuyên bạn nên nói chuyện với những người chăm sóc nó). Nhược điểm của việc thiết lập ghi nhật ký lưu trữ là bạn sẽ cần bắt đầu duy trì (lưu trữ hoặc xóa) các tệp trong thư mục nhật ký lưu trữ mới của mình - điều đó cũng có nghĩa là DB2 có thêm một chút việc phải làm khi đến cuối nhật ký tập tin. Những lợi ích sẽ lớn hơn chi phí. Như Ian Bjorhovde đã đề xuất, sẽ là khôn ngoan khi đọc về cách sao lưu / phục hồi hoạt động chi tiết hơn một chút.
Nathan Jolly

1
Bạn đã đúng về việc cần sao lưu ngoại tuyến trước. Đối với việc quản lý nhật ký (và sao lưu), bạn thực sự có thể làm như vậy với (ba) tham số khác. AUTO_DEL_REC_OBJ nếu được đặt thành BẬT sẽ quản lý các bản sao lưu (đầy đủ) của bạn cả trực tuyến và ngoại tuyến và nhật ký lưu trữ của bạn. NUM_DB_BACKUPS cho DB2 biết có bao nhiêu bản sao lưu đầy đủ để giữ lại và REC_HIS_RETENTN cho DB2 biết bạn muốn giữ giá trị được đặt trong bao nhiêu ngày cho NUM_DB_BACKUPS. Chúng tôi sử dụng tại cửa hàng của chúng tôi. Chúng tôi đã thực hiện hai lần một ngày và ngoại tuyến mỗi tuần một lần. Chúng tôi giữ 3 bản sao lưu trong 2 ngày. Hoạt động tuyệt vời!
Chris Aldrich

1
Mục đích của sao lưu trực tuyến là vì tôi đang phát triển ứng dụng kết nối với máy chủ IBM DB2 từ xa cũng được nhiều nhà phát triển kết nối. Tôi muốn sao lưu cơ sở dữ liệu từ DB2 từ xa và khôi phục vào DB2 cục bộ (phiên bản Express-C) vì tôi muốn sử dụng DB2 cục bộ để phát triển. Đây không phải là một bản sao lưu cơ sở dữ liệu thông thường thường được thực hiện trong sản xuất. Vậy lệnh này đã đủ chưa? => db2 update db configuration for DBEMP using logarchmeth1 disk:F:/dbemp/archived_logs(lưu ý: HĐH máy của tôi là Windows)
null

1
Có, ngoại trừ việc bạn có thể cần phải đóng đĩa: F: / dbemp / archured_logs trong các dấu ngoặc đơn tùy thuộc vào cách hệ điều hành của bạn tương tác với dòng lệnh cho DB2. Tôi biết tôi phải vào AIX.
Chris Aldrich

4

Sao lưu trực tuyến yêu cầu cơ sở dữ liệu được kích hoạt để khôi phục tiếp theo. Tuy nhiên, đây không phải là mặc định khi bạn tạo cơ sở dữ liệu.

Để thực hiện việc này, bạn cần đặt tham số cấu hìnhLOGARCHMETH1 cơ sở dữ liệu . Khi bạn đã hoàn thành việc này, bạn sẽ cần thực hiện một bản sao lưu ngoại tuyến (nghĩa là không có người dùng nào có thể được kết nối).

Khi bạn đã hoàn thành các bước này, bạn sẽ có thể chạy các bản sao lưu trực tuyến theo ý muốn.

Bạn có thể muốn dành một chút thời gian để đọc phần Phục hồi dữ liệu của hướng dẫn Quản trị cơ sở dữ liệu DB2 để giúp bạn làm quen với Sao lưu / khôi phục DB2.


1
Vậy chúng ta chỉ cần đặt LOGARCHMETH1, phải không? Có bất kỳ sự phức tạp nào bằng cách thiết lập LOGARCHMETH1 không?
null
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.