Thứ Tư, 25 tháng 2, 2026

MODULE 12: NGUYÊN LÝ BACKUP VÀ RECOVERY

Bước sang Phần 3 - Backup và Recovery, chúng ta đang chạm đến giới hạn sống còn của một DBA. Trong 20 năm làm nghề, tôi đã trải qua những khoảnh khắc "toát mồ hôi" khi hệ thống sập và mọi hy vọng đều đặt vào bản backup.

"Backup không quan trọng, Restore mới quan trọng". Với Oracle, anh có một vũ khí hạng nặng là RMAN. Nhưng khi quản trị các hệ thống khác, khái niệm RMAN không tồn tại. Anh sẽ phải lắp ghép các công cụ native của OS và DB để tạo ra một chiến lược tương đương.

Chào mừng bạn đến với Module 12: Nguyên lý backup and recovery.

1. Tổng quan

Nguyên lý sao lưu của mọi CSDL trên thế giới đều xoay quanh hai bài toán: RPO (Recovery Point Objective - Chấp nhận mất bao nhiêu dữ liệu) và RTO (Recovery Time Objective - Mất bao lâu để khôi phục).

Để đạt RPO = 0 (Không mất một byte dữ liệu nào), mọi hệ thống RDBMS đều dựa trên nguyên lý: Bản sao lưu vật lý toàn phần (Full Backup) + Nhật ký giao dịch (Transaction Logs/Archive Logs). Sự khác biệt nằm ở cách chúng ta gọi tên và quản lý các file nhật ký này.

2. Chi tiết các nội dung

A. Phân loại Backup (Logical vs. Physical)

Tư duy đầu tiên anh cần ánh xạ là sự khác biệt giữa sao lưu logic (kết xuất ra mã SQL) và sao lưu vật lý (copy file nhị phân).

Hệ thốngSao lưu Logic (Logical Backup)Sao lưu Vật lý (Physical Backup)Công cụ khuyên dùng cho Enterprise
OracleData Pump (expdp / impdp)Copy file .dbf, .ctl (Cold/Hot backup)RMAN (Quản lý toàn diện).
SQL ServerBACPAC / DACPAC (Dùng cho di chuyển schema)Backup file .mdf / .ndfTính năng Native Backup/Restore tích hợp sẵn trong T-SQL / SSMS.
PostgreSQLpg_dump / pg_dumpallCopy thư mục Data (pg_basebackup)pgBackRest hoặc Barman (Công cụ quản lý của bên thứ 3).
MySQLmysqldump / mysqlpumpFile copy (Chỉ dùng khi tắt DB)Percona XtraBackup (Vua backup vật lý online cho InnoDB).
MongoDBmongodump (BSON/JSON)Snapshot đĩa vật lý (LVM)MongoDB Cloud Manager hoặc Disk Snapshot (Mức OS).

B. Chế độ Ghi nhật ký (The Heart of Point-in-Time Recovery - PITR)

Để khôi phục CSDL về chính xác lúc 14:05:59 (ngay trước khi user chạy lệnh DROP nhầm), CSDL phải ở chế độ lưu trữ toàn bộ lịch sử giao dịch.

  • Oracle: Anh phải đưa database về chế độ ARCHIVELOG. Khái niệm định vị thời gian là SCN (System Change Number).

  • SQL Server: Anh phải set Recovery Model của database thành FULL. (Tương đương Archivelog). Nếu để SIMPLE (tương đương NOARCHIVELOG), log sẽ tự xóa sau khi commit và anh không thể PITR. Khái niệm định vị là LSN (Log Sequence Number).

  • PostgreSQL: Anh phải bật WAL Archiving (archive_mode = onwal_level = replica). Postgres lưu các file WAL (Write-Ahead Log) 16MB liên tục ra một thư mục an toàn.

  • MySQL: Anh bắt buộc phải kích hoạt Binary Log (Binlog). Khác với Redo/Undo dùng để crash recovery, Binlog ghi lại mọi lệnh SQL làm thay đổi dữ liệu để dùng cho Backup và Replication.

  • MongoDB: Phải chạy trong mô hình Replica Set để kích hoạt Oplog (Operations Log). MongoDB dùng Oplog để đồng bộ dữ liệu giữa các node và phục vụ PITR.

C. Chiến lược Chuỗi sao lưu (Backup Chain)

  • Oracle (RMAN): Level 0 (Full) $\rightarrow$ Level 1 (Incremental hoặc Cumulative). RMAN tự động biết block nào thay đổi nhờ tính năng Block Change Tracking.

  • SQL Server: Bắt buộc tuân thủ chuỗi: Full Backup (Cuối tuần) $\rightarrow$ Differential Backup (Hàng ngày - lưu các thay đổi kể từ bản Full gần nhất) $\rightarrow$ Transaction Log Backup (Mỗi 15 phút). Lưu ý: Nếu anh làm đứt chuỗi Log, anh không thể khôi phục tiếp được.

  • PostgreSQL: Phải lấy một bản Base Backup (Bản Full vật lý) ban đầu. Sau đó, hệ thống sẽ liên tục đẩy các file WAL (Incremental) về server backup. Quá trình Restore là lấy Base Backup rồi "Replay" (chạy lại) toàn bộ các WAL files đó.


