Di chuyển một ứng dụng PHP từ MySQL sang DB2, Phần 2: Di trú dữ liệu của bạn

Các bài học từ một nghiên cứu sâu về một ứng dụng mạng nội bộ của IBM

Tìm hiểu tại sao cần di chuyển một ứng dụng PHP sang DB2®, cách lập kế hoạch di trú, cách thực hiện nó, cách hỗ trợ nó và cách xử lý các rủi ro tiềm năng dựa trên kinh nghiệm của ca nghiên cứu sâu một ứng dụng mạng nội bộ của IBM. Loạt bài bốn phần này chia sẻ các bài học từ cuộc di trú MySQL-sang-DB2 thành công cho một ứng dụng mạng nội bộ PHP chủ yếu với 4.000 người dùng toàn cầu trong IBM sử dụng để hỗ trợ sản xuất nội dung cho ibm.com. Phần 2 mô tả cách di trú cơ sở dữ liệu.

Daniel Krook, Kỹ sư phần mềm, IBM

Daniel Krook là một chuyên gia CNTT có chứng chỉ xuất sắc của IBM/Open Group làm việc tại vùng New York City mở rộng. Ông đã có hơn mười năm kinh nghiệm trong việc phát triển ứng dụng web và hiện đang xây dựng một cơ sở hạ tầng Đám mây cho IBM bằng cách sử dụng các công nghệ Java EE, DB2, REST và công nghệ di động. Ông có các chứng chỉ về PHP, Java EE, BlackBerry, DB2 và Solaris. Ông viết các bài liên quan đến PHP cho developerWorks của IBM và đồng tác giả của quyển sách IBM Redbook "Developing PHP Applications for IBM Data Servers (Phát triển các ứng dụng PHP cho Các máy chủ dữ liệu của IBM)".


Cấp độ đóng góp cho developerWorks của
        tác giả

Yan Li Mu, Kiến trúc sư CNTT, IBM China

Yan Li Mu là một kiến trúc sư công nghệ thông tin làm việc tại Đại Liên, Trung Quốc. Ông có hơn tám năm kinh nghiệm về phát triển ứng dụng web tập trung vào các công nghệ Java EE, PHP và phát triển cơ sở dữ liệu



Mark Nusekabel, Kiến trúc sư CNTT cao cấp, I.B.M.

Mark Nusekabel là một Kiến trúc sư CNTT có chứng chỉ xuất sắc của IBM/Open Group sống ở vịnh Tampa, vùng Florida. Ông đã có hơn 20 năm kinh nghiệm trong lĩnh vực công nghệ thông tin và ông hiện đang xây dựng các công cụ nội bộ bằng cách sử dụng JavaScript, PHP, Java và DB2. Ông có các chứng chỉ về các giải pháp kinh doanh điện tử, Java và XML.



05 01 2012

Giới thiệu về loạt bài này

MySQL hiện là máy chủ cơ sở dữ liệu phổ biến nhất được sử dụng với ngôn ngữ lập trình PHP để xây dựng các ứng dụng web động. Tuy nhiên, DB2 là một cơ sở dữ liệu phổ biến khác được PHP hỗ trợ đầy đủ và cung cấp các lợi thế hấp dẫn hơn so với MySQL, làm cho nó trở thành một sự lựa chọn lý tưởng cho nhiều ứng dụng.

Loạt bài này mô tả tại sao việc di chuyển một ứng dụng PHP sang DB2 lại có ý nghĩa, cách chuẩn bị cho việc di trú, cách thực hiện nó, cách hỗ trợ nó và cách xử lý các rủi ro tiềm năng dựa trên kinh nghiệm của các tác giả với cuộc di trú mới nhất. Nhiều mẫu mã và mẫu cấu hình được cung cấp, cũng như các chỉ dẫn tài nguyên để giúp cho dự án chạy trơn tru.

Với các ví dụ và các bài học thu được từ một cuộc chuyển đổi thực tế thành công, bạn sẽ thấy đây có thể là một dự án đơn giản, có đủ tài liệu và cung cấp các lợi ích hấp dẫn.

Loạt bài bốn phần này chia sẻ các bài học nhận được từ cuộc di trú MySQL-sang-DB2 thành công cho một ứng dụng mạng nội bộ PHP chủ yếu, cấp độ sản xuất, được 4.000 người dùng toàn cầu trong IBM sử dụng để hỗ trợ sản xuất nội dung cho ibm.com.

  • Phần 1 mô tả các bước cần thực hiện để chuẩn bị cho việc di trú.
  • Phần 2 mô tả các bước cần thực hiện để di trú cơ sở dữ liệu.
  • Phần 3 mô tả các bước cần thực hiện để chuyển đổi mã PHP.
  • Phần 4 mô tả các bước cần thực hiện để triển khai và hỗ trợ ứng dụng.

Bạn sẽ học được điều gì

Mục đích của loạt bài này là cho bạn hiểu những gì cần thiết nói chung để di trú một ứng dụng PHP từ MySQL sang DB2, những tài nguyên nào có sẵn để trợ giúp bạn và một nhóm dự án của IBM đã thực hiện nhiệm vụ này vào đầu năm 2010 như thế nào.

Nếu bạn đã nghiên cứu một cuộc di trú từ MySQL sang DB2, bạn có thể đã thấy những giá trị mà DB2 cung cấp dựa trên tài liệu sản phẩm, các đánh giá tiêu chuẩn về hiệu năng, các tính năng mà bạn đã đọc trong tài liệu DB2 hoặc các so sánh trong các Sách Đỏ của IBM (IBM Redbooks®) dành riêng cho nhiệm vụ này, bao gồm sách Hướng dẫn chuyển đổi MySQL sang DB2 (xem phần Tài nguyên).

Bạn có lẽ cũng biết rằng DB2 Express-C là một máy chủ dữ liệu quan hệ chức năng đầy đủ, miễn phí có thể dễ dàng được cài đặt hoặc được đánh giá bằng cách sử dụng IBM Smart Business Development and Test on the Cloud (Phát triển nghiệp vụ thông minh và Thử nghiệm trên Đám mây của IBM hoặc Amazon EC2). Các liên kết đến các tài nguyên này có sẵn trong phần Tài nguyên.

Loạt bài này cung cấp cho bạn một ví dụ cụ thể về cuộc di trú thực tế đã được thực hiện thành công như thế nào trong năm 2010 cho một ứng dụng mạng nội bộ PHP được sử dụng rất nhiều trong IBM để hỗ trợ quản lý nội dung hàng ngày được công bố trên nhiều phần của trang Web ibm.com.

Sau khi bạn đọc xong loạt bài này, bạn sẽ có thể tạo một trường hợp di trú tương tự, hiểu được thời hạn và các phụ thuộc của các mục công việc cần được thực hiện, dự kiến các rủi ro tiềm năng và biết nơi để tìm kiếm sự hỗ trợ cho từng bước trên đường đi. Tất cả điều này sẽ cho bạn sự tự tin hơn để lựa chọn DB2 và sử dụng nó một cách tốt nhất cho các ứng dụng PHP của bạn hiện đang được phát triển trên MySQL.

Những gì không được trình bày

Loạt bài này nhằm chia sẻ các bài học thu được từ một cuộc di trú nội bộ IBM từ MySQL sang DB2 và cung cấp cho bạn thông tin về tài nguyên có sẵn để thực hiện một công cuộc tương tự. Loạt bài này không phải là một hướng dẫn toàn diện về di trú để có thể áp dụng được cho tất cả các kịch bản.

