Cơ sở dữ liệu dự phòng thường được khởi tạo bằng cách khôi phục lại một hình ảnh sao lưu của các cơ sở dữ liệu chính.. Một cách khác để thiết lập vận chuyển log là sử dụng một chương trì
Trang 1Chuẩn bị kỳ thi số 731 lấy chứng chỉ DBA (Quản trị cơ sở dữ liệu) DB2 9, Phần 7: Nhân bản tách (split mirror) và tính sẵn sàng cao và khôi phục sau
sự cố (HADR)
Michael Dang, Quản trị CSDL DB2, IBM
Sylvia Qi, Kiểm định chức năng, IBM Toronto Lab
Tóm tắt: Đây là bài cuối cùng trong một loạt bài gồm bảy hướng dẫn để giúp bạn
chuẩn bị cho kỳ thi 731 về Quản trị cơ sở dữ liệu DB2® 9 cho Linux®, UNIX®
và Windows™ Hướng dẫn này tập trung vào hai chủ đề có tính sẵn sàng nâng cao: Nhân bản tách và tính sẵn sàng cao và khôi phục sau sự cố (HADR) Với nhân bản tách bạn có thể khôi phục cơ sở dữ liệu bằng cách sử dụng các bản sao đĩa HADR (tính sẵn sàng cao và khôi phục sau sự cố) cung cấp hỗ trợ dự phòng lỗi, tương tự khả năng dự phòng lỗi được HACMP và Microsoft™ Cluster Server (máy chủ cụm của Microsoft) cung cấp
Trước khi bạn bắt đầu
Về loạt bài này
Nếu bạn đang chuẩn bị tham dự kỳ thi 731 lấy chứng chỉ DBA, bạn đã đến đúng chỗ một hướng dẫn tự học, giả định thế Loạt bài gồm bảy hướng dẫn chuẩn bị lấy chứng chỉ DB2 này trình bày các khái niệm chính mà bạn cần phải biết cho kỳ thi này Hãy làm bài tập ở đây và cố gắng giảm bớt những căng thẳng trong ngày thi
Về hướng dẫn này
Hướng dẫn này tập trung vào hai chủ đề tính sẵn sàng cao cao cấp: Nhân bản tách
và tính sẵn sàng cao và khôi phục sau sự cố (HADR) Kết hợp với hướng dẫn thứ
Trang 2sáu, tính sẵn sàng cao sao lưu và phục hồi, nó trình bày các mục tiêu trong phần sáu của kỳ thi, mang tên "Tính sẵn sàng cao" Bạn có thể xem các mục tiêu tại: http://www-03.ibm.com/certify/tests/obj731.shtml
Các mục tiêu
Trong hướng dẫn này, hãy tìm hiểu:
Khái niệm về tính sẵn sàng cao
Vận chuyển log hoạt động như thế nào
Nhân bản tách hoạt động như thế nào và cách sử dụng một phép nhân bản tách để tạo ra tính sẵn sàng cao như thế nào
HADR hoạt động như thế nào và cách thiết lập một hệ thống HADR như thế nào
Làm thế nào để cập nhật trực tuyến hệ thống của bạn bằng cách sử dụng các tham số cấu hình động
Các điều kiện cần trước
Để hiểu tài liệu được trình bày trong hướng dẫn này, bạn cần hiểu rõ những điều sau đây:
Trang 3 Môi trường DB2 (các tệp cấu hình của trình quản lý cơ sở dữ liệu, các tệp cấu hình cơ sở dữ liệu, các biến đăng ký DB2, v.v)
Sử dụng bộ xử lý dòng lệnh và các công cụ giao diện đồ họa (GUI) của DB2 để gọi các lệnh DB2
Các đối tượng DB2 khác nhau, chẳng hạn như các vùng bộ đệm, các không gian bảng (tablespaces), các bảng và các chỉ mục và v.v
Các phép SQL cơ bản có thể được thực hiện trên một cơ sở dữ liệu (các câu lệnh SQL UPDATE, INSERT, DELETE và SELECT)
Bạn cũng nên quen thuộc với các thuật ngữ sau đây:
Đối tượng: Bất kỳ thứ gì trong một cơ sở dữ liệu có thể được tạo ra hoặc
được thao tác với SQL (ví dụ các bảng, các khung nhìn, các chỉ mục, các gói)
Bảng: Một cấu trúc logic được sử dụng để trình bày dữ liệu dưới dạng tập
các hàng không theo thứ tự với một số cột cố định Mỗi cột có chứa một tập giá trị, mỗi giá trị có cùng một kiểu dữ liệu (hoặc một kiểu con của kiểu dữ liệu của cột); các định nghĩa về các cột tạo nên cấu trúc bảng và các hàng
có chứa dữ liệu thực của bảng
Bản ghi: Biểu diễn lưu trữ của một hàng trong một bảng
Trường: Biểu diễn lưu trữ của một cột trong một bảng
Giá trị: Một mục dữ liệu cụ thể có thể được tìm thấy tại mỗi giao điểm của
một hàng và cột trong một bảng cơ sở dữ liệu
Trang 4 Structured Query Language (SQL-Ngôn ngữ truy vấn có cấu trúc): Một
ngôn ngữ được tiêu chuẩn hóa được sử dụng để định nghĩa các đối tượng và thao tác dữ liệu trong cơ sở dữ liệu quan hệ (Để biết thêm về SQL, xem hướng dẫn thứ tư trong loạt bài này)
Trình tối ưu hóa DB2: Một thành phần của trình tiền dịch (precompiler)
SQL có chọn lựa một kế hoạch truy cập cho một câu lệnh SQL của Data Manipulation Language (DML- Ngôn ngữ thao tác dữ liệu) bằng cách mô hình hóa chi phí thực hiện một số kế hoạch truy cập khác nhau và chọn một
kế hoạch truy cập có chi phí đánh giá thấp nhất
Để tham dự kỳ thi DBA DB2 9, bạn phải vượt qua kỳ thi 730 về Các khái niệm cơ bản của DB2 9 Chúng tôi khuyên bạn nên tìm hiểu Loạt bài hướng dẫn về các khái niệm cơ bản của DB2 trước khi bắt đầu loạt bài này
Các yêu cầu về hệ thống
Bạn không cần một bản sao của DB2 để hoàn thành hướng dẫn này Tuy nhiên, bạn sẽ thu được nhiều hơn bên ngoài những hướng dẫn, nếu bạn tải phiên bản dùng thử miễn phí IBM DB2 9 để làm việc cùng với hướng dẫn này
Khái niệm về tính sẵn sàng cao
Tính sẵn sàng cao (HA) là một thuật ngữ dùng để mô tả các hệ thống đang hoạt
động và luôn sẵn sàng cho những người dùng hầu như mọi lúc Một hệ thống HA
có các đặc tính sau:
Trang 5 Xử lý giao dịch hiệu quả, mà không làm giảm hiệu năng trong các giai đoạn hoạt động cao điểm
Nhanh chóng phục hồi khi có các lỗi phần cứng hoặc phần mềm xảy ra hoặc ngay cả khi phải chịu thiên tai nếu một chiến lược sao lưu và phục hồi đã được kiểm chứng đúng chỗ
Khả năng dự phòng lỗi Nếu trình quản lý cơ sở dữ liệu hiện tại không hoạt động, phải có một trình quản lý cơ sở dữ liệu khác tiếp thu công việc và cho phép các cơ sở dữ liệu luôn sẵn sàng để sử dụng ngay lập tức Cần đảm bảo gián đoạn là tối thiểu cho các ứng dụng của khách
Trong khi hướng dẫn trước đó đã trình bày các chiến lược phục hồi sao lưu cơ bản, trong hướng dẫn này, tập trung vào đặc tính thứ ba của hệ thống sẵn sàng cao khả năng dự phòng lỗi Bạn tìm hiểu về sự vận chuyển log, nhân bản tách và tính sẵn sàng cao và khôi phục sau sự cố (HADR)
Vận chuyển bản ghi (log)
Cơ sở dữ liệu chính và dự phòng
Một hệ thống HA thường bao gồm một cơ sở dữ liệu chính và một cơ sở dữ liệu
dự phòng Cơ sở dữ liệu đang chạy hiện tại được gọi là cơ sở dữ liệu chính Mọi giao dịch đi qua cơ sở dữ liệu này Cơ sở dữ liệu dự phòng là một bản sao của cơ
sở dữ liệu chính Nếu cơ sở dữ liệu chính bị hỏng, cơ sở dữ liệu dự phòng sẽ đảm nhận các giao dịch hiện có và sẽ trở thành cơ sở dữ liệu chính mới
Vận chuyển log là gì?
Trang 6Vận chuyển log là một phương pháp mà các log giao dịch được tự động sao lưu từ
máy chủ DB2 chính và tạo ra khả năng truy cập đến một máy chủ dự phòng
Cơ sở dữ liệu dự phòng thường được khởi tạo bằng cách khôi phục lại một hình ảnh sao lưu của các cơ sở dữ liệu chính Tuy nhiên, cơ sở dữ liệu chính tiếp tục xử
lý giao dịch sau khi cơ sở dữ liệu dự phòng đã được khởi tạo Nếu những giao dịch này không được áp dụng cho cơ sở dữ liệu dự phòng, cơ sở dữ liệu dự phòng sẽ không trùng với cơ sở dữ liệu chính Để giữ cho các cơ sở dữ liệu dự phòng đồng
bộ với các cơ sở dữ liệu chính, cơ sở dữ liệu dự phòng phải có khả năng áp dụng liên tục các log được cơ sở dữ liệu chính tạo ra Khi đã đến lúc tiếp quản cơ sở dữ liệu chính, cơ sở dữ liệu dự phòng có thể làm như vậy ngay lập tức, mà không phải
áp dụng tất cả các log tại thời điểm tiếp quản này
Lệnh ROLLFORWARD DATABASE được sử dụng để áp dụng các tệp log được
cơ sở dữ liệu chính tạo ra cho cơ sở dữ liệu dự phòng Trong thực tế, lệnh này phải được gọi liên tục trên cơ sở dữ liệu dự phòng, sao cho các log đó được áp dụng khi chúng trở nên sẵn sàng Quá trình này có thể được tạo kịch bản và sắp xếp để chạy theo định kỳ Sử dụng việc ghi log tư liệu trong một hệ thống HA Việc ghi log vòng tròn không thể được sử dụng vì nó không cung cấp khả năng khôi phục tiếp (rollforward)
Câu hỏi đặt ra là: Làm thế nào để bạn có thể làm cho cơ sở dữ liệu chính tạo ra các tệp log sẵn sàng cho các cơ sở dữ liệu dự phòng để cho bạn có thể áp dụng chúng liên tục? Câu trả lời là: vận chuyển log
Thiết lập vận chuyển log
Trang 7Chìa khóa để thiết lập vận chuyển log là đặt cấu hình cơ sở dữ liệu chính sao cho
nó lưu trữ các log vào một vị trí mà cơ sở dữ liệu dự phòng có khả năng truy nhập
Thiết lập vị trí lưu trữ log trên cơ sở dữ liệu chính bằng cách thiết lập tham số cơ
sở dữ liệu LOGARCHMETH1 Chọn một ví trí có thể truy cập từ máy chủ dự phòng, chẳng hạn như một ổ đĩa mạng hoặc ổ chia sẻ được lắp sẵn
Trên cơ sở dữ liệu dự phòng, hãy thiết lập tham số LOGARCHMETH1 với cùng giá trị như trên cơ sở dữ liệu chính Khi một lệnh ROLLFORWARD DATABASE được dùng trên cơ sở dữ liệu dự phòng, DB2 kéo các log từ vị trí lưu trữ này và đặt chúng vào cơ sở dữ liệu dự phòng
Hình 1 Vận chuyển log
Để bảo đảm sự dư thừa, hãy đặt cấu hình tham số LOGARCHMETH2 trên cơ sở
dữ liệu chính Khi LOGARCHMETH2 được thiết lập, các log được lưu trữ tới cả hai vị trí được LOGARCHMETH1 và LOGARCHMETH2 thiết lập
Để vận chuyển log hoạt động, cả hai hệ thống phải được chạy cùng một phiên bản của DB2
Trang 8Một cách khác để thiết lập vận chuyển log là sử dụng một chương trình userexit trên cơ sở dữ liệu dự phòng để tiếp tục lấy ra các tệp log đã lưu trữ từ cơ sở dữ liệu chính Nếu một userexit được sử dụng, cả cơ sở dữ liệu chính và cơ sở dữ liệu dự phòng phải được đặt cấu hình với cùng chương trình userexit Userexit là một tính năng cũ và chức năng của nó đã được thay thế bằng LOGARCHMETH1 kể từ phiên bản 8.2 Tuy nhiên, vì lý do tương thích ngược, phương thức của chương trình userexit vẫn còn được hỗ trợ trong phiên bản 8.2 và phiên bản 9
Tính sẵn sàng cao thông qua nhân bản tách trực tuyến và trợ giúp I/O tạm dừng
Nhân bản tách và I/O tạm dừng
Trong hướng dẫn sao lưu và phục hồi, bạn đã biết rằng một phép sao lưu trực tuyến cho phép những người dùng vẫn duy trì các kết nối của họ với cơ sở dữ liệu trong khi cơ sở dữ liệu đang được sao lưu
Mặc dù điều này đáp ứng các tiêu chí của một hệ thống sẵn sàng cao, những quá trình này có thể tốn thời gian đối với các cơ sở dữ liệu lớn Còn có một chiến lược phục hồi sao lưu khác nhanh hơn so với các sao lưu trực tuyến đó là nhân bản tách
Với nhân bản tách, thay vì nhận một bản sao lưu của cơ sở dữ liệu bằng cách sử
dụng tiện ích sao lưu DB2, bạn tạo một bản sao đĩa của các thư mục cơ sở dữ liệu
và sau đó khôi phục lại bản sao đĩa này khi cần thiết Quá trình này có ưu điểm sau trên phương pháp phục hồi sao lưu cơ sở dữ liệu truyền thống:
Nó giúp loại bỏ chi phí hoạt động sao lưu từ máy chính, thường tốn thời gian với cơ sở dữ liệu lớn
Trang 9 Quá trình khôi phục lại khi sử dụng nhân bản tách nhanh hơn khi sử dụng các tiện ích khôi phục lại
Nhân bản tách
Chia tách một bản sao có nghĩa là tạo một bản sao "tức thời" của cơ sở dữ liệu
nguồn bằng cách ghi dữ liệu vào một đĩa cứng Khi cần thiết, bản sao chép đĩa này
có thể được sử dụng để nhân bản một cơ sở dữ liệu mới, nhưng giống nhau hoặc
sử dụng như là một bản sao lưu để khôi phục lại cơ sở dữ liệu ban đầu
Phương pháp bạn chọn để chia tách bản sao không phải trong sự kiểm soát của DB2 Hãy tạo ra bản sao hệ thống tệp của các thư mục cơ sở dữ liệu nếu bạn muốn Chúng tôi đề xuất sử dụng bất kỳ thiết bị lưu trữ thông minh nào như là IBM Storage Server (ESS-máy chủ lưu trữ của IBM), được gọi là Shark và EMC Symmetrix 3330 Khi sử dụng công nghệ FlashCopy, ESS có thể thiết lập các bản sao gần như tức thời của dữ liệu hoàn toàn bên trong nó Tính năng phân tách tức thời của phần mềm EMC Symmetrix TimeFinder (Trình tìm kiếm thời gian EMC) trên Symmetrix cũng có khả năng chia tách một bản sao nhân bản theo một cách tương tự
Một bản sao phân tách của một cơ sở dữ liệu bao gồm toàn bộ các nội dung của thư mục cơ sở dữ liệu, tất cả các vùng chứa không gian bảng và thư mục cơ sở dữ liệu cục bộ Các thư mục log hoạt động có thể được bao gồm, tuỳ thuộc vào cách bạn muốn sử dụng hình ảnh nhân bản tách này như thế nào Hãy đọc thêm về chủ
đề này sau
I/O tạm dừng
Khi chia tách một bản sao, điều quan trọng là đảm bảo rằng không có trang ghi nào xảy ra trong cơ sở dữ liệu Sự hỗ trợ I/O tạm dừng của DB2 cho phép bạn thực hiện các phép nhân bản tách mà không cần phải đóng cơ sở dữ liệu Ý tưởng là để
Trang 10đặt cơ sở dữ liệu trong một chế độ tạm dừng ghi trước khi chia tách bản sao đó và sau khi chia tách, tiếp tục lại các hoạt động I/O bình thường
Trong khi cơ sở dữ liệu đang ở trong chế độ tạm dừng (treo) ghi, tất cả các không gian bảng của nó được đặt trong trạng thái SUSPEND_WRITE Mọi hoạt động vẫn tiếp tục chạy bình thường Tuy nhiên, một số giao dịch có thể phải chờ nếu chúng yêu cầu vào/ra với đĩa Các giao dịch tiến hành bình thường ngay khi các phép ghi vào cơ sở dữ liệu được nối lại
Các lệnh sau đây được sử dụng để tạm dừng và tiếp tục các phép ghi trên một cơ
sở dữ liệu:
Để tạm dừng các phép ghi, hãy dùng:
CONNECT TO database-alias
SET WRITE SUSPEND FOR DATABASE
Để tiếp tục các phép ghi, hãy dùng:
SET WRITE RESUME FOR DATABASE
Công cụ db2inidb
Bây giờ bạn có một bản sao nhân bản của cơ sở dữ liệu nguồn, nó chính là một bản sao đĩa Bạn không thể sử dụng lệnh RESTORE DATABASE trên bản sao đĩa
Trang 11để khôi phục lại bất kỳ cơ sở dữ liệu nào vì đây không phải là một bản sao lưu cơ
sở dữ liệu DB2 Nó chỉ là một bản sao đĩa của các tệp cơ sở dữ liệu Để khởi tạo bản sao đĩa vào trong một cơ sở dữ liệu DB2 thích hợp cho sử dụng, hãy sử dụng lệnh db2inidb:
DB2INIDB database-alias
AS {SNAPSHOT | STANDBY | MIRROR}
[RELOCATE USING config_file]
Bạn có thể khởi tạo một bản sao theo ba cách khác nhau:
Ảnh chụp: Tạo ra một bản sao rập khuôn cơ sở dữ liệu nguồn
Dự phòng (Standby): Tạo ra một cơ sở dữ liệu dự phòng
Nhân bản (Mirror): Khôi phục lại cơ sở dữ liệu nguồn ban đầu
Cả hai tùy chọn Ảnh chụp và Dự phòng tạo ra một cơ sở dữ liệu mới, nhưng giống hệt với cơ sở dữ liệu nguồn khi sử dụng hình ảnh nhân bản Do đó, cơ sở dữ liệu nhân bản tách không thể tồn tại trên cùng một hệ thống với cơ sở dữ liệu nguồn bởi vì nó có cùng cấu trúc và sử dụng cùng tên thể hiện như cơ sở dữ liệu nguồn Nếu cơ sở dữ liệu nhân bản tách phải tồn tại trên cùng một hệ thống với cơ sở dữ liệu nguồn, hãy xác định tùy chọn tệp cấu hình RELOCATE USING khi dùng lệnh db2inidb
Định dạng của tệp cấu hình định vị lại (tệp văn bản) như sau Sử dụng tệp cấu hình
để định vị lại các cấu trúc thư mục cơ sở dữ liệu:
Trang 12Nhân bản một cơ sở dữ liệu bằng cách sử dụng tùy chọn ảnh chụp db2inidb
Tùy chọn này tạo ra một bản sao tức thời của cơ sở dữ liệu nguồn tại thời điểm khi
I/O tạm dừng Do đó, có tên là ảnh chụp (snapshot) Trong quá trình khởi tạo, cơ
sở dữ liệu nhân bản tách trải qua việc phục hồi sự cố Sau khi việc hồi phục sự cố hoàn thành, cơ sở dữ liệu sẵn sàng để sử dụng ngay Bất kỳ hoạt động không cam kết nào nổi bật tại thời điểm nhân bản tách được khôi phục
Các bước để tạo ra một cơ sở dữ liệu sao chép rập khuôn khi sử dụng tùy chọn snapshot db2inidb là:
1 Tạm dừng I/O trên cơ sở dữ liệu nguồn:
Trang 13CONNECT TO source-database-alias
SET WRITE SUSPEND FOR DATABASE
2 Phân tách bản sao Để phân tách bản sao, sử dụng phương pháp sao chép tệp hệ thống hoặc bất kỳ các sản phẩm nào của nhà cung cấp được nói trên Nếu bạn chọn sử dụng một sản phẩm của nhà cung cấp, hãy đảm bảo bạn tham khảo tài liệu có thể áp dụng cho các thiết bị của bạn về cách tạo ra một nhân bản tách Bất kể các sự thay đổi trong quá trình nhân bản tách, tất
cả những điều sau đây phải được nhân bản tách đồng thời :
o Toàn bộ nội dung của thư mục cơ sở dữ liệu
o Tất cả các thùng chứa không gian bảng
o Thư mục cơ sở dữ liệu cục bộ
o Thư mục log đang hoạt động, nếu nó không nằm trong thư mục cơ
Trang 14Hình 2 Khung nhìn SYSIBMADM.DBPATHS
Khung nhìn SYSIBMADM.DBPATHS cung cấp các thông tin sau:
o Thư mục cơ sở dữ liệu là C:\DB2\NODE0000\SQL00001
o Các đường dẫn chứa không gian bảng là c:\db2\test1\userspace3 and c:\db2\test1\userspace2
o Thư mục cơ sở dữ liệu cục bộ là C:\DB2\NODE0000\SQLDBDIR (Điều này không được hiển thị trong hình, nhưng thư mục cơ sở dữ liệu cục bộ là thư mục SQLDBDIR ở cùng mức với thư mục cơ sở
dữ liệu)
o Thư mục log đang hoạt động là
C:\DB2\NODE0000\SQL00001\SQLOGDIR
Tất cả những thư mục này phải được nhân bản tách
3 Tiếp tục lại I/O trên cơ sở dữ liệu nguồn Hãy dùng lệnh sau đây để tiếp tục I/O trên cơ sở dữ liệu nguồn Sử dụng cùng phiên kết nối bước 1 khi dùng lệnh này:
Trang 15SET WRITE RESUME FOR DATABASE
4 Làm cho bản sao phân tách có thể truy cập được:
a Trên máy đích, tạo ra cùng cá thể DB2 như nó có trên máy nguồn
b Khôi phục lại nhân bản tách được lấy từ bước 2 đến cùng các đường dẫn chính xác giống như chúng đã có trên máy nguồn Nếu nhân bản tách có trên một ổ đĩa mạng, hãy gắn ổ đĩa mạng tới máy đích
c Chạy lệnh sau đây để tạo danh mục cơ sở dữ liệu trên máy đích:
CATALOG DATABASE database-name AS database-alias ON path
d
e ở đây:
f Cơ sở dữ liệu-các bí danh (database-alias) phải phù hợp với các bí danh cơ
sở dữ liệu của cơ sở dữ liệu nguồn
g Đường dẫn (path) phải phù hợp với đường dẫn cơ sở dữ liệu của cơ sở dữ
liệu nguồn (Sử dụng lệnh LIST DB DIRECTORY để hiển thị đường dẫn cơ sở dữ liệu hoặc kiểm tra trường DB_STORAGE_PATH trong khung nhìn
SYSIBMADM.DBPATHS, như chỉ ra trong Hình 2)
Trang 165 Khởi tạo cơ sở dữ liệu của nhân bản tách để có một cơ sở dữ liệu nhân bản rập khuôn
Khởi động cá thể trên máy đích khi sử dụng lệnh db2start
a Khởi tạo cơ sở dữ liệu bản sao phân tách khi dùng tùy chọn ảnh chụp (snapshot):
DB2INIDB database-alias AS SNAPSHOT
Lệnh db2inidb có trước khởi tạo một phép phục hồi sự cố, nó khôi phục tất cả các giao dịch chưa được cam kết tại thời điểm nhân bản tách, nhờ đó làm cho cơ sở dữ liệu bền vững Điều cần thiết để có tất
cả các tệp log từ nguồn đã hoạt động tại thời điểm phân tách Thư mục log đang hoạt động không chứa bất kỳ tệp log nào không phải
là một phần của bản sao phân tách Sau khi hoàn thành phép phục hồi sự cố, cơ sở dữ liệu đã sẵn sàng cho các hoạt động
Hình 3 tóm tắt quá trình nhân bản tách khi sử dụng tùy chọn ảnh chụp:
Trang 17Hình 3 Nhân bản tách khi sử dụng tùy chọn ảnh chụp
Tạo ra một cơ sở dữ liệu dự phòng bằng cách sử dụng tùy chọn dự phòng db2inidb
Tùy chọn dự phòng db2inidb tạo ra một cơ sở dữ liệu dự phòng của cơ sở dữ liệu nguồn, cũng được gọi là cơ sở dữ liệu chính
Khi một nhân bản tách được khởi tạo như là một cơ sở dữ liệu dự phòng, ngay lập tức nó được đặt trong trạng thái chờ cam kết tiếp Liên tục áp dụng các tệp log
chưa hoạt động từ cơ sở dữ liệu chính khi chúng trở nên sẵn sàng, duy trì cơ sở dữ liệu dự phòng hiện tại với cơ sở dữ liệu chính Phương pháp vận chuyển log đã
được thảo luận trước đó được sử dụng ở đây để tạo ra các log sẵn sàng cho cơ sở
dữ liệu dự phòng Nếu một sự cố xảy ra trên cơ sở dữ liệu chính, hãy sử dụng cơ
sở dữ liệu dự phòng để đảm nhận vai trò của cơ sở dữ liệu chính
Các bước để tạo một cơ sở dữ liệu dự phòng khi sử dụng tùy chọn dự phòng
db2inidb là:
1 Tạm dừng I/O trên cơ sở dữ liệu chính Thực hiện cùng các bước như trong kịch bản ảnh chụp để tạm dừng I/O trên cơ sở dữ liệu chính
Trang 182 Phân tách nhân bản Sử dụng phương pháp thích hợp để phân tách bản sao
cơ sở dữ liệu chính Nhân bản tách bao gồm như sau:
o Toàn bộ các nội dung của thư mục cơ sở dữ liệu
o Tất cả các thùng chứa không gian bảng
o Thư mục cơ sở dữ liệu cục bộ
Bạn không cần phải phân tách thư mục log hoạt động trong kịch bản này Cách các log được xử lý được trình bày sau
3 Tiếp tục I/O trên cơ sở dữ liệu nguồn Thực hiện cùng các bước như trong kịch bản ảnh chụp để tiếp tục I/O trên cơ sở dữ liệu chính
4 Tạo ra bản sao phân tách có thể truy cập Thực hiện cùng các bước như trong kịch bản ảnh chụp để tạo ra bản sao phân tách có thể truy cập
5 Khởi tạo cơ sở dữ liệu nhân bản tách như là một cơ sở dữ liệu dự phòng
Lệnh sau khởi tạo cơ sở dữ liệu và đặt nó trong trạng thái chờ cam kết tiếp,
vì vậy có thể áp dụng các log từ cơ sở dữ liệu chính
DB2INIDB database-alias AS STANDBY
6 Tiếp tục áp dụng các log đã được cơ sở dữ liệu chính lưu trữ cho cơ sở dữ liệu dự phòng bằng cách sử dụng lệnh ROLLFORWARD DATABASE để giữ cho cơ sở dữ liệu dự phòng càng giống như hiện tại càng tốt, các tệp log chưa kích hoạt mới (đây là những log đã được lưu trữ) từ cơ sở dữ liệu
Trang 19chính cần được tiếp tục áp dụng cho cơ sở dữ liệu dự phòng khi chúng trở nên sẵn sàng Thực hiện điều này bằng cách dùng lệnh ROLLFORWARD DATABASE trên cơ sở dữ liệu dự phòng mà không cần dùng tùy chọn STOP hoặc COMPLETE
Để tạo ra các tệp các log có thể truy cập cho cơ sở dữ liệu dự phòng, sử dụng phương pháp vận chuyển log đã thảo luận trong phần Thiết lập vận chuyển log
Tiếp tục áp dụng các log đã lưu trữ cho cơ sở dữ liệu dự phòng bằng cách
sử dụng lệnh ROLLFORWARD DATABASE:
ROLLFORWARD DB database-alias TO END OF LOGS
7 Đưa cơ sở dữ liệu dự phòng thành trực tuyến
Trong trường hợp có sự cố hỏng hóc của cơ sở dữ liệu chính, bạn muốn cơ
sở dữ liệu dự phòng đảm nhận vai trò của cơ sở dữ liệu chính bằng cách chuyển nó sang trực tuyến Để chuyển cơ sở dữ liệu thành trực tuyến, hãy thực hiện như sau:
a Tạo ra đường dẫn log hoạt động có thể truy cập cho cơ sở dữ liệu dự phòng Trong bước 6, bạn chỉ lấy ra và áp dụng các log đã lưu trữ do cơ sở dữ liệu chính tạo ra cho cơ sở dữ liệu dự phòng Bạn đã không áp dụng các log hoạt động Khi bạn đã sẵn sàng để đưa cơ sở dữ liệu dự phòng thành trực tuyến, hãy lấy các log hoạt động ra khỏi cơ sở dữ liệu chính và đặt chúng vào cơ sở dữ liệu dự phòng Quá trình lấy ra này có thể được làm thủ công, đó là, sao chép các log hoạt động
từ cơ sở dữ liệu chính vào thư mục LogPath của máy chủ dự phòng
Trang 20b Khôi phục tiếp cơ sở dữ liệu đến cuối các log và dừng lại:
ROLLFORWARD DB database-alias TO END OF LOGS AND STOP
Sau khi quá trình cam kết tiếp đã hoàn thành, cơ sở dữ liệu đã sẵn sàng cho sử dụng
Hình sau đây tóm tắt quá trình nhân bản tách bằng cách sử dụng các tùy chọn dự phòng:
Hình 4 Nhân bản tách khi sử dụng tùy chọn dự phòng
Trang 21
Tạo một hình ảnh sao lưu của các cơ sở dữ liệu nguồn khi sử dụng tùy chọn nhân bản db2inidb
Tùy chọn nhân bản của lệnh db2inidb được sử dụng để tạo ra một bản sao lưu tệp nhân bản nhanh của cơ sở dữ liệu nguồn Nhân bản tách có thể được dùng để khôi phục lại cơ sở dữ liệu nguồn nếu cần Thủ tục này có thể được dùng thay vì thực hiện các phép sao lưu và khôi phục lại cơ sở dữ liệu trên cơ sở dữ liệu nguồn
Các bước để tạo ra một hình ảnh sao lưu của các cơ sở dữ liệu nguồn khi sử dụng tùy chọn nhân bản db2inidb là:
1 Tạm dừng I/O trên cơ sở dữ liệu nguồn Thực hiện theo các bước tương tự như trong kịch bản ảnh chụp để tạm dừng I/O trên cơ sở dữ liệu nguồn
2 Phân tách bản sao Sử dụng phương pháp thích hợp để phân tách bản sao cơ
sở dữ liệu nguồn Hoạt động nhân bản tách phải bao gồm như sau:
o Toàn bộ nội dung của thư mục cơ sở dữ liệu
o Tất cả các thùng chứa không gian bảng
o Thư mục cơ sở dữ liệu cục bộ
Bạn không cần phải phân tách thư mục log đang hoạt động trong kịch bản này
3 Tiếp tục I/O trên cơ sở dữ liệu nguồn Thực hiện theo các bước tương tự như trong kịch bản ảnh chụp để tiếp tục I/O trên cơ sở dữ liệu nguồn
4 Khôi phục lại các cơ sở dữ liệu nguồn bằng cách sử dụng nhân bản tách Không có cơ sở dữ liệu "đích" nào trong kịch bản này Mục đích của các
Trang 22tùy chọn nhân bản là sử dụng bản sao nhân bản để phục hồi cơ sở dữ liệu nguồn khi cần thiết
a Dừng thể hiện dữ liệu bằng lệnh db2stop
b Sao chép các tệp dữ liệu của các cơ sở dữ liệu nhân bản tách lên cơ
sở dữ liệu ban đầu
c Khởi động thể hiện dữ liệu bằng lệnh db2start
d Dùng lệnh sau để khởi tạo cơ sở dữ liệu nhân bản tách Việc này
thay thế cơ sở dữ liệu nguồn bằng hình ảnh nhân bản tách và đặt nó vào trong một trạng thái chờ cam kết tiếp, vì vậy các log có thể được
áp dụng lại
DB2INIDB database-alias AS MIRROR
e Khôi phục tiếp tiếp cơ sở dữ liệu đến cuối các log Sau khi
việc cam kết tiếp đã hoàn thành, cơ sở dữ liệu đã sẵn sàng để sử
dụng
ROLLFORWARD DB database-alias TO END OF LOGS AND STOP
5 Hình 5 tóm tắt một thủ tục nhân bản tách khi sử dụng tùy chọn nhân bản:
Trang 236
Hình 5 Nhân bản tách khi sử dụng tùy chọn nhân bản
Nhân bản tách trong một môi trường phân vùng
Trong môi trường cơ sở dữ liệu phân vùng, cần tạm dừng I/O trên mỗi phân vùng trong quá trình nhân bản tách Sau đó tiếp tục I/O trên mỗi phân vùng Cùng áp dụng công cụ db2inidb, công cụ này phải được chạy trên mỗi phân vùng được nhân bản để khởi tạo cơ sở dữ liệu
Bởi vì mỗi phân vùng được xử lý độc lập, các phân vùng có thể được tạm dừng hoạt động độc lập với nhau Điều đó có nghĩa là bạn không cần phải dùng một db2_all để tạm dừng hoạt động trên tất cả các phân vùng Nếu mỗi phân vùng được tạm dừng một cách độc lập, thì cuối cùng hãy tạm dừng hoạt động phân vùng danh mục Điều này là do một nỗ lực để tạm dừng I/O trên bất kỳ một trong các nút không có danh mục yêu cầu cho phép một kết nối đến phân vùng danh mục cho phép Nếu phân vùng danh mục tạm dừng hoạt động, thì ý đồ kết nối bị treo
Trang 24Công cụ db2inidb không yêu cầu bất kỳ kết nối nào tới cơ sở dữ liệu Vì thế, bạn
có thể chạy công cụ này một cách độc lập trên mỗi bản sao phân tách hoặc sử dụng db2_all để chạy nó đồng thời trên tất cả các phân vùng Yêu cầu duy nhất này để trình quản lý cơ sở dữ liệu được bắt đầu
Tạm dừng các phép ghi trên một cơ sở dữ liệu có 3 phân vùng 0, 1, 2, với 0 là phân vùng danh mục, hãy dùng các lệnh sau đây:
Trang 25db2 connect to database-alias
db2 set write suspend for database
Để chạy đồng thời db2inidb trên tất cả các phân vùng, dùng:
db2_all "db2inidb database-alias as db2inidb-option"
Tính sẵn sàng cao và khôi phục sau sự cố (HADR)
Tính sẵn sàng cao và khôi phục sau sự cố (HADR) của DB2 là một tính năng sao chép cơ sở dữ liệu để tạo ra một giải pháp có tính sẵn sàng cao HADR hiện tại có sẵn chỉ trong môi trường cơ sở dữ liệu phân vùng đơn
Hai máy, máy chính và máy dự phòng, đều tham gia vào việc thiết lập HADR: Máy chính là máy ở đó cơ sở dữ liệu nguồn được lưu trữ Khi giao dịch được xử lý tại cơ sở dữ liệu nguồn, các log cơ sở dữ liệu sẽ được tự động chuyển đến máy chủ
dự phòng Máy chủ dự phòng lưu trữ một cơ sở dữ liệu được nhân bản từ cơ sở dữ liệu nguồn Nó có thể được khởi tạo bằng cách sử dụng khôi phục lại cơ sở dữ liệu hoặc bằng nhân bản tách Khi HADR được khởi động, các tệp log được thu nhận
và chúng có vai trò trên máy dự phòng Thông qua việc sử dụng lại log liên tục, cơ
sở dữ liệu dự phòng duy trì một bản sao rập khuôn của các cơ sở dữ liệu chính và hoạt động như một cơ sở dữ liệu dự phòng
Trang 26Hình 6 Tổng quan về HADR
Khi xuất hiện một sự cố hỏng hóc trên cơ sở dữ liệu chính, cơ sở dữ liệu dự phòng đảm nhận khối lượng giao dịch và trở thành cơ sở dữ liệu chính mới Nếu máy bị hỏng trở nên sẵn sàng hoạt động lại, nó có thể được đồng bộ lại và bắt kịp cơ sở
dữ liệu chính mới Các cơ sở dữ liệu chính cũ sau đó trở thành cơ sở dữ liệu dự phòng mới
Hình 7 Cơ sở dữ liệu dự phòng đảm nhiệm vai trò chính
Trang 27Hình 8 Cơ sở dữ liệu dự phòng mới đồng bộ lại và theo kịp với cơ sở dữ liệu chính mới
Các tham số cấu hình của cơ sở dữ liệu HADR
Để thiết lập một môi trường HADR, cập nhật các tham số cấu hình của cơ sở dữ liệu HADR cụ thể
Trước hết, việc ghi log tư liệu phải được kích hoạt trên cơ sở dữ liệu chính Xem Hướng dẫn sao lưu và phục hồi để tìm hiểu cách kích hoạt ghi log lưu trữ
Trang 28Bảng 1 liệt kê các mô tả của các tham số cấu hình cơ sở dữ liệu liên quan đến HADR Một ví dụ về cách cập nhật chúng sẽ xuất hiện sau trong hướng dẫn này
Bảng 1 Các tham số cấu hình của cơ sở dữ liệu có liên quan - HADR
HADR-Related DB CFG Mô tả
HADR_LOCAL_HOST
Xác định máy chủ lưu trữ cục bộ với giao tiếp TCPIP HADR Có thể hoặc là một tên máy chủ hoặc một địa chỉ
IP
HADR_LOCAL_SVC
Chỉ rõ tên dịch vụ TCPIP hoặc số cổng
mà với nó quá trình HADR chấp nhận các nối trên máy chủ cục
bộ Cổng này không thể giống như SVCENAME hoặc SVCENAME+1 của thể hiện HADR
HADR_REMOTE_HOST Chỉ rõ tên máy chủ
TCPIP hoặc địa chỉ IP
Trang 29của nút HADR từ xa
HADR_REMOTE_SVC
Chỉ rõ tên dịch vụ TCPIP hoặc số cổng
mà quá trình HADR chấp nhận các kết nối trên nút điều khiển từ
xa Cổng này không thể giống như SVCENAME hoặc SVCENAME+1 của thể hiện từ xa
HADR_REMOTE_INST
Chỉ rõ tên thể hiện của máy chủ từ xa Các công cụ quản trị, ví dụ như Trung tâm điều kiển DB2, sử dụng tham số này để liên lạc với máy chủ từ xa
HADR_TIMEOUT
Chỉ rõ thời gian (bằng giây) mà quá trình HADR chờ đợi trước khi xem một dự định truyền dẫn là thất bại Giá trị mặc định là 120
Trang 30giây
HADR_SYNCMODE
Chỉ rõ chế độ đồng bộ hóa Nó sẽ xác định các phép ghi log chính được đồng bộ hóa như thế nào với log dự phòng khi hệ thống đang ở trạng thái ngang hàng Các giá trị hợp lệ là: SYNC, NEARSYNC, ASYNC Giá trị mặc định là NEARSYNC (Trạng thái ngang hàng
- peer state được thảo luận sau trong phần này)
HADR_DB_ROLE
Chỉ rõ vai trò hiện tại của một cơ sở dữ liệu Các giá trị hợp lệ là: STANDARD, PRIMARY và STANDBY
STANDARD có nghĩa
là các cơ sở dữ liệu không cho phép
Trang 31HADR
Các trạng thái cơ sở dữ liệu HADR
Khi cơ sở dữ liệu dự phòng được khởi động lần đầu tiên, nó bước vào trạng thái đúng cục bộ Các tệp log (nếu có) được tìm thấy trong đường dẫn log cục bộ được đọc và được sử dụng cho cơ sở dữ liệu dự phòng
Khi đạt đến cuối tệp log cục bộ, cơ sở dữ liệu dự phòng đi vào trạng thái bắt kịp từ
xa Nó sử dụng các trang log từ các log tư liệu của máy chính cũng như các log đang hoạt động cho đến khi các cơ sở dữ liệu dự phòng bắt kịp với log hoạt động cuối
Khi tất cả các tệp log trên hệ thống chính được dùng lại, các cơ sở dữ liệu chính và
dự phòng đi vào trạng thái ngang hàng
Trong trạng thái ngang hàng, các trang log được vận chuyển và được dùng cho cơ
sở dữ liệu dự phòng bất cứ khi nào cơ sở dữ liệu chính làm cho hoàn toàn ngang bằng các trang log vào đĩa Xác định một trong ba chế độ đồng bộ để tránh mất dữ liệu Các chi tiết về các chế độ đồng bộ được thảo luận trong phần kế tiếp
Trang 32Hình 9 Các trạng thái cơ sở dữ liệu HADR
Các chế độ đồng bộ HADR
Nhớ lại rằng khi một cặp HADR đang ở trong trạng thái ngang hàng, các trang log được làm cho ngang bằng với tệp log trên đĩa tại cơ sở dữ liệu chính được vận chuyển và được dùng cho cơ sở dữ liệu dự phòng Một chế độ đồng bộ được chỉ rõ
để cho biết cách ghi log được quản lý giữa các cơ sở dữ liệu chính và dự phòng
Có ba chế độ đồng bộ: SYNC (Đồng bộ), NEARSYNC (Gần đồng bộ) và ASYNC (Không đồng bộ)
Đồng bộ
Trong chế độ đồng bộ, các phép ghi log được xem là thành công chỉ khi:
Các log được ghi vào các tệp log trên cơ sở dữ liệu chính
Cơ sở dữ liệu chính đã nhận được tin báo xác nhận từ cơ sở dữ liệu dự phòng rằng các log được ghi thành công vào tệp log trên cơ sở dữ liệu dự phòng
Trang 33Hình 10 Chế độ đồng bộ hóa SYNC
Gần đồng bộ
Các bản ghi log trong cơ sở dữ liệu chính và cơ sở dữ liệu dự phòng là hầu như (hoặc gần) đồng bộ vì ghi log được xem là thành công chỉ khi:
Các bản ghi log đã được ghi vào các tệp log trên cơ sở dữ liệu chính
Cơ sở dữ liệu chính đã nhận được tin báo xác nhận từ cơ sở dữ liệu dự phòng rằng các log được được ghi thành công vào bộ nhớ chính trên cơ sở
dữ liệu dự phòng
Trang 34Hình 11 Chế độ đồng bộ NEARSYNC
Không đồng bộ
Trong chế độ này, cơ sở dữ liệu chính không chờ tin báo xác nhận từ cơ sở dữ liệu
dự phòng Các phép ghi log được xem là thành công chỉ khi:
Các bản ghi log đã được ghi vào các tệp bản ghi trên cơ sở dữ liệu chính
Các bản ghi log đã được chuyển giao cho cơ sở dữ liệu dự phòng; không chờ đợi tin báo xác nhận nào