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

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.

pdf17 trang | Chuyên mục: PHP | Chia sẻ: dkS00TYs | Lượt xem: 1513 | Lượt tải: 0download
Tóm tắt nội dung 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, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
á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ất Sả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áo 
Sả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ến 
Thự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 SQL và sao 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ý. 
Về đầu trang 
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. 
Về đầu trang 
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.. 

File đính kèm:

  • pdfDi chuyển một ứng dụng PHP từ MySQL sang DB2 - Phần 2_Di trú dữ liệu của bạn.pdf
Tài liệu liên quan