Để xác định một cách tiếp cận phù hợp với bạn, hãy tham khảo Hướng dẫn chuyển đổi MySQL sang DB2 hoặc liên hệ với SMPO (Software Migration Project Office - Văn phòng dự án di trú phần mềm) để đánh giá di trú miễn phí. Các liên kết này được cung cấp trong phần Tài nguyên.


Giới thiệu về việc di trú cơ sở dữ liệu

Bài viết này trình bày bốn bước chính để di trú cơ sở dữ liệu từ MySQL sang DB2. Nếu cần thiết, hãy tham khảo Phần 1 của loạt bài này để xem lịch trình của các bước này trong toàn bộ quá trình di trú trước khi bắt đầu di trú.

Bước 1: Chuyển đổi cấu trúc cơ sở dữ liệu MySQL sang định dạng DB2
  • Tạo một cơ sở dữ liệu mới trong DB2.
  • Trích xuất cấu trúc cơ sở dữ liệu MySQL nguồn.
  • Kỹ thuật dịch ngược cơ sở dữ liệu để nhận được một sơ đồ quan hệ-thực thể.
  • Cải tiến và sửa đổi cấu trúc mô hình dữ liệu.
  • Chuyển đổi các đối tượng cơ sở dữ liệu khác.
Bước 2: Di chuyển dữ liệu MySQL vào cơ sở dữ liệu DB2
  • Loại bỏ các bảng và dữ liệu không cần thiết.
  • Chuyển đổi bất kỳ dữ liệu nào trong cơ sở dữ liệu nguồn có thể không phù hợp với các kiểu dữ liệu DB2 đích.
  • Trích xuất dữ liệu từ MySQL.
  • Nạp dữ liệu vào DB2.
  • Thiết lập lại các gia số cột mã định danh (ID) đã tạo ra.
Bước 3: Tạo lại các quyền hạn người dùng và cấu hình quản trị cơ sở dữ liệu
  • Thiết lập các tài khoản người dùng cần thiết và gán cho họ các các quyền hạn thích hợp.
  • Triển khai sao lưu cơ sở dữ liệu và kế hoạch khắc phục thảm họa.
  • Cấu hình sao chép để tạo ra một hệ thống ảnh gương mà cơ chế báo cáo Cognos có thể sử dụng.
Bước 4: Kiểm lại bước khởi đầu di trú cơ sở dữ liệu
  • Đảm bảo rằng việc di trú cơ sở dữ liệu đã xong. Nếu không, thực hiện lại các Bước 1-3 cho đến khi việc di trú hoàn thành, như cho thấy trong Hình 1 của Phần 1.
  • Sao lưu hệ thống.
  • Chuẩn bị chuyển đổi ứng dụng.

Tìm hiểu nghiên cứu sâu về ví dụ cơ sở dữ liệu MySQL PTT hiện có

Nhắc nhở

Nếu cần thiết, hãy tự mình tìm hiểu phần Tài nguyên có thể giúp ích trong việc di trú của bạn. Các tài nguyên sau có thể đặc biệt có ích cho bước này:

  • Chương 6, 7 và 9 trong Sách Đỏ của IBM miễn phí (IBM Redbook®) Hướng dẫn chuyển đổi MySQL sang DB2.
  • Bài viết trên developerWorks "Danh sách khuyến khích đọc: Quản trị cơ sở dữ liệu DB2 cho Linux, UNIX và Windows".
  • Loạt bài viết trên developerWorks "Sử dụng các kỹ năng MySQL để tìm hiểu DB2 Express".

Tất nhiên, tài liệu sản phẩm cho các công cụ thường dùng để di trú cơ sở dữ liệu là IBM Data Movement Tool (Công cụ di chuyển dữ liệu của IBM) và Rational Software Architect (Kiến trúc sư phần mềm Rational) cũng rất quan trọng.

Một lựa chọn khác là sử dụng đám mây cho quá trình di trú. Bạn có thể sử dụng Amazon EC2 Linux và các AMI của DB2, hoặc đăng ký dùng IBM Development and Test on the IBM Cloud (Phát triển và thử nghiệm của IBM trên đám mây của IBM) (xem phần Tài nguyên).

Để làm cơ sở dữ liệu ví dụ cho bài viết này, chúng tôi sử dụng cơ sở dữ liệu MySQL nguồn cho PTT (Công cụ theo dõi dự án) chứa 150 bảng, trung bình mỗi bảng có 6 cột và lưu trữ tổng cộng khoảng 10 GB dữ liệu văn bản. PTT ban đầu được xây dựng dựa trên MySQL phiên bản 3.23 và đã di trú đến phiên bản 5.0 trong quá trình bảy năm. Tất cả các bảng đã sử dụng kiểu máy MyISAM mặc định.

Cơ sở dữ liệu PTT được dùng cho nhiều chức năng khác nhau để hỗ trợ dòng công việc công bố thông tin trên ibm.com. Ứng dụng này xử lý các tệp nhị phân, như các ảnh sản phẩm và tài liệu chào bán sản phẩm, nhưng các tệp được lưu trên hệ thống tệp với một liên kết logic chứa trong một cột trong cơ sở dữ liệu chứ không phải lưu trữ tệp trong chính cơ sở dữ liệu đó như là dữ liệu nhị phân.

Hơn 4.000 người dùng trên toàn thế giới truy cập và sửa đổi cơ sở dữ liệu này thông qua xử lý trước web PHP. Tại bất kỳ thời điểm nào đều có vài trăm người dùng đang hoạt động đồng thời trên hệ thống.

Dữ liệu được cung cấp từ chỉ một máy chủ MySQL chính, được sử dụng cho cả đọc và viết. Một cơ sở dữ liệu bản sao được duy trì đồng bộ và được sử dụng để tạo báo cáo chỉ đọc và các truy vấn không dự tính trước. Dữ liệu được sao lưu và lưu trữ hàng đêm.

Bài này mô tả cách tạo một cấu hình tương tự trên một hệ thống DB2 mới. Bạn cũng sẽ tối ưu hóa thiết kế cơ sở dữ liệu của bạn, cải thiện tính toàn vẹn và chất lượng dữ liệu của nó và loại bỏ các cấu trúc không sử dụng hoặc đã lỗi thời. Điều này sẽ giúp bạn đơn giản hóa việc di trú bằng cách giảm số lượng các đối tượng được di chuyển, tiết kiệm không gian lưu trữ bằng cách giảm kích thước của dữ liệu được di trú và làm giảm khả năng nhầm lẫn phát sinh từ sự tồn tại của dữ liệu không sử dụng.


Cài đặt phần mềm di trú

Để chuẩn bị cho việc di trú cơ sở dữ liệu ví dụ, hãy cài đặt các thành phần sau đây trên một máy trạm Windows được dùng để thực hiện các bước di trú.

