Chuẩ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)

Đâ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.

Michael Dang, Quản trị CSDL DB2, IBM

Michael D. T. Dang hiện đang làm việc cho IBM Global Services như là một nhà quản trị cơ sở dữ liệu DB2 UDB cao cấp. Ông đã làm việc tại IBM tám năm. Michael là một nhà phát triển và nhà quản trị DB2 UDB có chứng nhận của IBM DB2 và là một tác giả đóng góp tích cực cho developerWorks của IBM



Sylvia Qi, Kiểm định chức năng, IBM Toronto Lab

Sylvia F. Qi làm việc tại phòng thí nghiệm Toronto của IBM trong vai trò người thử nghiệm xác minh chức năng của WebSphere Application Server (Máy chủ ứng dụng WebSphere). Trước đây, Sylvia đã làm việc trong vai trò của một kỹ sư hỗ trợ DB2 UDB Level 2 (Mức 2 của DB2 UDB) trong sáu năm. Cô có kiến thức sâu trong mọi lĩnh vực của DB2 UDB và là một nhà phát triển ứng dụng và quản trị DB2 UDB được IBM chứng nhận. Sylvia có bằng cử nhân Khoa học Máy tính của Trường Đại học McGill. Cô là một tác giả đóng góp tích cực cho developerWorks IBM. Sylvia gần đây là đồng tác giả cuốn sách Hiểu biết về DB2 - Học trực quan bằng các ví dụ



03 10 2009

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ứ sá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:

  • 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, DELETESELECT).

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.
  • 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:

  • 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ì?

Vậ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

Chì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
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 LOGARCHMETH1LOGARCHMETH2 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.

Mộ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.
  • 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à để đặ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 để 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:

DB_NAME=oldName,newName
DB_PATH=oldPath,newPath
INSTANCE=oldInst,newInst
NODENUM=nodeNumber
LOG_DIR=oldDirPath,newDirPath
CONT_PATH=oldContPath1,newContPath1
CONT_PATH=oldContPath2,newContPath2

Nhâ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:
    CONNECT 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 :
    • Toàn bộ nội dung của thư mục cơ sở dữ liệu.
    • Tất cả các thùng chứa không gian bảng.
    • Thư mục cơ sở dữ liệu cục bộ.
    • Thư mục log đang hoạt động, nếu nó không nằm trong thư mục cơ sở dữ liệu.

    Tất cả các thông tin có trước được lưu trữ trước trong khung nhìn hệ thống SYSIBMADM.DBPATHS. Hãy chạy câu lệnh select * from sysibmadm.dbpaths để lấy thông tin này. Bạn cũng có thể xem các nội dung của khung nhìn này từ Trung tâm điều kiển. Hình dưới đây chỉ ra một nội dung thí dụ về khung nhìn:

    Hình 2. Khung nhìn SYSIBMADM.DBPATHS
    Khung nhìn SYSIBMADM.DBPATHS

    Khung nhìn SYSIBMADM.DBPATHS cung cấp các thông tin sau:

    • Thư mục cơ sở dữ liệu là C:\DB2\NODE0000\SQL00001.
    • Các đường dẫn chứa không gian bảng là c:\db2\test1\userspace3 and c:\db2\test1\userspace2.
    • 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).
    • 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:
    SET WRITE RESUME FOR DATABASE
  4. Làm cho bản sao phân tách có thể truy cập được:
    1. Trên máy đích, tạo ra cùng cá thể DB2 như nó có trên máy nguồn.
    2. 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.
    3. 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

      ở đây:

      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.

      Đườ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).

  5. 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.
    1. Khởi động cá thể trên máy đích khi sử dụng lệnh db2start.
    2. 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:

      Hình 3. Nhân bản tách khi sử dụng tùy chọn ảnh chụp
      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.
  2. 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:
    • Toàn bộ các nội dung của thư mục cơ sở dữ liệu.
    • Tất cả các thùng chứa không gian bảng.
    • 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 chí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:

    1. 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.
    2. 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
      Nhân bản tách khi sử dụng tùy chọn dự phòng

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:
    • Toàn bộ nội dung của thư mục cơ sở dữ liệu.
    • Tất cả các thùng chứa không gian bảng.
    • 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 tù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.
    1. Dừng thể hiện dữ liệu bằng lệnh db2stop.
    2. 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.
    3. Khởi động thể hiện dữ liệu bằng lệnh db2start.
    4. 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
    5. 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

    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:

    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 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.

Cô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:

export DB2NODE=1
db2 terminate
db2 connect to database-alias
db2 set write suspend for database

export DB2NODE=2
db2 terminate
db2 connect to database-alias
db2 set write suspend for database

export DB2NODE=0
db2 terminate
db2 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.

Hình 6. Tổng quan về HADR
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
Cơ sở dữ liệu dự phòng đảm nhiệm vai trò chính
Hì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ơ 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ữ.

Bả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 CFGMô tả
HADR_LOCAL_HOSTXá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_SVCChỉ 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_HOSTChỉ rõ tên máy chủ TCPIP hoặc địa chỉ IP của nút HADR từ xa.
HADR_REMOTE_SVCChỉ 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_INSTChỉ 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_TIMEOUTChỉ 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 giây.
HADR_SYNCMODEChỉ 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_ROLEChỉ 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 HADR.

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.

Hình 9. Các trạng thái cơ sở dữ liệu HADR
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.
Hình 10. Chế độ đồng bộ hóa -- SYNC
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.
Hình 11. Chế độ đồng bộ -- NEARSYNC
Chế độ đồng bộ hóa - 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.
Hình 12. Chế độ không đồng bộ -- ASYNC
Chế độ đồng bộ hóa - ASYNC

Tổng quan về các lệnh HADR

HADR được quản lý bởi ba lệnh đơn giản:

  • START HADR
  • STOP HADR
  • TAKENOVER HADR

Cú pháp của các lệnh như sau:

START HADR ON DATABASE database-alias
[USER userid] [USING password] 
AS PRIMARY | STANDBY [BY FORCE]

