Ở Module 12, chúng ta đã đả thông tư tưởng về nguyên lý (Physical, Logical, Archivelog, MVCC). Giờ là lúc xắn tay áo lên cấu hình thực tế.
Một hệ thống backup không chỉ là gõ lệnh BACKUP DATABASE rồi để đó. Anh phải quy hoạch nơi lưu trữ (Destination), cấu hình chính sách dọn dẹp rác (Retention Policy) để ổ cứng không bị đầy, và thiết lập cơ chế tự động hóa (Automation).
Chào mừng anh đến với Module 13: Cấu hình backup and recovery.
1. Tổng quan
Trong Oracle, anh có một vùng không gian tuyệt vời tên là FRA (Fast Recovery Area). Khi anh chỉ định thư mục FRA và dung lượng cho nó, Oracle (cùng với RMAN) sẽ tự động quản lý vòng đời của các file Backup, Archivelog, Controlfile autobackup. Khi FRA đầy, nó tự biết xóa các file đã hết hạn (Obsolete).
Nhưng hãy chuẩn bị tinh thần: Các hệ thống khác không "thông minh" và tự động dọn rác tốt như RMAN của Oracle.
SQL Server: Anh phải tự viết script (hoặc dùng Maintenance Plan) để xóa các file
.bakvà.trncũ.PostgreSQL: Anh phải tự viết script copy file WAL ra ổ mạng (NFS) và dùng
crontrên Linux để xóa file cũ.MySQL: Tự động xóa Binlog thì được, nhưng xóa file backup
.sqlhay.xbstreamthì anh vẫn phải tự viết kịch bản hệ điều hành.
2. Chi tiết các nội dung
A. Cấu hình Vị trí lưu trữ và Chính sách (Destination & Retention)
| Hệ thống | Nơi lưu trữ mặc định | Cấu hình Retention (Chính sách giữ lại) | Đặc điểm cấu hình |
| Oracle | FRA (db_recovery_file_dest) | RMAN: CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; | Tự động tính toán chuỗi log và xóa các file không còn cần thiết. |
| SQL Server | C:\Program Files\... \MSSQL\Backup | Không có lệnh cấp DB. Phải dùng Maintenance Cleanup Task trong SQL Agent. | Quản lý theo số ngày lưu file vật lý trên Windows. |
| PostgreSQL | Không có mặc định. File WAL lưu ở pg_wal. | Phụ thuộc vào công cụ bên thứ 3 (như pgBackRest cấu hình repo1-retention-full=2). | Cấu hình lệnh archive_command để copy WAL ra thư mục an toàn là bắt buộc. |
| MySQL | Không có mặc định cho Backup. | File Binlog: Cấu hình biến binlog_expire_logs_seconds. File Backup: OS Script. | Xóa Binlog cũ rất quan trọng để tránh đầy ổ cứng hệ thống. |
| MongoDB | Phụ thuộc thư mục mount OS. | Cấu hình kích thước tối đa của Oplog thay vì số ngày. | Khi Oplog đầy, nó tự động ghi đè theo cơ chế vòng (Circular buffer). |
B. Cấu hình Tự động hóa (Automation)
Để hệ thống tự chạy lúc 2h sáng:
Oracle: Anh dùng cronjob gọi script
rman target / cmdfile=backup.rmanhoặc dùngDBMS_SCHEDULER.SQL Server: Đây là điểm mạnh nhất của Microsoft. Tính năng SQL Server Agent kết hợp với Maintenance Plans cho phép anh dùng chuột kéo thả: Kéo khối "Back Up Database (Full)", nối mũi tên sang khối "Maintenance Cleanup Task" (xóa file cũ hơn 7 ngày), rồi đặt lịch chạy tự động cực kỳ trực quan.
PostgreSQL / MySQL / MongoDB: Quay về với môi trường Linux chuẩn mực: Bắt buộc phải viết Bash Script chứa lệnh dump/basebackup, kết hợp với lệnh
find /backup_dir -mtime +7 -delete, sau đó đặt vàocrontab -e.
C. Câu lệnh Quản trị & Kết quả đầu ra (Cấu hình tham số cốt lõi)
1. Oracle: Cấu hình FRA (Fast Recovery Area)
ALTER SYSTEM SET db_recovery_file_dest_size = 500G SCOPE=BOTH;
ALTER SYSTEM SET db_recovery_file_dest = '/u03/fast_recovery_area' SCOPE=BOTH;
-- Kết quả: Đã quy hoạch xong 500GB ổ đĩa chỉ dành riêng cho Backup và Archivelog.
2. SQL Server: Xem thư mục Backup mặc định đã cấu hình ở tầng Instance
EXEC xp_instance_regread
N'HKEY_LOCAL_MACHINE',
N'Software\Microsoft\MSSQLServer\MSSQLServer',
N'BackupDirectory';
-- Kết quả: Trả về đường dẫn mặc định (ví dụ: D:\SQL_Backups\). Khi chạy lệnh BACKUP DATABASE, nếu không gõ đường dẫn tuyệt đối, file sẽ rơi vào đây.
3. PostgreSQL: Cấu hình lệnh Archive (Đẩy WAL file đi nơi khác)
Trong file postgresql.conf, anh phải định nghĩa lệnh copy file của OS.
ALTER SYSTEM SET archive_mode = 'on';
-- Dùng lệnh cp của Linux để copy file WAL (%p) sang thư mục backup mạng (%f)
ALTER SYSTEM SET archive_command = 'cp %p /mnt/nfs_backup/archive/%f';
SELECT pg_reload_conf();
-- Kết quả: Kể từ bây giờ, mọi transaction log đều được nhân bản ra ổ mạng an toàn.
4. MySQL / MariaDB: Cấu hình thời gian giữ Binlog (Binlog Retention)
-- Giữ binlog trong 7 ngày (7 * 24 * 60 * 60 = 604800 giây) đối với MySQL 8.0
SET PERSIST binlog_expire_logs_seconds = 604800;
-- Kết quả: Hệ thống sẽ tự dọn dẹp các file binlog cũ hơn 7 ngày để giải phóng ổ cứng.
3. Tóm tắt lại nội dung của bài học
Tư duy quản trị sao lưu của Oracle (qua RMAN và FRA) là đỉnh cao của sự tự động hóa. RMAN tự biết bản Full nào đi với chuỗi Archivelog nào.
Đối với SQL Server, anh tuyệt đối không bao giờ được xóa tay các file
.bakhay.trntrong Windows Explorer. Anh phải dùng Job có chứa T-SQLxp_delete_filehoặc Maintenance Plan để SQL Server tự cập nhật thông tin xóa vào bảng lịch sử backup (nằm trong databasemsdb).Đối với PostgreSQL, cấu hình sống còn nhất là
archive_command. Nếu lệnh copy này bị lỗi (ví dụ ổ đĩa đích/mnt/nfs_backupbị đầy hoặc rớt mạng), thư mụcpg_walcục bộ của Postgres sẽ phình to liên tục cho đến khi sập toàn bộ CSDL. Do đó, DBA phải luôn monitor ổ đĩa này.
4. Câu hỏi ôn tập
Hỏi (Oracle): Tham số nào quy định dung lượng tối đa mà thư mục FRA (Fast Recovery Area) được phép sử dụng để chứa file backup và archivelog?
Đáp:
DB_RECOVERY_FILE_DEST_SIZE.
Hỏi (SQL Server): Công cụ đồ họa tích hợp sẵn nào trong SSMS cho phép DBA cấu hình lịch trình sao lưu (Full, Diff, Log) và dọn dẹp file cũ mà không cần viết một dòng code nào?
Đáp: Maintenance Plans (Kế hoạch bảo trì) chạy trên nền SQL Server Agent.
Hỏi (PostgreSQL): Điều tồi tệ gì sẽ xảy ra với Instance nếu tham số
archive_commandgọi lệnh copy file bị thất bại liên tục (ví dụ do ổ NAS đích bị mất kết nối)?Đáp: PostgreSQL sẽ không dám xóa các file WAL đã dùng xong, dẫn đến thư mục
pg_wal(trên phân vùng cài đặt) bị đầy 100%, làm Database Engine bị crash/treo cứng ngay lập tức.
Hỏi (MySQL): Tham số
binlog_expire_logs_seconds(hoặcexpire_logs_daysở bản cũ) có chức năng gì?Đáp: Tự động xóa các file Binary Log (nhật ký giao dịch) đã cũ hơn khoảng thời gian quy định để tránh đầy ổ cứng hệ thống.
Hỏi (MongoDB): MongoDB lưu trữ các thay đổi dữ liệu (để phục vụ khôi phục và nhân bản) vào Oplog. Thay vì cấu hình thời gian (số ngày), anh giới hạn Oplog bằng tham số gì?
Đáp: Giới hạn bằng kích thước dung lượng (Ví dụ:
oplogSizeMB = 50000tương đương 50GB). Khi đầy, nó sẽ ghi đè cuốn chiếu.
5. Bài tập thực hành (Cấu hình vòng đời của Transaction Log)
Đề bài tình huống: Một lỗi kinh điển của DBA mới vào nghề là "quên" dọn dẹp các file nhật ký giao dịch (Archivelog/WAL/Binlog), khiến ổ cứng chứa CSDL bị đầy 100% gây sập hệ thống.
Với tư cách là Chuyên gia, hãy viết câu lệnh/cấu hình giới hạn thời gian lưu trữ nhật ký hoặc không gian chứa nhật ký để bảo vệ hệ thống không bị "tràn ổ đĩa" cho cả 5 cơ sở dữ liệu.
Đáp án:
1. Oracle: (Xóa các Archivelog đã được backup và quá hạn theo chính sách Retention của RMAN).
# Trong môi trường RMAN:
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
RMAN> DELETE NOPROMPT OBSOLETE;
# (Câu lệnh DELETE thường được đưa vào script chạy crontab hàng ngày).
2. SQL Server: (Thực hiện Backup Log để hệ thống tự động cắt/Truncate file Log bên trong, tránh file .ldf phình to vô hạn).
-- Phải thiết lập Job chạy lệnh này mỗi 15 hoặc 30 phút một lần
BACKUP LOG sopirs_new
TO DISK = 'D:\SQL_Backups\sopirs_new_LogBackup.trn';
-- Đối với việc xóa file .trn vật lý cũ hơn 7 ngày, anh viết trong Job:
EXECUTE master.dbo.xp_delete_file 0,N'D:\SQL_Backups\',N'trn', N'2026-02-18T00:00:00';
3. PostgreSQL: (Cấu hình giới hạn dung lượng tối đa mà thư mục pg_wal được phép giữ lại trên đĩa cứng nội bộ).
-- Mở postgresql.conf và cấu hình (khởi động lại DB nếu cần):
ALTER SYSTEM SET max_wal_size = '10GB';
ALTER SYSTEM SET min_wal_size = '2GB';
SELECT pg_reload_conf();
-- (Hệ thống sẽ ép Checkpoint và tái sử dụng WAL khi chạm ngưỡng 10GB).
4. MySQL / MariaDB: (Giới hạn vòng đời Binlog là 7 ngày).
-- Phiên bản MySQL 8.0 trở lên:
SET PERSIST binlog_expire_logs_seconds = 604800; -- (7 ngày)
-- Khi Binlog đạt đến số giây này, MySQL sẽ tự purge (xóa) file vật lý đi.
5. MongoDB: (Thay đổi linh hoạt dung lượng tối đa của Oplog thành 10GB mà không cần khởi động lại hệ thống).
use admin;
db.adminCommand({ replSetResizeOplog: 1, size: 10240 });
// Kích thước Oplog giờ bị khóa ở 10GB, khi đầy nó sẽ tự ghi đè các log cũ nhất.
Hạ tầng đã quy hoạch, chính sách dọn dẹp đã lên nòng. Giờ là lúc thực sự "bấm nút" lấy dữ liệu ra ở bài tiếp theo: Module 14: Thực hiện backup CSDL. Chúng ta sẽ viết các lệnh kết xuất dữ liệu (Dump) và sao lưu vật lý chuẩn mực nhất
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