Một phiên bản của bản sao MySQL của cơ sở dữ liệu nguồn
Việc di trú cơ sở dữ liệu là một quá trình lặp lại, vì vậy cài đặt một bản sao của cơ sở dữ liệu MySQL nguồn trên máy trạm để truy cập dễ dàng. Điều này cho phép hiệu năng trong quá trình di trú tốt hơn so với nếu cài đặt nó trên một hệ thống từ xa và nó cho phép tự do sửa đổi cơ sở dữ liệu nguồn nếu cần thiết khi bạn thực hiện các bước di trú.
Một phiên bản của DB2
Cài đặt DB2 để tạo ra cơ sở dữ liệu đích mới trên máy trạm. Nói chung, bản cài đặt này không nhất thiết phải là cùng ấn bản như cơ sở dữ liệu được sử dụng trong sản xuất, nhưng để tương thích tính năng đầy đủ, chọn cùng ấn bản là một ý tưởng tốt. Để làm theo các ví dụ trong bài viết này, hãy cài đặt DB2 Enterprise Server Edition (Ấn bản máy chủ doanh nghiệp DB2) Phiên bản 9.7.2.
Công cụ di chuyển dữ liệu của IBM
Tải về và giải nén phiên bản mới nhất của IBM Data Movement Tool (Công cụ di chuyển dữ liệu của IBM) (xem phần Tài nguyên), mà bạn có thể sử dụng để trích xuất cơ sở dữ liệu từ MySQL và nhập khẩu nó vào DB2.
Một môi trường phát triển tích hợp (IDE) dựa trên Eclipse của IBM với một phối cảnh dữ liệu (tùy chọn)
Bạn có thể sử dụng một bản phân phối Rational® Software Architect hiện có, vì nó là một công cụ phát triển tất cả-trong-một có thể được sử dụng để hiển thị trực quan và chỉnh sửa các mô hình cơ sở dữ liệu. Bạn có thể tìm thấy một liên kết đến Rational Software Architect và các công cụ tương tự như InfoSphere™ Data Architect và Optim™ Development Studio trong phần Tài nguyên.

Hãy chắc chắn ghi lại chi tiết các quyết định cấu hình của bạn và các bài học thu được một cách cẩn thận để bạn có thể lặp lại các bước khi triển khai. Xem xét việc lưu trữ một bản chụp của hệ điều hành Windows với một ảnh ảo tại các cột mốc chủ yếu khi đạt được các mục tiêu quan trọng để dùng như các bản sao lưu cấu hình và các vạch khởi đầu để so sánh cải thiện cơ sở dữ liệu thêm nữa.

Nếu bạn muốn chụp một ảnh của một cấu hình máy vật lý, bạn có thể làm như vậy với VMware vCenter Converter miễn phí. Một cách thay thế khác là xem xét dùng đám mây để làm các thay đổi năng động này. Bạn có thể sử dụng các AMI DB2 của Amazon EC2, hoặc bạn có thể đăng ký dùng Phát triển của IBM và thử nghiệm trên đám mây của IBM (IBM Development and Test on the IBM Cloud). Với các máy tính ảo, bạn sẽ có thể tránh được các cố gắng ban đầu để mua phần cứng máy chủ và cài đặt một hệ điều hành và DB2. Nó cũng sẽ tiết kiệm thời gian, tăng tốc độ di trú và cung cấp cho bạn sự tự tin để thí nghiệm với cấu hình phù hợp nhất với các nhu cầu của bạn. Có thể tìm thấy các liên kết đến tất cả các sản phẩm này trong phần Tài nguyên.


Bước 1. Chuyển đổi cấu trúc cơ sở dữ liệu MySQL sang định dạng DB2

Một khi bạn thiết lập phần mềm cần phải có trước trên máy trạm, bước quan trọng đầu tiên là trích xuất các bảng từ cơ sở dữ liệu MySQL của chúng ta và tạo lại chúng trong cơ sở dữ liệu DB2 mới. Bước này liên quan đến việc hoàn thành các bước con sau đây:

Tạo một cơ sở dữ liệu mới trong DB2

Ứng dụng PTT hỗ trợ những người dùng trên toàn cầu, vì vậy ngay từ đầu điều quan trọng là đảm bảo rằng cơ sở dữ liệu DB2 mới có thể hỗ trợ một số ngôn ngữ và các bộ ký tự khác nhau. Để hỗ trợ yêu cầu này, tạo một cơ sở dữ liệu với bộ mã UTF-8.

Cùng với việc lựa chọn một bộ mã, hãy đánh giá thuật toán thứ tự chữ cái nào sẽ thích hợp cho các mục đích của bạn. Việc thiết lập thứ tự chữ cái xác định cách DB2 sắp xếp và tính toán dữ liệu văn bản trong cơ sở dữ liệu của bạn, và nó có thể ảnh hưởng đến hiệu năng so sánh chuỗi ký tự.

Để bảo toàn hành vi không phân biệt dữ liệu chữ hoa chữ thường khi hệ thống dựa trên MySQL của bạn xử lý dữ liệu, hãy chọn thuật toán thứ tự chữ cái Unicode UCA500R1_S1 (UCA500R1_S1 Unicode Collation Algorithm), xử lý chữ hoa chữ thường và sắp xếp ngang nhau. Với cấu hình này, các chuỗi ký tự role, Role, và rôle được sắp xếp và so sánh bằng nhau.

Sau khi bạn chọn các yêu cầu bộ mã ký tự và thứ tự chữ cái, lệnh để tạo cơ sở dữ liệu DB2 mới được hiển thị trong Liệt kê 1. Bạn có thể chạy lệnh này trong bộ xử lý dòng lệnh đi kèm với DB2. Các ngắt dòng được thêm vào cho dễ đọc.

Liệt kê 1. Lệnh được sử dụng để tạo ra cơ sở dữ liệu DB2 mới
CREATE DATABASE PTT 
USING CODESET UTF-8
TERRITORY US 
COLLATE USING UCA500R1_S1
PAGESIZE 4096;

Bạn có thể chấp nhận một số giá trị mặc định khi tạo cơ sở dữ liệu, cho phép DB2 tự lo một số nhiệm vụ bảo trì tự động bằng cách sử dụng các tính năng tự trị dựng sẵn. Ví dụ, lưu trữ tự động theo mặc định và kích hoạt trình quản lý bộ nhớ tự điều chỉnh.

Có rất nhiều tùy chọn khác mà bạn có thể quy định vào lúc tạo cơ sở dữ liệu. Thật hợp lý để nghiên cứu các giá trị thiết lập, vì cấu hình đúng cơ sở dữ liệu của bạn ngay từ đầu sẽ sáng suốt hơn là áp dụng các thiết lập sau đó. Mục 6.2.1 trong Hướng dẫn chuyển đổi MySQL sang DB2 (xem phần Tài nguyên) trình bày chi tiết về nhiều tùy chọn này.

Trích xuất cấu trúc cơ sở dữ liệu MySQL nguồn

Nhiệm vụ tiếp theo là trích xuất cấu trúc cơ sở dữ liệu từ MySQL và nạp nó vào DB2. Nếu bạn có một cơ sở dữ liệu nhỏ, bạn có thể sử dụng tiện ích mysqldump để trích xuất DDL nguồn của bạn từ MySQL và sửa đổi nó thủ công để phù hợp với cú pháp DB2 tương đương. Phần 6.1 của Hướng dẫn chuyển đổi MySQL sang DB2 (xem phần Tài nguyên) cung cấp một mô tả về từng kiểu dữ liệu và một bảng cho thấy cách chúng có thể được ánh xạ với nhau.