STOP HADR ON DATABASE database-alias 
[USER userid] [USING password] 

TAKEOVER HADR ON DATABASE database-alias
[USER userid] [USING password] 
[BY FORCE]

Việc dùng lệnh START HADR với tùy chọn hoặc là AS PRIMARY hay AS STANDBY thay đổi vai trò của một cơ sở dữ liệu tới một vai trò khác như xác định nếu cơ sở dữ liệu vẫn chưa sắn sàng với vai trò đó. Lệnh này cũng kích hoạt cơ sở dữ liệu, nếu nó chưa được kích hoạt.

Lệnh STOP HADR thay đổi một cơ sở dữ liệu HADR (hoặc chính hay dự phòng) thành cơ sở dữ liệu chuẩn. Bất kỳ các tham số cấu hình cơ sở dữ liệu có liên quan đến HADR vẫn giữ nguyên không thay đổi sao cho cơ sở dữ liệu có thể dễ dàng được kích hoạt lại như là một cơ sở dữ liệu HADR.

Lệnh TAKEOVER HADR mà bạn có thể dùng cho cơ sở dữ liệu dự phòng, thay đổi cơ sở dữ liệu dự phòng thành cơ sở dữ liệu chính. Khi bạn không chỉ rõ tùy chọn BY FORCE, cơ sở dữ liệu chính và cơ sở dữ liệu dự phòng sẽ chuyển đổi các vai trò. Khi bạn chỉ rõ tùy chọn BY FORCE, cơ sở dữ liệu dự phòng sẽ đơn phương (mà không thay đổi cơ sở dữ liệu chính sang dự phòng) chuyển đổi để trở thành cơ sở dữ liệu chính. Trong trường hợp này, cơ sở dữ liệu dự phòng cố gắng dừng xử lý giao dịch trên cơ sở dữ liệu chính cũ. Tuy nhiên, không có sự bảo đảm nào về quá trình xử lý giao dịch sẽ ngừng lại. Sử dụng tùy chọn BY FORCE để bắt buộc một phép tiếp quản chỉ trong điều kiện dự phòng lỗi. Có thể ở mức độ nào đó, hãy đảm bảo rằng máy chính hiện tại đã chắc chắn bị hỏng hoặc đã tắt, trước khi dùng các lệnh TAKEOVER HADR với tùy chọn BY FORCE.

Khởi tạo HADR

Bây giờ bạn đã học được khái niệm về HADR, bạn đã sẵn sàng để tìm hiểu cách thiết lập một môi trường HADR.

Trong bảng 2, bạn sẽ thiết lập một môi trường HADR cho một cơ sở dữ liệu được gọi là TEST1. TEST1 đặt trên máy chủ cơ sở dữ liệu server1.torolab.ibm.com, trong thể hiện DB2INST1. Số cổng dịch vụ, hoặc SVCENAME, của DB2INST1 là 50000.

Sử dụng máy chủ cơ sở dữ liệu khác, server2.torolab.ibm.com, như là máy chủ dự phòng. TEST1 hiện không tồn tại trên máy chủ dự phòng.

Bảng 2. Thiết lập một môi trường HADR
Tên máy chủ Tên cá thể SVCENAME hoặc số cổng Tên cơ sở dữ liệu
server1.torolab.ibm.comDB2INST150000TEST1
server2.torolab.ibm.comDB2INST150000--

Để khởi tạo HADR lần đầu tiên, thực hiện năm bước sau như hình 13 chỉ ra:

