Các khái niệm cơ bản trong Backup & Recovery database Oracle

10:30 - 26/07/2019  |  4921 lượt xem

Chia sẻ Chia sẻ
Cơ sở dữ liệu là một trong những tài sản quý giá của doanh nghiệp. Đảm bảo an toàn cho cơ sở dữ liệu là nhiệm vụ quan trọng. Khi có sự cố về cơ sở dữ liệu xảy ra, yêu cầu đặt lên hàng đầu là phải nhanh chóng khôi phục cơ sở dữ liệu, giảm tối đa thời gian hệ thống bị downtime cũng như các vấn đề mất mát dữ liệu. Hiện nay, tại các đơn vị trong EVNCPC, ngày càng có nhiều ứng dụng sử dụng cơ sở dữ liệu Oracle. Tuy nhiên công tác Backup và Recovery trong cơ sở dữ liệu Oracle nhìn chung phức tạp hơn so với các cơ sở dữ liệu khác. Bài viết này giới thiệu các khái niệm cơ bản trong sao lưu phục hồi dữ liệu Oracle, nhằm giúp cho những người mới tiếp cận hệ thống Oracle có cái nhìn tổng quan về công tác này.
Các khái niệm cơ bản trong Backup & Recovery database Oracle

Các khái niệm cơ bản trong Backup & Recovery database Oracle

Phân biệt khái niệm Incomplete Recovery và Complete Recovery

Các khái niệm đầu tiên chúng ta cần phải phân biệt là Incomplete Recovery và Complete Recovery. Cả hai thuật ngữ này được sử dụng mô tả các phương pháp khác nhau để khôi phục cơ sở dữ liệu trong trường hợp "media failure" - là khi các tập tin dữ liệu của database bị lỗi và không thể khởi động lại Oracle Instance.

Complete Recovery: Khi thực hiện Complete Recovery thì cơ sở dữ liệu sẽ được khôi phục đến thời điểm mới nhất, bao gồm tất cả các transaction đã hoàn thành và các dữ liệu đã được chỉnh sửa cho đến thời gian hiện tại. Về bản chất, khi thực hiện Complete Recorvery, chúng ta khôi phục cơ sở dữ liệu đến thời điểm gần hiện tại nhất.

Incomplete Recovery: Khác với Complete Recovery, Incomplete Recovery đưa database đến một thời điểm cụ thể trong quá khứ. Incomplete Recovery còn được gọi là Point in Time Recovery (PITR). Chúng ta hãy cùng nhìn vào ví dụ bên dưới, trong khoảng thời gian từ 2h đến 8h. Từ 2h đến 4h database hoạt động bình thường. Đến 4h hệ thống tạo 1 bản full backup, từ 4h đến 8h database hoạt động bình thường, 8h hệ thống lại tạo một bản backup.

Cơ sở dữ liệu trong khoảng thời gian 2h đến 8h

Tuy nhiên vào khoảng lúc 7h, một nhân viên trong công ty vô tình xóa một bảng dữ liệu cực kỳ quan trọng, có thể là tiền thưởng cho quý tới, hoặc có thể một dữ liệu chứa lương của nhân viên. Giả sử bạn là DBA và bạn không nắm bắt được vấn đề đó cho đến 8h tối, bạn thực hiện một bản backup full khác. Sau 8h tối, bạn nhận được yêu cầu của lãnh đạo, cần khôi phục database tại thời điểm 6h59 trước lúc dữ liệu bị xóa, lúc này nếu thực hiện Complete Recovery thì không thể khôi phục được dữ liệu đã bị xóa, vì Complete Recovery khôi phục cơ sở dữ liệu đến thời điểm gần nhất hiện tại. Trong khi hiện tại đã hơn 8h và dữ liệu bị xóa vào thời điểm 7h. Để khôi phục dữ liệu vào lúc 6h59 người quản trị cần phải thực hiện Incomplete Recorvery - Point in time recovery.

Dữ liệu trong khoảng thời hạn thực hiện PITR đến hiện tại sẽ bị mất

Khi thực hiện Incomplete Recovery thì các transaction, các nội dung chỉnh sửa giữa thời điểm PITR đến thời gian hiện tại sẽ bị mất. Tuy nhiên trong một vài trường hợp, ví dụ đối với các thao tác xóa nhầm dữ liệu hay hệ thống bị attacker xâm nhập và thay đổi hàng loạt dữ liệu thì việc thực hiện Incomplete Recovery là hết sức cần thiết.

Vai trò ca Archived redo log trong backup

Một khái niệm quan trọng khác cần phải biết trong việc backup và recovery database là vai trò của Archived redo log hoặc viết tắt là Archived log được dùng để khôi phục Oracle Database.

Như chúng ta biết, Oracle redo logs chứa log của tất cả transactions đã được applied đến Oracle database. Mỗi câu lệnh Insert, Delete hoặc Update đều được ghi lại trong redo logs. Về cơ bản chúng là log của tất cả thay đổi database. Oracle sử dụng redo logs cho tính nhất quán nội bộ. Khi Oracle hoàn thành việc ghi một redo log, nó thực hiện redo log switch và bắt đầu viết vào redo log kế tiếp.

Quá trình ghi vào redo log group

Tại thời điểm này, giả định database đang ở chế độ Archive mode, khi 3 group redo log đầy, thì nó sẽ thực hiện ghi ra Archived redo logs.

Quá trình ghi redo log ra Archived redo log

Archive log có vai trò quan trọng trong việc recovery database, đặc biệt là khi thực hiện Point in Time Recovery. Chúng ta có thể kết hợp bản database backup cộng thêm một hoặc nhiều Archive redo log files để restore database đến một thời gian chỉ định.

Chúng ta sẽ bắt đầu với một ví dụ đơn giản, giả sử chúng ta muốn restore database vào thời điểm 2h04 pm. Đầu tiên chúng ta sẽ bắt đầu restore database đến bản full backup gần nhất.

Theo như hình dưới, giả sử bản backup gần nhất là vào lúc 12h00 pm. Quá trình khôi phục cơ sở dữ liệu về thời điểm bản backup 12h00 gọi là restore. Tuy nhiên chúng ta muốn khôi phục database đến 2h04 pm thì chúng ta phải apply những thay đổi của database từ Archived redo log files (quá trình này gọi là recovery). Kết hợp sử dụng cả database backup file và Archive redo log files là một sự cần thiết trong công tác backup và recovery.

Dữ liệu được backup vào thời điểm 12h00

Cuối cùng, để thực hiện Point In Time Recovery trong Oracle, hệ thống phải thỏa mãn các điều kiện sau: Database phải hoạt động chế độ Archive log mode; phải có bản backup database từ trước thời điểm thực hiện PITR; phải có đầy đủ Archive redo log trong khoảng thời gian thực hiện bản backup đến thời gian PITR để apply những thay đổi xảy ra. Như trong ví dụ trên, chúng ta muốn khôi phục database vào thời điểm 8h, giả sử chúng ta có bản backup vào lúc 7h thì chúng ta phải có đầy đủ các Archive redo log sinh ra trong khoảng thời gian từ 7h đến 8h.

Trần Cảnh Khánh

10:30 - 26/07/2019  |  4921 lượt xem

Chia sẻ Chia sẻ

TIN BÀI ĐỌC NHIỀU