3. Tóm tắt lại nội dung của bài học

  • Trong thế giới CSDL lớn, không ai dùng Logical Backup (Export/Dump) để làm phương án DR (Disaster Recovery) vì thời gian restore quá lâu. Bắt buộc phải dùng Physical Backup.

  • SQL Server làm cực kỳ xuất sắc việc tích hợp Backup vào lõi (Native). Anh chỉ cần dùng T-SQL là cấu hình được chuỗi Full - Diff - Log cực kỳ hoàn hảo mà không cần công cụ ngoài.

  • PostgreSQL và MySQL không có "RMAN" chính chủ đủ mạnh. Anh bắt buộc phải làm quen với các công cụ của bên thứ 3 (như pgBackRest cho Postgres và Percona XtraBackup cho MySQL) để thực hiện Incremental Backup an toàn ở cấp độ Enterprise.


4. Câu hỏi ôn tập

  1. Hỏi (Oracle): Tính năng nào của Oracle giúp RMAN chỉ cần quét các block thực sự có thay đổi thay vì quét toàn bộ Datafile khi thực hiện Incremental Backup (Level 1)?

    • Đáp: Block Change Tracking (BCT).

  2. Hỏi (SQL Server): Chế độ Recovery Model nào của SQL Server tương đương với chế độ NOARCHIVELOG trong Oracle (tức là tự động ghi đè log và không hỗ trợ Point-in-Time Recovery)?

    • Đáp: Simple Recovery Model.

  3. Hỏi (PostgreSQL): Thuật ngữ dùng để chỉ các tệp nhật ký giao dịch (kích thước mặc định 16MB) mang ý nghĩa sống còn trong quá trình sao lưu và phục hồi của Postgres là gì?

    • Đáp: WAL (Write-Ahead Log) files.

  4. Hỏi (MySQL): Nếu anh dùng mysqldump để backup, bản backup đó được xếp vào loại nào: Physical hay Logical?

    • Đáp: Logical Backup (Vì nó kết xuất ra các lệnh SQL CREATEINSERT).

  5. Hỏi (MongoDB): Để thực hiện PITR trong MongoDB, hệ thống bắt buộc phải dựa vào một bộ nhật ký đặc biệt chỉ có khi chạy Replica Set. Tên của nó là gì?

    • Đáp: Oplog (Operations Log).


5. Bài tập thực hành (Kiểm tra trạng thái sẵn sàng cho PITR)

Đề bài: Trước khi thiết lập bất kỳ lịch trình sao lưu nào, một DBA lão luyện phải kiểm tra xem CSDL có đang ở chế độ ghi nhận toàn bộ lịch sử giao dịch (Archivelog/Full Recovery) hay không. Nếu không, mọi bản backup Log/Incremental đều vô nghĩa.

Hãy viết câu lệnh kiểm tra trạng thái này trên cả 5 hệ thống.

Đáp án:

1. Oracle (Kiểm tra Archivelog Mode):

SQL
-- Dùng SQL*Plus
ARCHIVE LOG LIST;
-- Hoặc query từ v$database:
SELECT log_mode FROM v$database;
-- Kết quả kỳ vọng: ARCHIVELOG

2. SQL Server (Kiểm tra Recovery Model):

SQL
SELECT name AS Database_Name, recovery_model_desc 
FROM sys.databases 
WHERE name = 'sopirs_new';
-- Kết quả kỳ vọng: FULL (Nếu là SIMPLE, anh phải dùng lệnh ALTER DATABASE sopirs_new SET RECOVERY FULL;)

3. PostgreSQL (Kiểm tra WAL Archiving):

SQL
SHOW wal_level;
SHOW archive_mode;
-- Kết quả kỳ vọng: wal_level phải là 'replica' (hoặc 'logical'), archive_mode phải là 'on'.

4. MySQL / MariaDB (Kiểm tra Binlog):

SQL
SHOW VARIABLES LIKE 'log_bin';
-- Kết quả kỳ vọng: ON (Nếu OFF, anh không thể cấu hình nhân bản Replication hoặc PITR).

5. MongoDB (Kiểm tra Oplog trong Replica Set):

JavaScript
use local;
db.oplog.rs.stats().maxSize;
// Hoặc xem tổng quan Oplog window (thời gian lưu trữ của oplog)
rs.printReplicationInfo();
// Kết quả kỳ vọng: Hiển thị kích thước Oplog và độ dài thời gian mà Oplog có thể bao phủ (VD: "log length start to end: 72 hours").

Nắm chắc nguyên lý cốt lõi này, bạn sẽ không bao giờ bị lạc lối khi cấu hình backup. Ở bài học tiếp theo - Module 13: Cấu hình backup and recovery, chúng ta sẽ xắn tay áo lên và viết các script lập lịch cấu hình Retention, định tuyến file backup ra đĩa mạng cho từng CSDL. Bạn đã sẵn sàng chưa?

=============================
TƯ VẤN: Click Here hoặc Hotline/Zalo 090.29.12.888
=============================
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
cơ sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c/21c/23c/23ai, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, docker, k8s, micro service, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master