Hình 13. Các bước khởi tạo một môi trường HADR
Các bước khởi tạo một môi trường HADR
  1. Nhận biết các máy chủ chính và các máy chủ dự phòng. Xác định tên máy chủ, địa chỉ IP của máy chủ và tên dịch vụ hoặc số cổng cho mỗi một trong các cơ sở dữ liệu HADR.

    Bạn đã nhận dạng các máy chủ chính và dự phòng. Máy chủ chính là server1. Máy chủ dự phòng là server2

    Hãy chắc chắn rằng cả hai máy chủ này có thể liên lạc với nhau thông qua TCPIP. Hãy thử ping với nhau bằng cách sử dụng tên máy chủ của chúng; không có lỗi nào. Nếu tên máy chủ không làm việc, thử sử dụng các địa chỉ TCPIP của chúng. Sử dụng lựa chọn thay thế hoạt động tốt nhất cho cấu hình HADR của bạn.

  2. Tạo cơ sở dữ liệu dự phòng bằng cách nhân bản cơ sở dữ liệu chính.

    Có hai tùy chọn để nhân bản cơ sở dữ liệu chính:

    • Một tùy chọn để nhân bản cơ sở dữ liệu chính và khôi phục lại nó trên máy chủ dự phòng. Tùy chọn này sử dụng phương pháp sao lưu và khôi phục lại theo chuẩn.
    • Một tùy chọn khác để nhân bản cơ sở dữ liệu chính là nhân bản tách. Thực hiện việc nhân bản tách cơ sở dữ liệu chính và khởi tạo nó trên máy chủ dự phòng. Khi khởi tạo nhân bản, tùy chọn dự phòng phải được sử dụng với lệnh db2inidb để nhân bản và các tùy chọn ảnh chụp để làm việc.

    Trong ví dụ này, sử dụng phương pháp sao lưu/khôi phục lại để tạo ra cơ sở dữ liệu dự phòng.

    Trước tiên nhận một bản sao lưu của các cơ sở dữ liệu chính, TEST1, trên server1:

    BACKUP DB test1

    Tiếp theo, truyền tệp (ftp) ảnh sao lưu trên máy chủ dự phòng và khôi phục lại nó.

    Trên cơ sở dữ liệu dự phòng yêu cầu tính đối xứng chặt chẽ của không gian bảng và cấu hình thùng chứa. Tên, đường dẫn và kích cỡ của thùng chứa phải phù hợp với cơ sở dữ liệu chính. Các tên của các cơ sở dữ liệu phải giống nhau. Nếu bất kỳ cấu hình nào không phù hợp, HADR không thể sao chép dữ liệu thành công vào cơ sở dữ liệu dự phòng. Do đó, trước khi khôi phục lại cơ sở dữ liệu, hãy đảm bảo máy chủ dự phòng đã cài đặt cùng một kiến trúc như là máy chủ chính.

    Khôi phục hình ảnh sao lưu vào cùng vị trí như nó có trên máy chủ chính. Trên máy chủ chính, một LIST DB DIRECTORY cho thấy:

     Database alias                       = TEST1
     Database name                        = TEST1
     Local database directory             = C:
     Database release level               = b.00
     Comment                              =
     Directory entry type                 = Indirect
     Catalog database partition number    = 0
     Alternate server hostname            =
     Alternate server port number         =

    Cơ sở dữ liệu nằm trên ổ C: trên máy chủ chính. Khi khôi phục lại hình ảnh sao lưu trên máy chủ dự phòng, cũng khôi phục lại nó vào ổ C. Trên máy chủ dự phòng, server2, dùng lệnh sau đây để khôi phục lại cơ sở dữ liệu TEST1:

    RESTORE DB test1 ON C:

    Sau khi việc khôi phục lại được hoàn thành, cơ sở dữ liệu được đặt vào trong trạng thái chờ cam kết tiếp. Điều này là do bản sao lưu đã nhận được từ một cơ sở dữ liệu được kích hoạt cho việc ghi log tư liệu. KHÔNG dùng lệnh ROLLFORWARD để ép cơ sở dữ liệu ra ngoài trạng thái chờ cam kết tiếp. Cơ sở dữ liệu phải duy trì trạng thái này để bắt đầu HADR như là một cơ sở dữ liệu dự phòng đúng.

  3. Thiết lập các tham số cấu hình HADR sau trên cả hai cơ sở dữ liệu chính và dự phòng:
    • HADR_LOCAL_HOST
    • HADR_LOCAL_SVC
    • HADR_REMOTE_HOST
    • HADR_REMOTE_SVC
    • HADR_REMOTE_INST
    • HADR_SYNCMODE
    • LOGINDEXBUILD

    Thiết lập tham số cấu hình cơ sở dữ liệu LOGINDEXBUILD là ON trong môi trường HADR. Nếu không, bất kỳ việc tạo chỉ mục, tái tạo lại hoặc tổ chức lại nào trên máy chủ cơ sở dữ liệu chính hiện tại hoặc tương lai có thể không được phục hồi trên máy chủ cơ sở dữ liệu dự phòng hiện tại hoặc tương lai bằng HADR. Các chỉ số không thể phục hồi được đánh dấu là không hợp lệ và được xây dựng rành mạch hoặc ở cuối của quá trình tiếp quản HADR hoặc sau quá trình tiếp quản HADR khi các bảng mức thấp được truy cập.

    Trên mỗi máy chủ, gán một cổng TCPIP chưa sử dụng cho HADR sử dụng. Không có quy tắc chặt chẽ nào để chọn một số cổng cho HADR; miễn là nó không bị ứng dụng khác dùng và nó không là SVCENAME hoặc SVCENAME+1, thì nó có thể được sử dụng.

    Trên máy chủ chính, sử dụng cổng 70000 cho HADR. Cập nhật tệp Windows\System32\drivers\etc\services để thêm dòng sau đây:

    Hadr_port 	70000/tcp

    Trên máy chủ dự phòng, sử dụng cổng 80000 cho HADR. (Bạn có thể sử dụng cổng 70000 nếu nó đáp ứng được các quy tắc đã mô tả trong Bảng 1. Với mục đích minh họa, chúng tôi đã chọn 80000 để cho nó dễ dàng phân biệt giữa cổng máy chủ chính và cổng máy chủ dự phòng).

    Thêm dòng sau trong các dịch vụ tệp trên máy chủ dự phòng:

    Hadr_port 	80000/tcp

    Sử dụng giá trị mặc định cho HADR_SYNCMODE, đó là NEARSYNC.

    Bây giờ bạn có tất cả các thông tin cần thiết để cấu hình các tham số HADR. Dùng các lệnh sau để cấu hình các tham số trên máy chủ dự phòng:

    UPDATE DB CFG FOR test1 USING HADR_LOCAL_HOST server2.torolab.ibm.com
    UPDATE DB CFG FOR test1 USING HADR_LOCAL_SVC 80000
    UPDATE DB CFG FOR test1 USING HADR_REMOTE_HOST server1.torolab.ibm.com
    UPDATE DB CFG FOR test1 USING HADR_REMOTE_SVC 70000
    UPDATE DB CFG FOR test1 USING HADR_REMOTE_INST db2inst1
    UPDATE DB CFG FOR test1 USING LOGINDEXBUILD on

    Trên máy chủ cơ sở dữ liệu chính, đặt cấu hình một bộ các tham số giống nhau:

    UPDATE DB CFG FOR test1 USING HADR_LOCAL_HOST server1.torolab.ibm.com
    UPDATE DB CFG FOR test1 USING HADR_LOCAL_SVC 70000
    UPDATE DB CFG FOR test1 USING HADR_REMOTE_HOST server2.torolab.ibm.com
    UPDATE DB CFG FOR test1 USING HADR_REMOTE_SVC 80000
    UPDATE DB CFG FOR test1 USING HADR_REMOTE_INST db2inst1
    UPDATE DB CFG FOR test1 USING LOGINDEXBUILD on
  4. Bắt đầu HADR trên cơ sở dữ liệu dự phòng bằng cách sử dụng lệnh START HADR :
    START HADR ON DB test1 AS STANDBY

    Bắt đầu cơ sở dữ liệu dự phòng trước khi bắt đầu cơ sở dữ liệu chính. Nếu bạn bắt đầu cơ sở dữ liệu chính đầu tiên, các thủ tục khởi động không thành công nếu cơ sở dữ liệu dự phòng chưa được bắt đầu trong khoảng thời gian được tham số cấu hình cơ sở dữ liệu HADR_TIMEOUT chỉ rõ.

  5. Bắt đầu HADR trên cơ sở dữ liệu chính, như trong ví dụ sau đây:
    START HADR ON DB test1 AS PRIMARY

    HADR bây giờ là bắt đầu trên cơ sở dữ liệu chính và dự phòng.

    Khi máy chủ chính là lần đầu tiên được bắt đầu, nó chờ máy chủ dự phòng liên lạc với nó. Nếu máy chủ dự phòng không thực hiện liên lạc với máy chính sau một khoảng thời gian cụ thể, HADR không bắt đầu. Khoảng thời gian chờ này được đặt cấu hình bằng cách sử dụng tham số cấu hình HADR_TIMEOUT (xem Bảng 1). Mục đích là để tránh hai hệ thống vô ý khởi động như là máy chính cùng một lúc.

    Trong quá trình khởi động HADR, các cơ sở dữ liệu đi qua các trạng thái sau đây: bắt kịp cục bộ, chờ bắt kịp từ xa, bắt kịp từ xa và ngang hàng. Các log được vận chuyển tự động từ máy chủ đến máy chủ dự phòng và sau đó chạy lại trên máy chủ dự phòng. Điều này để đảm bảo rằng cơ sở dữ liệu dự phòng được "cập nhật" với cơ sở dữ liệu chính.

    Chúng tôi đề xuất rằng các tham số cấu hình cơ sở dữ liệu và các tham số cấu hình của trình quản lý cơ sở dữ liệu giống hệt nhau trên các hệ thống mà ở đó có đặt các cơ sở dữ liệu chính và dự phòng. Nếu không, các cơ sở dữ liệu dự phòng sẽ không thực hiện đúng cách như cơ sở dữ liệu chính.

    Một trường hợp ngoại lệ là tham số cấu hình cơ sở dữ liệu LOGFILSIZ. Giá trị của tham số này được máy chủ dự phòng bỏ qua. Máy chủ dự phòng tự động tạo ra các tệp log phù hợp với kích thước của các tệp log trên cơ sở dữ liệu chính. Điều này đảm bảo các tệp log giống hệt nhau trên cả hai cơ sở dữ liệu.