Với cơ sở dữ liệu lớn hơn, như ví dụ cho bài này có chứa 150 bảng, hãy xem xét việc tự động hoá trích xuất cấu trúc cơ sở dữ liệu bằng cách sử dụng Data Movement Tool của IBM. Data Movement Tool của IBM cung cấp một giao diện người dùng đơn giản được cấu hình để kết nối với cả hai cơ sở dữ liệu MySQL cục bộ và cơ sở dữ liệu DB2 mới được tạo ra. Xem phần Tài nguyên để biết các hướng dẫn chi tiết về cách sử dụng Data Movement Tool của IBM để trích xuất cấu trúc cơ sở dữ liệu trong bước này.

Với ví dụ này, chỉ đánh dấu chọn hộp kiểm tra Data và nhấn vào Extract DDL/Data, như hiển thị trong .

Hình 1. Trích xuất DDL
IBM Data Movement Tool trích xuất chỉ DDL

Sau khi Data Movement Tool của IBM trích xuất cấu trúc cơ sở dữ liệu, bạn có một danh sách các tệp DDL trong thư mục migr. Một số các tệp có thể rỗng. Ví dụ, vì không có hàm nào do người dùng định nghĩa trong cơ sở dữ liệu MySQL nguồn ví dụ, nên tệp db2udf.sql không có nội dung nào.

Nạp các DDL vào cơ sở dữ liệu DB2 cục bộ bằng cách thi hành tệp bó db2ddl.cmd nằm trong cùng thư mục với các tệp DDL.

Kỹ thuật dịch ngược cơ sở dữ liệu để nhận được một sơ đồ quan hệ-thực thể

Một khi các DDL được nạp vào DB2, hãy sử dụng RSA để dịch ngược cấu trúc cơ sở dữ liệu khi nó tồn tại trong DB2. Kết nối đến cơ sở dữ liệu DB2 mới được tạo ra và trích xuất một mô hình trực quan của nó bằng cách sử dụng Rational Software Architect. Quá trình này, được gọi là kỹ thuật dịch ngược, biến đổi cơ sở dữ liệu thành một sơ đồ quan hệ-thực thể (ER), cho thấy các bảng, các cột của chúng, và các sự liên kết giữa chúng.

Bước này loại bỏ bất kỳ các bảng không sử dụng nào, làm thay đổi các kiểu dữ liệu của một số cột nhất định, và thêm khóa chính và khóa ngoại. Đây là một nhiệm vụ tùy chọn, nhưng nó mang lại một cơ hội tốt để tổ chức lại cấu trúc dữ liệu của bạn cho phù hợp tốt hơn với các nhu cầu hiện tại của bạn.

Một lần nữa, bạn có thể quyết định thay đổi mô hình dữ liệu của bạn bằng cách chỉnh sửa thủ công DDL cho phù hợp với cú pháp DB2, nhưng việc tạo một mô hình trực quan dưới dạng một sơ đồ ER là có ích để xem, ghi lại và duy trì cấu trúc dữ liệu của bạn. Sơ đồ ER này có thể dùng làm tài liệu hướng dẫn cho nhóm kỹ thuật cũng như các bên liên quan của doanh nghiệp.

Bạn có thể tạo sơ đồ và thực hiện các nhiệm vụ liên quan sau đây để đạt được những lợi ích được liệt kê.

Xây dựng các mối quan hệ giữa các bảng hoặc các khung nhìn
Điều này giúp ích để hiểu cách các bảng trong cơ sở dữ liệu quan hệ làm việc với nhau.
Tô màu các bảng dùng cho một chức năng chung
Trong ví dụ này, các bảng USER, ACL và ROLE làm việc với nhau để xử lý xác thực và ủy quyền, vì vậy bạn có thể gắn kết lô gic các bảng này bằng cách áp dụng cho chúng một màu nền chung trong mô hình.
Làm nổi bật các cột đã được sửa đổi trong quá trình di trú cấu trúc dữ liệu và thêm các chú thích giải thích tại sao chúng đã được thay đổi
Điều này có ích để theo dõi các cột và bảng nào đã được sửa đổi trong quá trình thực hiện.

Bạn có thể tìm hiểu thêm về kỹ thuật dịch ngược một cơ sở dữ liệu hiện có thành một mô hình dữ liệu bằng cách đọc xem việc này được thực hiện như thế nào trong InfoSphere Data Architect (xem phần Tài nguyên). Các chỉ dẫn này là giống nhau khi thực hiện trên bất kỳ các IDE dựa trên Eclipse nào của IBM được xây dựng trên nền tảng các công cụ dữ liệu của Eclipse (Eclipse Data Tools Platform). Thay vì sử dụng cơ sở dữ liệu Derby của Apache đã dùng như một ví dụ trong hướng dẫn, bạn sẽ cần kết nối đến cơ sở dữ liệu DB2 của bạn.

Cải tiến và sửa đổi cấu trúc mô hình dữ liệu

Bất kể bạn đã tạo ra một sơ đồ ER hay chưa, bạn có thể bắt đầu cải tiến cấu trúc dữ liệu tại thời điểm này. Xem xét việc thực hiện các thay đổi này với cấu trúc được sử dụng trong ví dụ này.

Hãy chắc chắn rằng các kiểu dữ liệu là nhất quán giữa khóa chính và bất kỳ các khóa ngoại dựa vào chúng
Ví dụ, kiểu dữ liệu của khóa chính là SMALLINT trong bảng USER, nhưng khóa ngoại USER_ID, tham chiếu logic đến khóa chính này trong bảng khác, lại là một kiểu dữ liệu số INTEGER lớn hơn. Bạn có thể thường xuyên thấy điều này trong cấu trúc cơ sở dữ liệu MySQL của bạn, vì kiểu dữ liệu ban đầu đã được tạo ra trong một phiên bản của MySQL không hỗ trợ việc bắt buộc các khóa ngoại, đòi hỏi hai kiểu dữ liệu phải nhất quán.
Tăng thêm kích thước tối đa của các cột mã định danh (ID) nếu cần
Nếu ứng dụng của bạn đã chạy trong một thời gian dài, các giá trị trong cột mã định danh (ID) có thể bắt đầu tiến gần đến giới hạn tối đa đã quy định của chúng. Việc di trú cung cấp cho bạn một cơ hội tốt để giải quyết vấn đề tiềm năng này. Ví dụ, nếu ID của một bảng USER được quy định là SMALLINT và số lượng người dùng có thể vượt quá 32.767 trong tương lai, thì bây giờ bạn nên mở rộng ID thành kiểu INTEGER lớn hơn để hỗ trợ lên đến 2 tỷ người dùng trong tương lai.
Thay đổi các trường TEXT của MySQL từ các kiểu đối tượng văn bản CLOB của DB2 thành các kiểu ký tự VARCHAR mỗi khi có thể
Có một số hạn chế về các CLOB trong DB2. Các CLOB không thể được dùng để tìm các giá trị DISTINCT và chúng không thể được nạp vào các nhóm bộ đệm. Vì vậy, các CLOB có thể không làm việc được vì chúng không thể lợi dụng việc nhớ sẵn các trang (page cache). Nếu có thể, bạn nên xem xét thay đổi các trường TEXT thành các trường VARCHAR. Vì vùng bảng nằm bên dưới xác định kích thước tối đa của cột VARCHAR, chỉ có thể lưu văn bản lên đến 32KB.
Xoá cột đã lỗi thời hoặc không sử dụng
Ví dụ, một số ứng dụng có cách tiếp cận khác nhau để lưu trữ các báo cáo, vì vậy bạn có thể có một số các bảng di sản lớn nắm giữ một khối lượng dữ liệu lớn không còn giá trị nữa và thường gây nhầm lẫn cho những người phát triển mới của nhóm. Hãy lợi dụng cơ hội này để lưu trữ dữ liệu này và loại bỏ nó khỏi cơ sở dữ liệu hoạt động.
Thêm các khóa chính hoặc các ràng buộc duy nhất nếu cần thiết
Ngoài tính toàn vẹn dữ liệu mà các ràng buộc khóa mang lại, việc này rất quan trọng để tạo bản sao DB2. Mỗi bảng đòi hỏi một khóa chính hoặc khóa duy nhất để chuyển giao các giá trị duy nhất tới cơ sở dữ liệu sao lưu.
Định nghĩa và áp đặt các khóa ngoại mới
Trong cơ sở dữ liệu MySQL ví dụ, không có các khóa ngoại nào vì ứng dụng ban đầu đã được tạo ra với máy lưu trữ MyISAM mặc định không hỗ trợ chúng. Trong giai đoạn chuyển đổi dữ liệu, thêm các khóa ngoại cần thiết để cải thiện tính nhất quán của dữ liệu, ví dụ như duy trì bảng USER được liên kết với bảng TASK_HISTORY, do đó đảm bảo rằng các bản ghi kiểm toán đang liên kết các thay đổi với những người dùng không bị ngắt.
Chuyển đổi hoặc thêm các đối tượng khác, như các chỉ mục, các khung nhìn, các thủ tục đã lưu và các hàm
Việc hiển thị trực quan cấu trúc dữ liệu của bạn có thể giúp ích cho việc hiểu các mối quan hệ giữa các bảng, tầm quan trọng tương đối của chúng và tần số truy cập của chúng, có thể ảnh hưởng đến hiệu năng. Điều này có thể giúp bạn hiểu rõ hơn các ràng buộc nên được áp đặt ở đâu và các hành động liên quan nên được nhóm lại với nhau ở đâu để cải thiện chất lượng và tốc độ đọc dữ liệu.

Nếu bạn có một mô hình cấu trúc dữ liệu mới được định nghĩa trong RSA, thì bạn có thể xuất khẩu nó như là một tệp DDL đơn lẻ để từ đó xây dựng cơ sở dữ liệu DB2 mới của bạn. Tùy thuộc vào sự phức tạp của cấu trúc cơ sở dữ liệu của bạn, bạn cũng có thể xem xét việc tạo ra các tệp DDL riêng cho các kiểu đối tượng khác nhau để giữ mọi thứ được tổ chức hợp lý.

Ví dụ, một cách tiếp cận được khuyến cáo để di trú lặp lại là tạo DDL cho các bảng trong một tệp, tạo DDL cho các chỉ mục riêng ra và tạo DDL cho các khóa ngoại riêng ra. Cách tiếp cận này sẽ giúp phân chia một cách logic cấu trúc dữ liệu thành các mảnh có liên quan một cách logic. Cách tiếp cận này cung cấp tài liệu tham khảo nếu bạn muốn xem danh sách các chỉ mục hiện tại (thay đổi theo thời gian) hơn là tìm kiếm chúng trong tệp DDL cùng với định nghĩa các đối tượng khác, cố định hơn ví dụ như các bảng và các khung nhìn.

Cũng giống như nhiệm vụ kỹ thuật dịch ngược trước đó, bạn có thể xem phần Tài nguyên để tìm hiểu cách chỉnh sửa và xuất khẩu một mô hình dữ liệu bằng các công cụ dựa trên Eclipse của IBM bằng cách đọc một hướng dẫn về cách chuyển đổi một mô hình dữ liệu vật lý thành DDL trong tài liệu InfoSphere.

Chuyển đổi các đối tượng cơ sở dữ liệu khác

Data Movement Tool của IBM có thể tự động chuyển đổi hầu hết các đối tượng cơ sở dữ liệu, ví dụ như các bảng, các khóa, các chỉ mục và các vùng bảng, nhưng có các đối tượng khác bạn cần chuyển đổi thủ công nếu chúng đã có mặt trong cơ sở dữ liệu MySQL nguồn của bạn. Chúng gồm các khung nhìn, các thủ tục đã lưu, các hàm do người dùng định nghĩa (UDF) và các tri gơ.

Các đối tượng này không khó để di trú thủ công, vì cả MySQL lẫn DB2 đều tuân thủ cú pháp thủ tục lưu trữ SQL:2003. Và vì chức năng tri gơ DB2 cung cấp nhiều hơn những gì có sẵn trong MySQL, bạn có thể dễ dàng tạo lại các tri gơ. Chương 6 của Sách Đỏ IBM về Phát triển các ứng dụng PHP cho Các máy chủ dữ liệu IBM (Developing PHP Applications for IBM Data Servers) mô tả chi tiết bất kỳ các khác biệt nào mà bạn cần hiểu rõ.

Như một lựa chọn, để tránh các lỗi trong lúc di trú dữ liệu ở bước 2, bạn có thể lui lại nhiệm vụ này lại cho đến khi dữ liệu đã được nạp vào DB2 và quay lại với nó trong một lần lặp khác trong giai đoạn di trú này khi bạn tinh chỉnh cơ sở dữ liệu của bạn.


Bước 2. Di chuyển dữ liệu MySQL vào cơ sở dữ liệu DB2

Trong bước này, bạn sẽ trích xuất dữ liệu từ cơ sở dữ liệu MySQL và tải nó vào DB2. Quá trình này cũng cho bạn một cơ hội để cải thiện chất lượng dữ liệu của bạn. Bước này liên quan đến việc hoàn thành các bước sau đây:

Loại bỏ các bảng và dữ liệu không cần thiết

Data Movement Tool (Công cụ di chuyển dữ liệu) của IBM tạo ra một tệp tên bảng.tables nói rõ dữ liệu nào cần trích xuất từ cơ sở dữ liệu nguồn bằng cách chỉ rõ một truy vấn SELECT cho mỗi bảng cơ sở dữ liệu. Ví dụ, chỉ bao gồm các nhiệm vụ nào dưới bốn năm tuổi. Nói chung bạn cần phải loại bỏ một số dòng và xác định các dòng khác có đủ điều kiện bằng một câu lệnh WHERE để lọc số lượng dữ liệu được di chuyển.

Nếu bạn không muốn di chuyển một bảng từ MySQL sang DB2, bạn nên loại bỏ nó hoàn toàn khỏi tệp này. Nếu bạn muốn di chuyển một tập con dữ liệu, bạn nên sửa đổi mệnh đề SELECT cho phù hợp. Ví dụ, ngăn không cho bảng WORK_TMP di trú sang DB2 bằng cách xóa các dòng được hiển thị trong .

Liệt kê 2. Một dòng đã bị xóa khỏi tệp timetrac.tables
"timetrac"."work_tmp":SELECT * FROM "timetrac"."work_tmp"

Trong trường hợp khác, bạn có thể cần chỉ giữ lại dữ liệu trong bảng WORK đã được tạo ra kể từ năm 2008. Ví dụ, thêm một mệnh đề WHERE như được hiển thị trong .