Thực hiện một việc tiếp quản -- chuyển đổi các vai trò cơ sở dữ liệu

Bây giờ bạn đã thiết lập một môi trường HADR. Trong trường hợp mà máy chủ chính trở nên không sẵn sàng, hãy thực hiện một phép tiếp quản HADR và để cho các cơ sở dữ liệu dự phòng đảm nhận vai trò cơ sở dữ liệu chính, đảm bảo sự gián đoạn nhỏ nhất cho những người dùng đang kết nối. Thực hiện một việc tiếp quản HADR theo một trong hai cách sau đây:

  • Chuyển đổi các vai trò cơ sở dữ liệu giữa máy chủ chính và máy chủ dự phòng, có nghĩa là, máy chủ dự phòng sẽ trở thành máy chủ chính, máy chủ chính sẽ trở thành máy chủ dự phòng.
  • Dự phòng lỗi từ máy chủ chính đến máy chủ dự phòng.

Tùy chọn chuyển đổi vai trò của cơ sở dữ liệu làm cho bất kỳ các ứng dụng hiện đang kết nối với cơ sở dữ liệu chính HADR buộc phải tắt. Hành động này được thiết kế để phối hợp với tính năng định tuyến lại máy khách tự động của DB2. Với tính năng định tuyến lại, các kết nối đang dùng bị buộc phải tắt trong lúc thay cơ sở dữ liệu và thiết lập lại nối đến máy chủ chính mới sau khi thay xong. Các kết nối máy khách mới vào cơ sở dữ liệu chính cũ sẽ được định tuyến lại tự động đến máy chủ chính mới. (Việc định tuyến lại tự động máy khách được thảo luận chi tiết sau).

Để chuyển đổi các vai trò cơ sở dữ liệu, hãy dùng lệnh TAKEOVER HADR trên cơ sở dữ liệu dự phòng. Lệnh chỉ có thể được dùng trên cơ sở dữ liệu dự phòng và chỉ khi nó ở trạng thái ngang hàng. Nhận tình trạng HADR của một cơ sở dữ liệu bằng cách sử dụng GET SNAPSHOT. Ví dụ:

   GET SNAPSHOT FOR DATABASE ON test1

Lệnh sau bắt đầu một phép chuyển đổi vai trò cơ sở dữ liệu HADR trên cơ sở dữ liệu dự phòng TEST1:

   TAKEOVER HADR ON DB test1

Thực hiện một việc tiếp quản -- dự phòng lỗi

Tùy chọn dự phòng lỗi không chuyển đổi các vai trò cơ sở dữ liệu. Trong một phép dự phòng lỗi, cơ sở dữ liệu dự phòng đảm nhận vai trò cơ sở dữ liệu chính mà không cần phải chuyển đổi cơ sở dữ liệu chính sang dự phòng.

Sử dụng tùy chọn này chỉ khi cơ sở dữ liệu chính không còn là sẵn sàng và bạn muốn cơ sở dữ liệu dự phòng hiện tại trở thành cơ sở dữ liệu chính. Nếu cơ sở dữ liệu chính vẫn còn đang hoạt động mà bạn thực hiện một dự phòng lỗi HADR, bạn có thể làm hỏng cả hai cơ sở dữ liệu chính, hoặc dữ liệu có thể bị mất.

Trước khi dùng lệnh TAKEOVER đảm bảo chắc chắn rằng cơ sở dữ liệu chính bị lỗi là không sẵn sàng. Khi một cơ sở dữ liệu gặp lỗi nội bộ, lệnh tắt máy bình thường có thể không hoàn toàn tắt nó. Bạn có thể cần phải sử dụng các lệnh của hệ điều hành để loại bỏ nguồn tài nguyên như các quá trình xử lý, bộ nhớ chia sẻ hoặc các kết nối mạng.

Nếu cơ sở dữ liệu chính bị lỗi không hoàn toàn bị vô hiệu hoá, cơ sở dữ liệu dự phòng vẫn sẽ gửi thông báo đến cơ sở dữ liệu chính yêu cầu nó để tắt máy. Cơ sở dữ liệu dự phòng sau đó chuyển sang vai trò của cơ sở dữ liệu chính cho dù nó có hay không nhận được xác nhận tắt máy từ cơ sở dữ liệu chính.