Liệt kê 3. Một dòng được chỉnh sửa để lọc dữ liệu để di trú theo ngày tháng
"timetrac"."work":SELECT * FROM "timetrac"."work" WHERE ts >= '2008-01-01'

Chuyển đổi dữ liệu MySQL không hợp với DB2

Một nhiệm vụ quan trọng khác là xác định tính tương thích giữa các kiểu dữ liệu trong cơ sở dữ liệu nguồn và cơ sở dữ liệu mới. Vì bạn đã chỉnh sửa cơ sở dữ liệu DB2 trong Bước 1 tổ chức lại mô hình dữ liệu của bạn, hãy đảm bảo rằng các dữ liệu đã được nhập khẩu từ MySQL tương thích với các kiểu dữ liệu được định nghĩa trong DB2.

Ví dụ, kiểu dữ liệu TIME tồn tại trong cả MySQL lẫn DB2, nhưng có các phạm vi khác nhau. Trong MySQL, TIME biểu diễn một đồng hồ có phạm vi, từ -838:59:59 đến 838:59:59. Tuy nhiên, trong DB2, TIME được biểu diễn là một đồng hồ 24 giờ, có phạm vi từ 00:00:00 đến 24:00:00. Trong các trường hợp mà dữ liệu với kiểu dữ liệu TIME không phù hợp với đồng hồ 24 giờ, hãy chuẩn hóa dữ liệu để tương thích với kiểu dữ liệu DB2 ngay trong MySQL trước khi di trú. cho thấy một câu lệnh SQL mà bạn có thể sử dụng để thực hiện việc chuyển đổi.

Liệt kê 4. Chuyển đổi dữ liệu TIME trong MySQL để phù hợp với dữ liệu TIME được DB2 công nhận
mysql> UPDATE WORK W SET W.HOUR = SUBTIME(W.HOUR, '24:00:00') WHERE W.HOUR >= '24:00:00';

Có thể có các kiểu dữ liệu khác yêu cầu phải thay đổi trong cơ sở dữ liệu nguồn của bạn trước khi chúng được di trú. Phần 6.1 của Hướng dẫn chuyển đổi MySQL sang DB2 (xem phần Tài nguyên) cung cấp một mô tả về từng loại dữ liệu và một bảng hiển thị tính tương thích dữ liệu.

Trích xuất dữ liệu từ MySQL

Với dữ liệu trong MySQL đã chuẩn bị để di trú, mở lại Data Movement Tool của IBM và đánh dấu chọn hộp kiểm tra Data và nhấn vào Extract DDL/Data (Trích xuất DDL/dữ liệu), như hiển thị trong .

Hình 2. Tạo ra các kịch bản lệnh trích xuất
Tạo ra các kịch bản lệnh trích xuất

Khi hoàn thành, bạn sẽ thấy bốn tệp trong thư mục migr: geninput, rowcount, timetrac.tables (ở đây timetrac là tên cơ sở dữ liệu), và unload.

Thay thế tệp timetrac.tables bằng một tệp mà bạn đã chỉnh sửa sau bước trích xuất cơ sở dữ liệu để hạn chế dữ liệu chỉ còn một tập hợp con. Chạy unload để trích xuất dữ liệu từ MySQL. Sau khi di trú hoàn tất, kiểm tra các thông báo lỗi trong tệp IBMDataMovementTool.log. Sau khi unload thành công, có thể nhiều tệp được tạo ra, bao gồm một tệp db2load.cmd và một thư mục data.

Nạp dữ liệu vào DB2

Chuyển tới thư mục migr và chạy kịch bản lệnh bó db2load.cmd để thực hiện di trú dữ liệu thực sự vào DB2.

Kiểm tra db2load.log để xem liệu tất cả dữ liệu đã được tải vào DB2 thành công chưa. Data Movement Tool của IBM cung cấp một kịch bản lệnh để xác minh xem số lượng hàng trong cơ sở dữ liệu MySQL nguồn có bằng số lượng hàng trong các bảng DB2 không. Bạn có thể chạy lệnh rowcount (đếm hàng) để xác nhận xem các số lượng có khớp nhau không.

Ngoài điều này, bạn cũng có thể muốn xác minh dữ liệu trong DB2 một cách cẩn thận bằng cách sử dụng các phương pháp khác, ví dụ như so sánh đầu ra của các truy vấn quan trọng. Mục 7.2.7 trong Hướng dẫn chuyển đổi MySQL sang DB2 (xem phần Tài nguyên) trình bày một vài chiến lược để kiểm tra dữ liệu đã di trú.

Thiết lập lại gia số cột mã định danh (ID) đã tạo ra

Một khi bạn đã di chuyển dữ liệu, bạn có thể cần cập nhật cơ sở dữ liệu của bạn để bắt đầu đánh số trong cột mã định danh (ID) đã tạo ra tự động, bắt đầu từ một số lớn hơn tất cả các giá trị hiện có trong dữ liệu đã di trú. Ví dụ, nếu bạn có 3.000 hàng trong dữ liệu mà bạn đã di trú, bạn có thể muốn thay đổi cơ sở dữ liệu của mình để bắt đầu tạo ra các mã định danh cho các bản ghi mới mà bạn sẽ chèn vào bằng một số an toàn trên 3.000, chẳng hạn như 5.000, thay vì gán cho các mã định danh bắt đầu bằng 1 và sẽ gây ra xung đột. cho thấy việc sửa đổi các định nghĩa cột của bạn để thiết lập lại việc đánh số cột mã định danh đã tạo ra.

Liệt kê 5. Lệnh thiết lập lại các cột mã định danh được tạo ra
ALTER TABLE WORK ALTER COLUMN ID RESTART WITH 5000;

Bước 3.Tạo lại các quyền hạn người dùng và cấu hình quản trị cơ sở dữ liệu

Với cấu trúc cơ sở dữ liệu và dữ liệu đã nhập khẩu vào DB2, bước quan trọng thứ ba là đảm bảo rằng việc truy cập vào (và quản trị) các dữ liệu ấy là đúng đắn. Bạn cần thiết lập các tài khoản người dùng cần thiết và gán cho chúng các quyền hạn thích hợp. Sau đó, bạn sẽ thực hiện cấu hình sao lưu dự phòng và phục hồi sau thảm họa cơ sở dữ liệu của bạn dựa trên hệ thống hiện có mà bạn đã xác định cách thiết lập trong DB2 từ việc nghiên cứu và tham khảo ý kiến một chuyên gia về DB2. Cuối cùng, bạn sẽ cấu hình tạo bản sao để tạo ra một hệ thống ảnh gương sẽ được một hệ thống tinh thông nghiệp vụ Cognos® sử dụng để tạo các báo cáo.

Bước này liên quan đến việc hoàn thành các bước con sau đây:

Chuyển đổi mô hình các quyền hạn

Khi bạn đã cài đặt DB2, bạn đã tạo ra một ID người dùng db2inst1 là chủ sở hữu cá thể mặc định. Trong cơ sở dữ liệu MySQL, đã có một người dùng quản trị tương tự là root. Vì vậy, rõ ràng là bất cứ lúc nào bạn cần thực hiện các chức năng thường được người dùng root chạy, bạn sẽ sử dụng db2inst1 để thay thế.

Bạn cũng cần tạo ra hai tài khoản người dùng khác. Người dùng pttuser thực hiện các hoạt động đọc và viết theo yêu cầu của ứng dụng. Người dùng read là cần thiết với cả hai cơ sở dữ liệu sản xuất và bản sao. Tài khoản này là cần thiết để thực hiện các truy vấn chỉ đọc trên các cơ sở dữ liệu sản xuất. Cơ chế tạo báo cáo Cognos trên cơ sở dữ liệu bản sao cũng sử dụng tài khoản read. Các tài khoản này được thể hiện trong .

Bảng 1. Danh sách những người dùng
Người dùngMô tảCơ sở dữ liệu
Quản trị (db2inst1)Một tài khoản người dùng với các đặc quyền SYSADMSản xuất và tạo báo cáo
Ứng dụng (pttuser)Một người dùng có quyền truy cập đọc và viết vào cơ sở dữ liệu sản xuấtSản xuất
Tạo báo cáo (read)Một người có quyền truy cập chỉ đọc vào cơ sở dữ liệu sản xuất và tạo báo cáoSản xuất và tạo báo cáo

Có thể tạo ra các tài khoản người dùng trên hệ điều hành Linux và các câu lệnh GRANT (cấp) được dùng để gán cho chúng các đặc quyền cơ sở dữ liệu đúng đắn. Điều này thường được thực hiện như một hoạt động riêng rẽ sau khi bạn đã tạo ra cơ sở dữ liệu DB2 và đã di trú dữ liệu từ MySQL vào nó. Tuy nhiên, khi bạn triển khai vào sản xuất, bạn sẽ bao gồm các câu lệnh GRANT vào trong cùng DDL khi bạn sử dụng để tạo cấu trúc cơ sở dữ liệu.

Với MySQL, việc cung cấp quyền truy cập thường là ở mức thô, vì bạn có thể cấp phép cho một người dùng (được xác định đủ điều kiện bởi một tên máy tính chủ (hostname) mà từ đó người dùng kết nối) các quyền hạn truy cập đọc, viết hoặc quản lý khác đối với toàn bộ cơ sở dữ liệu. Trong ví dụ này, người dùng pttuser có quyền truy cập đọc và viết vào cơ sở dữ liệu (chỉ từ tên máy tính chủ (hostname) của máy chủ web) và do đó có thể truy cập và chỉnh sửa mỗi bảng trong đó.

Với DB2, bạn cấp phép truy cập cho một người dùng, nhưng bạn không chỉ ra tên máy tính chủ mà từ đó người dùng kết nối. Ngoài ra với DB2, bạn có thể chỉ rõ đó là quyền truy cập để truy vấn, thêm, hoặc cập nhật dữ liệu như bạn làm trong MySQL. Tuy nhiên, bạn phải cấp phép truy cập cho một người dùng với mỗi bảng trong cơ sở dữ liệu, vì không có một câu lệnh đơn lẻ nào để cấp phép truy cập toàn bộ cơ sở dữ liệu (trừ khi bạn đã tạo ra cơ sở dữ liệu và các bảng với tư cách là người dùng đó, mà điều này được khuyến cáo là không nên làm). Vì vậy, các lệnh GRANT thường bao gồm trong DDL sau khi các đối tượng, như các bảng, được tạo ra.

cho thấy các quyền hạn để cấp cho bảng WORK trong ví dụ. Người dùng application nhận được đầy đủ quyền truy cập đọc và viết, trong khi người dùng reporting chỉ có thể đọc dữ liệu.

Liệt kê 6. Các câu lệnh GRANT mẫu
-- GRANT statements to provide read/write access to the application user account
GRANT DELETE ON TABLE "TIMETRAC"."WORK" TO USER "PTTUSER"; 
GRANT INSERT ON TABLE "TIMETRAC"."WORK" TO USER "PTTUSER"; 
GRANT SELECT ON TABLE "TIMETRAC"."WORK" TO USER "PTTUSER";  
GRANT UPDATE ON TABLE "TIMETRAC"."WORK" TO USER "PTTUSER"; 

-- GRANT statement to provide read only access to the reporting/ad hoc user account
GRANT SELECT ON TABLE "TIMETRAC"."WORK" TO USER "READ";

Mục 7.1.3 trong Hướng dẫn chuyển đổi MySQL sang DB2 (xem phần Tài nguyên) cung cấp thông tin chi tiết về các khác biệt trong việc quản lý tài khoản người dùng và các tùy chọn mức chi tiết hơn do DB2 cung cấp.

Chuyển đổi thủ tục sao lưu và khôi phục lại

Bạn đã sẵn sàng thực hiện một kế hoạch khắc phục thảm họa, cân bằng giữa yêu cầu sẵn sàng cao của ứng dụng với yêu cầu lưu trữ cẩn thận dữ liệu của bạn.

Trong MySQL, bạn có thể sử dụng một lệnh như mysqldump để sao lưu dữ liệu của bạn và chạy thi hành SQL để khôi phục lại dữ liệu. Trong hệ thống ví dụ, bạn muốn dựa vào các bản sao lưu hàng đêm bằng cách sử dụng mysqldump và bạn muốn chạy một cơ sở dữ liệu bản sao được đồng bộ hóa cho mục đích tạo báo cáo chỉ đọc và phục vụ cho nhiệm vụ kép như một hệ thống dự phòng sống.

Đối với cơ sở dữ liệu mới, hãy lập lịch biểu các lệnh sao lưu và phục hồi bằng cách sử dụng các công cụ được cung cấp kèm DB2. Bạn có một số lựa chọn cho các lệnh này để cho phép bạn thực hiện các sao lưu đầy đủ hoặc sao lưu gia tăng, trực tuyến hoặc không trực tuyến. Ví dụ, bạn có thể muốn thực hiện một sao lưu gia tăng trực tuyến một lần mỗi ngày, và rồi thực hiện một sao lưu đầy đủ, không trực tuyến một lần cho mỗi tuần trong một cửa sổ bảo trì. cho thấy một ví dụ về chính sách và lập lịch biểu sao lưu và khôi phục.

Bảng 2. Kế hoạch. sao lưu và khắc phục thảm họa
Nhiệm vụMô tả
Sao lưu trực tuyến hàng đêm Thực hiện sao lưu trực tuyến cơ sở dữ liệu DB2 mỗi đêm và lưu trữ nó trên cùng một máy chủ DB2. Việc sao lưu này cung cấp khả năng khôi phục lại nhanh chóng và dễ dàng khỏi các vấn đề cơ sở dữ liệu đơn giản. Nó không đòi hỏi bạn phải dừng ứng dụng. Tuy nhiên, nó cũng không cung cấp khả năng sử dụng các bản ghi nhật ký để khôi phục lại giao dịch kể từ lúc sao lưu, có nghĩa là bất kỳ dữ liệu nào được tạo ra trong thời gian từ lúc thực hiện sao lưu đến lúc có lỗi cơ sở dữ liệu có thể không còn nữa.
Sao lưu hàng tuần không trực tuyếnThực hiện sao lưu không trực tuyến cơ sở dữ liệu DB2, mỗi cuối tuần và lưu trữ nó trên máy chủ khác, tốt nhất ở vị trí khác. Việc sao lưu này tạo ra khả năng khôi phục lại tin cậy hơn khỏi các vấn đề lớn của máy chủ. Việc sao lưu này đòi hỏi bạn dừng ứng dụng. Tuy nhiên, nó cũng cung cấp khả năng khôi phục lại các giao dịch từ lúc sao lưu bằng cách sử dụng các bản ghi nhật ký, có nghĩa là dữ liệu có thể được khôi phục lại đầy đủ bằng cách sử dụng sao lưu và các hoạt động đã được ghi lại kể từ lúc sao lưu bằng cách cho chạy lại dựa theo nhật ký.