Để thực hiện một phép dự phòng lỗi HADR, dùng lệnh TAKEOVER HADR với tùy chọn BY FORCE trên cơ sở dữ liệu dự phòng. Lưu ý rằng lệnh này chỉ có thể được dùng trên cơ sở dữ liệu dự phòng và chỉ khi nó ở trạng thái ngang hàng hoặc trạng thái chờ bắt kịp từ xa.

Lệnh sau bắt đầu một phép dự phòng lỗi HADR trên cơ sở dữ liệu TEST1:

   TAKEOVER HADR ON DB test1 BY FORCE

Tóm tắt các hành vi tiếp quản

Bảng 3 và 4 tóm tắt các hành vi của lệnh TAKEOVER HADR khi được dùng trên cơ sở dữ liệu dự phòng, đang ở trong trạng thái:

Bảng 3. Hành vi tiếp quản không có tùy chọn BY FORCE
Trạng thái cơ sở dữ liệu dự phòngHành vi tiếp quản
Ngang hàngCác cơ sở dữ liệu chính và dự phòng chuyển đổi các vai trò.
Bắt kịp tại chỗ hay bắt kịp từ xaLỖI
Chờ bắt kịp từ xaLỖI
Bảng 4. Hành vi tiếp quản có tùy chọn BY FORCE
Trạng thái cơ sở dữ liệu dự phòngHành vi tiếp quản
Ngang hàngMáy dự phòng thông báo cho máy chính tự tắt máy (chính). Máy dự phòng dừng tiếp nhận các log từ máy chính, kết thúc việc thực hiện các log mà nó đã nhận được và sau đó trở thành một máy chính. Máy dự phòng không chờ đợi bất kỳ tin báo xác nhận nào từ máy chính để xác nhận rằng nó đã nhận được thông báo tiếp quản hoặc là nó đã tắt.
Bắt kịp tại chỗ hay bắt kịp từ xaLỖI
Chờ bắt kịp từ xaCơ sở dữ liệu dự phòng trở thành một cơ sở dữ liệu chính

Tính năng định tuyến lại máy khách tự động

Bây giờ, bạn đã thấy cách thiết lập một môi trường HADR và cách thực hiện một sự tiếp quản khi sử dụng cả hai chuyển đổi vai trò cơ sở dữ liệu và các tùy chọn dự phòng lỗi.

Bạn đã học được cách tạo ra một cơ sở dữ liệu có tính sẵn sàng cao với tính năng HADR. Nếu cơ sở dữ liệu chính tắt, cơ sở dữ liệu dự phòng của nó tiếp quản và trở thành cơ sở dữ liệu chính mới.

Tuy nhiên, điều này không có nghĩa là các ứng dụng của máy khách sẽ tự động nhận thức được sự tiếp quản này và đủ thông minh để kết nối đến máy chủ chính mới, thay cho máy chủ chính cũ, sau việc tiếp quản. Trong thực tế, chỉ với HADR được kích hoạt, các máy khách sẽ không tự động kết nối tới cơ sở dữ liệu chính mới, sau việc tiếp quản. Chúng vẫn cố gắng kết nối với máy chủ chính cũ và không kết nối được do máy chủ chính đã trở thành một máy chủ dự phòng (chuyển đổi vai trò cơ sở dữ liệu) hoặc đã bị vô hiệu hóa hoàn toàn (dự phòng lỗi).

Đó là lý do tính năng định tuyến lại máy khách tự động của DB2 là cần thiết. Khi một môi trường HADR được kích hoạt với tính năng định tuyến lại máy khách tự động, sau khi tiếp quản, tất cả các kết nối khách hàng mới và hiện tại sẽ được tự động định tuyến lại đến máy chủ chính mới vì vậy các ứng dụng có thể tiếp tục công việc với sự gián đoạn tối thiểu.

Để kích hoạt tính năng định tuyến lại máy khách tự động, hãy dùng lệnh UPDATE ALTERNATE SERVER trên cơ sở dữ liệu chính. Sau đây là cú pháp của lệnh:

UPDATE ALTERNATE SERVER FOR DATABASE database-alias
USING HOSTNAME alternate-server-hostname PORT port-number

Để kích hoạt tính năng định tuyến lại máy khách tự động với cơ sở dữ liệu TEST1 trên server1 sao cho tất cả các kết nối máy khách hiện có và mới được định tuyến lại tới server2 sau việc tiếp quản, dùng lệnh sau trên server1:

UPDATE ALTERNATE SERVER FOR DATABASE test1 USING 
HOSTNAME server2.torolab.ibm.com PORT 50000

Trong ví dụ này, 50000 là cổng SVCENAME, không phải cổng HADR.

Các thông tin máy chủ thay thế được lưu trữ trong thư mục cơ sở dữ liệu của server1. Nếu bạn dùng một lệnh LIST DB DIRECTORY lưu ý rằng thông tin máy chủ thay thế (cả tên máy và cả số cổng) đã được thêm vào:

 Database alias                       = TEST1
 Database name                        = TEST1
 Local database directory             = C:
 Database release level               = b.00
 Comment                              =
 Directory entry type                 = Indirect
 Catalog database partition number    = 0
 Alternate server hostname            = server2.torolab.ibm.com
 Alternate server port number         = 50000

Khi một ứng dụng khách từ xa kết nối vào cơ sở dữ liệu này, thông tin máy chủ thay thế được lấy và cũng bắt đầu được lưu trữ trong thư mục cơ sở dữ liệu của máy khách. Khi sử dụng thông tin này, máy khách biết được để nối tới máy chủ nào trong trường hợp máy chủ chính, server1, trở nên không sẵn sàng.

Bởi vì máy khách không nhận được thông tin máy chủ thay thế này cho đến khi nó thực hiện một kết nối đến máy chủ chính, hãy dùng lệnh ALTERNATE SERVER trước một phép tiếp quản và chắc chắn rằng máy khách đã thực hiện ít nhất một kết nối thành công vào nó trước khi tiếp quản.