Chương 9 của Hướng dẫn chuyển đổi MySQL sang DB2 (xem phần Tài nguyên) có thể là chìa khóa để xác định và triển khai một quá trình sao lưu và khôi phục lại mới. Nó cung cấp các lệnh sao lưu mẫu và các gợi ý về cách lập lịch biểu các lần chạy sao lưu bằng cách sử dụng DB2 Control Center hay Optim™ Development Studio.

Chuyển đổi mô hình sao chép tạo báo cáo

Như đã nói trong Phần 1, việc cải thiện sự tinh thông nghiệp vụ của bạn qua việc chọn dùng một công cụ như Cognos là một yếu tố quan trọng dẫn dắt bạn di trú sang DB2. Như vậy, cấu hình một cơ sở dữ liệu bản sao để chạy các truy vấn và trích xuất các báo cáo trên đó phải là một phần trọng yếu của các nỗ lực di trú cơ sở dữ liệu của bạn.

Nếu bạn cần chạy các báo cáo dựa vào dữ liệu của bạn, thì nhiều khả năng bạn có một cơ sở dữ liệu bản sao chỉ đọc để giảm tải trên cơ sở dữ liệu sản xuất chính của bạn. Cơ sở dữ liệu bản sao là một bản sao chính xác của cơ sở dữ liệu vận hành. Bạn chạy ứng dụng của mình để truy cập và sửa đổi thông tin của cá thể chính của cơ sở dữ liệu, sao chép tất cả dữ liệu vào cơ sở dữ liệu bản sao, và chạy tất cả các báo cáo của bạn dựa vào cá thể chỉ đọc đó của cơ sở dữ liệu.

Một lần nữa, MySQL và DB2 xử lý các bản sao khác nhau. Với MySQL, bạn có thể thay đổi một vài tham số cấu hình và sao chép toàn bộ cơ sở dữ liệu từ một máy chủ sang máy chủ khác trong thời gian thực. Hoặc bạn có thể thực hiện các lần sao lưu và hồi phục không đồng bộ các bản sao lưu này vào một thời gian sau đó vào trong cơ sở dữ liệu khác.

Với DB2, bạn có sẵn các tùy chọn tương tự, bao gồm sao chép SQLsao chép Q. Ví dụ, sử dụng sao chép SQL để tránh sự phức tạp tăng thêm do trình quản lý hàng đợi thông báo dựa trên kênh, cần phải có để xử lý sao chép Q. Với sao chép SQL, bạn tạo một cấu hình chỉ rõ mỗi bảng trong cơ sở dữ liệu mà bạn muốn sao chép. Bạn sẽ cần chắc chắn cập nhật cấu hình đó bất cứ lúc nào bạn thực hiện một thay đổi cho cấu trúc cơ sở dữ liệu của bạn.

Ngoài ra, trước khi thiết lập sao chép trong DB2, bạn sẽ cần đảm bảo rằng tất cả các bảng cơ sở dữ liệu có một khóa chính hoặc chỉ mục duy nhất. Trong khi đây là một cách thực hành tốt, thì một số cơ sở dữ liệu có thể thiếu điều này. Hãy nhớ rằng các bảng MySQL ví dụ thiếu các giá trị này bởi vì chúng đã được tạo ra bằng máy lưu trữ MyISAM cơ bản. Bản sao MySQL sẽ làm việc mà không cần khóa hoặc chỉ mục. Tuy nhiên, việc sao chép DB2 đòi hỏi có khóa hoặc chỉ mục để định danh duy nhất các hàng trong một bảng. Nếu một bảng không có một khóa chính hoặc một chỉ mục duy nhất nào, các bản ghi được cập nhật trong cơ sở dữ liệu vận hành có thể được xem như các bản ghi mới được tạo ra chứ không phải bản ghi đang có được cập nhật, vì không có khóa nào để sử dụng để tìm ra bản ghi đang được cập nhật.

Chương 9 của Hướng dẫn chuyển đổi MySQL sang DB2 (xem phần Tài nguyên) là trung tâm của chiến lược cấu hình tạo bản sao của bạn. DB2 cung cấp các công cụ có thể được sử dụng để quản lý các thiết lập sao chép, hoặc bạn có thể thực hiện một giải pháp tùy chỉnh dựa trên việc chuyển đổi các bản ghi nhật ký.


Bước 4. Kiểm lại bước khởi đầu di trú cơ sở dữ liệu

Tại thời điểm này sau một lần lặp lại trọn vẹn các bước 1-3, mà bản thân chúng lại bao gồm một số bước, bạn sẽ phải có một hệ thống cơ sở dữ liệu hoạt động trên một máy trạm Windows và một số ghi chép về những gì bạn đã thay đổi và những gì đã có vấn đề.

Nếu bạn đã sử dụng máy ảo, bạn lấy một ảnh của hệ thống Windows làm một ảnh chụp, vừa để lưu trữ như là một điểm lưu làm việc vừa để sử dụng như là một vạch khởi đầu để so sánh các thay đổi hiệu năng trong tương lai. Một lựa chọn khác, tất nhiên, là sử dụng một ảnh ảo trong Đám mây của IBM hay của Amazon và sử dụng ảnh đó theo cùng một cách.

Bạn có thể muốn thí nghiệm một số cách thực hiện di trú khác nhau để xem cách nào làm việc tốt nhất cho môi trường của bạn. Một khi bạn đã hài lòng với hệ thống trên máy trạm Windows được sử dụng trong các bước 1-3, thì bạn có thể di chuyển cơ sở dữ liệu đến một máy chủ dành riêng, ở đó bạn sẽ thử nghiệm các bản cập nhật cho ứng dụng PHP trong Phần 3 của loạt bài này.


Kết luận

Mục đích của loạt bài này là cung cấp cho bạn một sự hiểu biết về những gì cần thiết nói chung để di trú một ứng dụng PHP từ MySQL sang DB2, tài nguyên nào có sẵn để giúp bạn, và một ví dụ về một cuộc di trú thành công.

Trong phần thứ hai này của loạt bài, bạn:

  • Đã tìm hiểu về cơ sở dữ liệu MySQL nguồn bạn đã chuyển đổi
  • Đã tìm hiểu cách chuyển đổi cấu trúc cơ sở dữ liệu sang DB2
  • Đã tìm hiểu cách di trú dữ liệu sang DB2
  • Đã tìm hiểu cách thiết lập quản trị cơ sở dữ liệu của bạn

Trong phần tiếp theo của loạt bài này, bạn sẽ tìm hiểu cách chuyển đổi mã PHP.

Lời cảm ơn

Các tác giả cảm ơn Leons Petrazickis và Ambrish Bhargava về việc xem xét và góp ý kiến cho bài này..

Tài nguyên

Học tập

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

Thảo luận

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, Nguồn mở
ArticleID=783943
ArticleTitle=Di chuyển một ứng dụng PHP từ MySQL sang DB2, Phần 2: Di trú dữ liệu của bạn
publish-date=01052012