Thực hiện một việc tiếp quản với tính năng định tuyến lại máy tự động được kích hoạt

Bây giờ chúng ta hãy xem xét một ví dụ về cách tiếp quản một hoạt động tiếp quản thực hiện với cơ sở dữ liệu trên Test1 như thế nào với tính năng định tuyến lại máy tự động được kích hoạt.

Bạn đã thiết lập một môi trường HADR cho các cơ sở dữ liệu Test1 bằng cách sử dụng năm bước đã thảo luận trong phần Khởi tạo HADR. Bạn cũng đã chạy lệnh UPDATE ALTERNATE SERVER trên server1 để định rõ server2 như máy chủ thay thế của nó.

Để minh họa cách hoạt động của tính năng định tuyến lại máy khách trong một môi trường HADR, hãy tạo một kết nối máy khách từ xa tới TEST1 trên server1 và sau đó thực hiện việc tiếp quản trên máy chủ cơ sở dữ liệu dự phòng, server2. Nếu HADR và tính năng định tuyến lại máy khách hoạt động đúng, bạn sẽ có thể thấy rằng kết nối máy khách được định tuyến lại tự động tới server2 sau việc tiếp quản này.

Trong ví dụ này, thực hiện một việc tiếp quản mà không có tùy chọn BY FORCE.

Đầu tiên, tạo một kết nối máy khách từ xa đến cơ sở dữ liệu TEST1 trên server1. Thực hiện việc này chỉ đơn giản bằng cách dùng một lệnh CONNECT TO DATABASE trên một máy khách DB2 từ xa:

CONNECT TO DB test1 USER user1

Để thực hiện một kết nối như vậy, máy khách phải đã được đặt cấu hình để kết nối đến server1. Xin vui lòng tham khảo hướng dẫn đầu tiên trong loạt bài viết này để biết thông tin về cách đặt cấu hình một kết nối máy khách từ xa.

Sau khi kết nối được thực hiện, các thông tin máy chủ thay thế trên máy chủ chính được lấy ra và được lưu trữ trong thư mục cơ sở dữ liệu của máy khách:

 Database alias                       = TEST1
 Database name                        = TEST1
 Node name                            = server1
 Database release level               = b.00
 Comment                              =
 Directory entry type                 = Remote
 Catalog database partition number    = -1
 Alternate server hostname            = server2.torolab.ibm.com
 Alternate server port number         = 50000

Hãy đảm bảo kết nối được thiết lập thành công và bạn có thể truy vấn cơ sở dữ liệu TEST1. Hãy dùng một lệnh LIST APPLICATION trên server1, nó sẽ hiển thị các kết nối máy khách từ xa trên cơ sở dữ liệu TEST1:

D:\Programs\IBM\SQLLIB\BIN>db2 list applications

Auth Id  Application    Appl.      Application Id        DB       # of
         Name           Handle                           Name     Agents
-------- -------------- ---------- ---------------       -----    ------
USER1    db2bp.exe      8          9.26.94.149.24336.060601000305
                                                         TEST1    1

Tiếp theo, thực hiện việc tiếp quản trên cơ sở dữ liệu TEST1. Dùng lệnh sau trên máy chủ dự phòng, server2:

TAKEOVER HADR ON DB test1

Hãy xem những gì xảy ra cho kết nối máy khách từ xa, tiếp theo việc tiếp quản này.

Hãy thử truy vấn lại cơ sở dữ liệu TEST1 từ máy khách. Bất kỳ truy vấn nào đến cơ sở dữ liệu TEST1 sẽ trả về một thông báo lỗi. Ví dụ, dùng lệnh LIST TABLES từ kết nối máy khách:

D:\Programs\IBM\SQLLIB\BIN>db2 list tables
SQL30108N A connection failed but has been re-established. 
The hostname or IP address is "server2" and the service name or port number is "50000". 
Special registers may or may not be re-attempted (Reason code = "1").  
SQLSTATE=08506

Thông báo này cho chúng ta biết kết nối hiện có đến server1 đã bị hỏng. Tuy nhiên, nó đã được thiết lập lại bằng cách kết nối đến một máy chủ có tên là 'server2', đó là máy chủ dự phòng của chúng ta.

Điều này chứng tỏ rằng tính năng định tuyến lại máy khách đã hoạt động. Bây giờ bạn đang kết nối với máy chủ chính mới, server2.

Hãy dùng một lệnh LIST APPLICATIONS trên server2. Bạn thấy rằng kết nối máy khách từ xa đã được định tuyến lại:

H:\Programs\IBM\SQLLIB\BIN>db2 list applications

Auth Id  Application    Appl.      Application Id        DB       # of
         Name           Handle                           Name     Agents
-------- -------------- ---------- ---------------       -----    ------
USER1    db2bp.exe      55         9.26.94.149.29200.060601001803
                                                         TEST1    1

Nếu bạn truy vấn lại cơ sở dữ liệu, bạn sẽ nhận được một phản ứng từ máy chủ chính mới. Ngoài ra, bất kỳ kết nối mới nào với máy chủ chính cũ sẽ được định tuyến lại đến máy chủ chính mới.

Sử dụng lệnh GET SNAPSHOT để nhận được trạng thái HADR của một cơ sở dữ liệu. Dùng lệnh sau trên server2 và bạn sẽ thấy rằng server2 đã đóng vai trò cơ sở dữ liệu chính:

db2 "get snapshot for database on test1"

  HADR Status
  Role                   = Primary
  State                  = Peer
  Synchronization mode   = Nearsync
  Connection status      = Connected , 05/31/2006 20:17:24.989618
  Heartbeats missed      = 0
  Local host             = server2.torolab.ibm.com
  Local service          = 80000
  Remote host            = server1.torolab.ibm.com
  Remote service         = 70000
  Remote instance        = db2inst1
  timeout(seconds)       = 120
  Primary log position(file, page, LSN) = S0000007.LOG, 66, 0000000002FE2D9B
  Standby log position(file, page, LSN) = S0000007.LOG, 66, 0000000002FE2D9B
  Log gap running average(bytes) = 0

Tích hợp lại một cơ sở dữ liệu sau một phép tiếp quản

Sau khi một phép tiếp quản được thực hiện, nếu cơ sở dữ liệu bị hỏng sau đó trở nên sẵn sàng hoạt động, nó không tự động thừa nhận vai trò của một cơ sở dữ liệu chính.

Đưa trả nó về trạng thái của nó như là cơ sở dữ liệu chính thực hiện như sau:

  1. Sửa chữa hệ thống ở đó có đặt cơ sở dữ liệu chính ban đầu. Điều này có thể liên quan đến việc sửa chữa lỗi phần cứng hoặc khởi động lại hệ điều hành có sự cố.
  2. Khởi động lại cơ sở dữ liệu chính bị hỏng như là một cơ sở dữ liệu dự phòng.
  3. Thực hiện một phép tiếp quản để đảm nhận vai trò cơ sở dữ liệu chính.

Việc tích hợp lại không thành công nếu hai bản sao của cơ sở dữ liệu có luồng log không tương thích. Đặc biệt, HADR yêu cầu cơ sở dữ liệu chính ban đầu đã không áp dụng bất kỳ phép được log nào mà chưa bao giờ được phản ánh trên cơ sở dữ liệu dự phòng ban đầu trước khi nó tiếp quản như cơ sở dữ liệu chính mới. Nếu điều này đã xảy ra, khởi động lại cơ sở dữ liệu chính ban đầu như là một cơ sở dữ liệu dự phòng bằng cách khôi phục ảnh sao lưu của cơ sở dữ liệu chính mới hoặc bằng cách khởi tạo một phép nhân bản tách.

Sau khi cơ sở dữ liệu chính ban đầu đã liên kết lại cặp HADR như cơ sở dữ liệu dự phòng, thực hiện một phép tiếp quản để chuyển đổi vai trò của các cơ sở dữ liệu để cho phép cơ sở dữ liệu chính ban đầu trở lại là cơ sở dữ liệu chính.

Dừng HADR

Sử dụng lệnh STOP HADR lệnh dừng các phép HADR trên cơ sở dữ liệu chính hoặc dự phòng. Dừng HADR trên một hoặc cả hai cơ sở dữ liệu. Nếu bạn đang thực hiện bảo trì trên hệ thống dự phòng, bạn chỉ cần dừng HADR trên cơ sở dữ liệu dự phòng. Để dừng việc sử dụng hoàn toàn HADR, dừng HADR trên cả hai cơ sở dữ liệu.

Nếu bạn muốn dừng cơ sở dữ liệu cụ thể nhưng vẫn muốn duy trì vai trò của nó hoặc như một cơ sở dữ liệu chính HADR hoặc như cơ sở dữ liệu dự phòng, không dùng lệnh STOP HADR. Nếu bạn làm thế, cơ sở dữ liệu sẽ trở thành một cơ sở dữ liệu chuẩn và có thể yêu cầu khởi chạy lại tiếp tục các hoạt động như một cơ sở dữ liệu HADR. Thay vào đó, dùng lệnh DEACTIVATE DATABASE.

Để dừng HADR trên cơ sở dữ liệu TEST1, dùng:

STOP HADR ON DB test1

Trình thủ thuật HADR

Như bạn thấy, HADR là một tính năng mạnh mẽ được sử dụng để thực hiện một giải pháp sẵn sàng cao. Một công cụ giao diện đồ họa người dùng được gọi là trình thủ thuật HADR có sẵn từ Trung tâm điều kiển DB2 sẽ giúp bạn thiết lập và đặt cấu hình HADR.

Trình thủ thuật hướng dẫn bạn qua từng nhiệm vụ cần thiết để thiết lập môi trường HADR, dừng và bắt đầu HADR và chuyển đổi các vai trò cơ sở dữ liệu theo HADR. Để khởi chạy trình thủ thuật, hãy vào Trung tâm điều kiển và nhấn chuột phải trên cơ sở dữ liệu. Chọn Phục hồi sự cố có tính sẵn sàng cao (High Availability Disaster Recovery). Chọn để thiết lập hoặc quản lý HADR:

Hình 14. Khởi chạy trình thủ thuật HADR từ Trung tâm điều kiển
Khởi chạy trình thủ thuật HADR từ Trung tâm điều kiển

Nếu bạn chọn Set Up, một trình thủ thuật theo từng bước được khởi chạy như được biểu thị trong Hình 14.

Hình 15. Thiết lập môi trường HADR
Thiết lập môi trường HADR

Nếu bạn sử dụng Trung tâm điều khiển để thiết lập một môi trường HADR, tính năng định tuyến lại máy khách được tự động kích hoạt.


Các tham số cấu hình động

Các tham số cấu hình cơ sở dữ liệu động

Khả năng cập nhật các tham số cấu hình cơ sở dữ liệu, mà không cần phải phục hồi lại cơ sở dữ liệu, là một khía cạnh quan trọng của một hệ thống HA.

Các phép cấu hình cơ sở dữ liệu động được thực hiện trong khi người dùng kết nối với cơ sở dữ liệu. Nói cách khác, cơ sở dữ liệu là trực tuyến trong khi bạn cập nhật hệ thống của bạn. Các giá trị cấu hình mới có hiệu lực ngay lập tức; bạn không cần phải khởi động lại cơ sở dữ liệu.

Ví dụ, nếu bạn phát hiện ra tham số logsecond được thiết lập tới một giá trị quá thấp đối với môi trường của bạn, bạn sẽ muốn làm tăng nó. Bởi vì logsecond là một tham số cấu hình động, bạn có thể thay đổi giá trị của nó trong khi những người dùng đã kết nối và giá trị này có hiệu lực ngay lập tức. Bạn không cần phải ngắt kết nối những người dùng của bạn để thay đổi tham số này.

Không phải tất cả các tham số DB2 là cấu hình động. Để tìm hiểu xem một tham số là động hay không, hãy sử dụng Trung tâm điều khiển:

Hình 16. Cấu hình các tham số cơ sở dữ liệu bằng cách sử dụng Trung tâm điều khiển
Cấu hình các tham số cơ sở dữ liệu bằng cách sử dụng Trung tâm điều khiển

Nếu bạn nhấn chuột phải vào tên cơ sở dữ liệu từ Trung tâm điều kiển và chọn các tham số cấu hình (Configure Parameters), bạn sẽ có được một danh sách về các tham số cấu hình cơ sở dữ liệu, như được hiển thị trong Hình 17:

Hình 17. Trung tâm điều khiển chỉ ra các tham số cơ sở dữ liệu
Trung tâm điều khiển chỉ ra các tham số cơ sở dữ liệu

Giá trị trong cột Dynamic cho biết liệu một tham số được cấu hình động hay không. Nếu một tham số không phải là động và bạn cập nhật giá trị của nó, giá trị mới xuất hiện trong cột Pending Value. Giá trị này có hiệu lực khi cơ sở dữ liệu được khởi động lại.

Bạn cũng có thể nhận được thông tin này bằng cách sử dụng lệnh GET DB CFG với tùy chọn SHOW DETAIL. Ví dụ:

db2 "get db cfg for sample show detail"

       Database Configuration for Database sample
 
 Description                            Parameter         Current Value   Delayed Value
 ------------------------------------  --------------     --------------  -------------
 Database configuration release level                      = 0x0b00
 Database release level                                    = 0x0b00

 Database territory                                        = C
 Database code page                                        = 1208
 Database code set                                         = UTF-8
... 
Interval for checking deadlock (ms)   (DLCHKTIME)          = 10000          10000   
Lock timeout (sec)                    (LOCKTIMEOUT)        = -1             20 
...

Cột Delayed Value cho thấy giá trị có hiệu lực khi cơ sở dữ liệu được khởi động lại. Nếu giá trị này không khớp với giá trị hiện tại, sau đó bạn biết rằng tham số không phải là động.

Các tham số cấu hình của trình quản lý cơ sở dữ liệu động

Giống như các tham số cấu hình cơ sở dữ liệu động, một số các tham số cấu hình của trình quản lý cơ sở dữ liệu cũng là động. Bạn có thể sử dụng hoặc Trung tâm điều kiển hoặc lệnh GET DBM CFG SHOW DETAIL để tìm các tham số này.

Các phép cấu hình của trình quản lý cơ sở dữ liệu động được thực hiện trong khi một ứng dụng được gắn vào dữ liệu thể hiện.

Đối với các tham số mà không phải là động, các giá trị được đặt cấu hình lại có hiệu lực khi thể hiện được khởi động lại.


Tóm tắt

Đây là một bản tóm tắt về những gì bạn đã học được trong hướng dẫn này:

  • Khái niệm về tính sẵn sàng cao và ba đặc tính của một hệ thống sẵn sàng cao.
  • Vận chuyển log hoạt động như thế nào và cách thiết lập vận chuyển log giữa một cơ sở dữ liệu chính và một cơ sở dữ liệu dự phòng.
  • DB2 hỗ trợ cho sự hỗ trợ nhân bản tách và I/O tạm dừng.
  • Cách sử dụng lệnh db2inidb để khởi tạo một phép nhân bản tách.
  • HADR hoạt động như thế nào.
  • Làm thế nào để khởi tạo một hệ thống HADR, thực hiện một phép tiếp quản, tích hợp lại một cơ sở dữ liệu vào trong hệ thống HADR và dừng HADR.
  • Làm thế nào để sử dụng tính năng định tuyến lại tự động máy khách trong một môi trường HADR để giảm thiểu sự gián đoạn cho các ứng dụng của máy khách.
  • Các tham số cấu hình cơ sở dữ liệu có thể đặt cấu hình động và các tham số cấu hình của trình quản lý cơ sở dữ liệu.

Lời chúc mừng! Bạn đã vừa hoàn thành hướng dẫn cuối cùng trong loạt bài chuẩn bị lấy chứng chỉ Quản trị cơ sở dữ liệu cho kỳ thi 731 quản trị cơ sở dữ liệu cho Linux, UNIX và Windows. Bạn nên chuẩn bị sẵn sàng để tham dự kỳ thi với sự tự tin. Chúc may mắn!

Tài nguyên

Học tập

  • Xem các phần khác của loạt bài hướng dẫn chuẩn bị cho kỳ thi 731 DBA DB2 9.
  • Bạn có thể tìm hiểu thêm về việc quản lý DB2 từ tài nguyên sau:
    • Hướng dẫn quản trị DB2 9: Hiệu năng
    • Trung tâm Thông tin DB2 9, các chủ đề sau:
      • Thiết lập máy chủ DB2 sau khi cài đặt thủ công.
      • Cấu hình truyền thông máy khách đến máy chủ.
      • Cấu hình truyền thôngmáy chủ DB2.
    • Hướng dẫn quản trị DB2 9: Thực hiện
  • Để biết thêm thông tin về cấp chứng chỉ quản trị cơ sở dữ liệu DB2 9 cho Linux, UNIX và Windows (kỳ thi 731), hãy xem các liên kết này:
  • Tổng quan về DB2 9. Tìm thông tin về các máy chủ dữ liệu mới bao gồm công nghệ pureXML được đã cấp bằng sáng chế.
  • Trang Web Kỳ thi cấp chứng chỉ. Nhấn vào số bài thi để xem thông tin thêm về các kỳ thi 730 và 731.

Lấy sản phẩm và công nghệ

  • Một phiên bản dùng thử DB2 9 có sẵn để tải về miễn phí.
  • Tải về DB2 Express-C, một bản miễn phí của DB2 Express Edition (Ấn bản Express DB2) cho cộng đồng cung cấp nhiều tính năng dữ liệu lõi như DB2 Express Edition và cung cấp một cơ sở vững chắc để xây dựng và triển khai các ứng dụng.

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Information Management
ArticleID=431527
ArticleTitle=Chuẩ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)
publish-date=10032009