Sau khi đã quy hoạch xong hạ tầng lưu trữ và thiết lập chính sách (Retention) ở Module 13, bây giờ là lúc chúng ta thực sự "bấm nút" lấy dữ liệu ra.
Trong 20 năm làm nghề, anh đã quá quen với việc gõ RMAN> BACKUP DATABASE PLUS ARCHIVELOG. RMAN là một kiệt tác của Oracle. Khi chuyển sang các hệ thống khác, anh sẽ thấy SQL Server có cơ chế backup vật lý tích hợp sẵn rất tuyệt vời, trong khi nhóm Open Source (Postgres, MySQL, MongoDB) lại phụ thuộc nhiều vào các công cụ dòng lệnh (CLI) chạy trên hệ điều hành.
Chào mừng anh đến với Module 14: Thực hiện backup CSDL.
1. Tổng quan
Với tư cách là một DBA Enterprise, anh luôn phải phân định rõ hai hình thức sao lưu:
Logical Backup (Sao lưu Logic - Dump/Export): Trích xuất cấu trúc và dữ liệu thành các câu lệnh (như
CREATE TABLE,INSERT) hoặc định dạng BSON. Ưu điểm: Đọc được, dễ dàng chuyển đổi giữa các phiên bản (vd: từ v12 lên v15). Nhược điểm: Rất chậm, không dùng làm phương án Disaster Recovery (DR) cho DB hàng Terabyte.Physical Backup (Sao lưu Vật lý): Copy trực tiếp các khối dữ liệu (Block/Page) dưới đĩa cứng. Ưu điểm: Nhanh vô địch, phục hồi nguyên trạng từng byte. Đây là phương án sống còn để cứu hộ hệ thống.
2. Chi tiết các nội dung
A. Công cụ Logical Backup (Tương đương Data Pump expdp)
| Hệ thống | Công cụ CLI | Đặc điểm nổi bật cho DBA |
| Oracle | expdp / impdp | Chạy phía Server (Server-side), hỗ trợ chạy song song (Parallel) cực nhanh. |
| SQL Server | SqlPackage.exe / SSMS | Xuất ra file .bacpac (chứa Data + Schema) hoặc .dacpac (chỉ Schema). |
| PostgreSQL | pg_dump | Nếu dùng định dạng Custom (-Fc), file backup sẽ được nén lại, cho phép restore song song và chọn lọc từng bảng. |
| MySQL | mysqldump / mysqlpump | Phổ biến nhất. Luôn nhớ dùng tham số --single-transaction để không khóa bảng khi dump dữ liệu. |
| MongoDB | mongodump | Xuất dữ liệu ra định dạng BSON nhị phân (nhỏ gọn và nhanh hơn xuất JSON thuần túy). |
B. Công cụ Physical Backup (Tương đương RMAN)
Oracle: RMAN. Chuẩn mực của ngành, hỗ trợ Incremental Backup theo dõi từng block thay đổi.
SQL Server: Tích hợp sâu vào ngôn ngữ T-SQL. Lệnh
BACKUP DATABASEđọc trực tiếp các Extent (64KB) và ghi ra file.bakmà không cần ngắt kết nối user.PostgreSQL: Dùng công cụ pg_basebackup. Nó kết nối vào Instance như một máy trạm Replication, stream toàn bộ thư mục Data về một file
.tar.gz.MySQL: Cần dùng công cụ ngoài là Percona XtraBackup. Nó copy file
.ibdvà theo dõi Redo log đồng thời, đảm bảo CSDL vẫn chạy bình thường (Hot Backup) mà không bị lock bảng.MongoDB: Hỗ trợ lệnh
db.fsyncLock()để ép xả dữ liệu từ RAM xuống đĩa, sau đó dùng LVM Snapshot của Linux để chụp ảnh ổ cứng. Cuối cùng chạydb.fsyncUnlock().
C. Câu lệnh Quản trị & Kết quả đầu ra (Thực thi Backup thực tế)
1. Oracle: Thực hiện Physical Backup toàn diện bằng RMAN
RMAN> BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;
/* Kết quả đầu ra:
Starting backup at 25-FEB-26
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/app/oracle/oradata/ORCL/system01.dbf
...
Finished backup at 25-FEB-26
*/
2. SQL Server: Thực hiện Physical Full Backup với nén dữ liệu
BACKUP DATABASE sopirs_new
TO DISK = 'D:\SQL_Backups\sopirs_new_FULL.bak'
WITH COMPRESSION, STATS = 10, INIT;
/* Kết quả đầu ra:
10 percent processed.
...
100 percent processed.
Processed 345023 pages for database 'sopirs_new', file 'sopirs_data' on file 1.
BACKUP DATABASE successfully processed 345023 pages in 45.210 seconds.
*/
3. PostgreSQL: Thực hiện Logical Dump bằng Custom Format (Tốt nhất cho DR nhỏ)
Chạy trên Terminal của Linux:
pg_dump -h localhost -U postgres -F c -f /backup/sales_db.dump sales_db
# Kết quả đầu ra: Sinh ra file nhị phân sales_db.dump (đã nén). File này không đọc bằng lệnh 'cat' được, bắt buộc phải dùng công cụ pg_restore để đọc hoặc khôi phục.
4. MySQL / MariaDB: Logical Dump an toàn cho hệ thống đang chạy
mysqldump -u root -p --single-transaction --routines --triggers sales_db > /backup/sales_db.sql
# Kết quả đầu ra: Không in ra màn hình nếu thành công, nhưng sinh ra file sales_db.sql chứa toàn bộ cấu trúc (DDL), procedure, trigger và các lệnh INSERT dữ liệu. Ứng dụng vẫn hoạt động bình thường lúc dump.
5. MongoDB: Thực hiện Logical Backup toàn bộ một Database
mongodump --host="localhost" --port=27017 --db="sales_db" --out="/backup/mongo_dump/"
/* Kết quả đầu ra:
2026-02-25T22:51:00.000+0700 writing sales_db.orders to /backup/mongo_dump/sales_db/orders.bson
2026-02-25T22:51:05.000+0700 done dumping sales_db.orders (150000 documents)
*/
3. Tóm tắt lại nội dung của bài học
Mỗi hệ thống có một "cá tính" riêng khi trích xuất dữ liệu, anh cần lưu ý các điểm sinh tử sau:
Oracle: RMAN là hệ sinh thái hoàn hảo nhất. Nó tự biết file nào hỏng, block nào lỗi để backup và tự động dọn rác.
SQL Server: Lợi thế tuyệt đối là có sẵn lệnh
BACKUP DATABASEngay trong Engine. Anh không cần thoát ra OS hay cài thêm phần mềm nào để lấy được bản sao lưu vật lý tốc độ cao.PostgreSQL: Không có lệnh sao lưu vật lý cấp Database. Lệnh
pg_basebackupluôn sao lưu toàn bộ Cluster (tất cả các DB trong Instance). Nếu anh chỉ muốn backup 1 DB duy nhất, anh buộc phải dùngpg_dump.MySQL: Tham số
--single-transactiontrongmysqldumplà "bùa hộ mệnh". Nó tận dụng không gian Undo để trích xuất dữ liệu nhất quán mà không dùng đến Table Lock. Quên tham số này, toàn bộ hệ thống sẽ bị treo cứng lúc dump.MongoDB: Lệnh
mongodumprất tốt cho các DB nhỏ. Tuy nhiên, khi hệ thống phình lên hàng Terabyte hoặc cấu hình Sharding phức tạp, việc quét toàn bộ Document sẽ làm tràn RAM. Lúc này, giải pháp chụp ảnh ổ đĩa (Storage/LVM Snapshot) mới là chân lý.
4. Câu hỏi ôn tập
Hỏi (Oracle): Sự khác biệt cốt lõi về mặt kiến trúc giữa công cụ
expcũ vàexpdp(Data Pump) là gì?Đáp:
explà công cụ Client-side (kéo dữ liệu qua mạng về máy trạm), trong khiexpdplà Server-side (tiến trình chạy trực tiếp trên máy chủ DB, ghi thẳng ra đĩa cứng server nên tốc độ I/O cực nhanh).
Hỏi (SQL Server): Tùy chọn (option) nào trong lệnh
BACKUP DATABASEđược khuyên dùng để giảm thiểu thời gian I/O và kích thước file.baksinh ra trên đĩa cứng?Đáp: Tùy chọn
WITH COMPRESSION(Nén bản sao lưu).
Hỏi (PostgreSQL): Lệnh CLI nào được sử dụng để lấy một bản sao lưu vật lý toàn phần (Base Backup) nhằm phục vụ Point-in-Time Recovery hoặc dựng hệ thống Standby?
Đáp: Lệnh
pg_basebackup.
Hỏi (MySQL): Nếu anh quên tham số
--single-transactionkhi chạymysqldumptrên database đang có nhiều người dùng thao tác, hiện tượng gì sẽ xảy ra?Đáp: Hệ thống sẽ dùng khóa bảng (
LOCK TABLES) để đảm bảo dữ liệu không bị thay đổi lúc đọc, dẫn đến ứng dụng bị treo (không ai UPDATE/INSERT được) cho đến khi dump xong.
Hỏi (MongoDB): Dữ liệu xuất ra từ lệnh
mongodumpđược lưu trữ dưới định dạng nào và tại sao lại dùng định dạng đó?Đáp: Định dạng BSON (Binary JSON). Nó giúp tối ưu không gian lưu trữ và giữ nguyên được các kiểu dữ liệu (data types) phức tạp của MongoDB tốt hơn so với định dạng JSON dạng text thuần túy.
5. Bài tập thực hành (Viết script Backup chuẩn xác)
Đề bài tình huống: Anh được yêu cầu lấy gấp một bản sao lưu toàn phần (Full Backup) của CSDL sales_db ra thư mục /backup/ (trên Linux) hoặc D:\Backup\ (trên Windows). Yêu cầu:
Oracle, SQL Server, Postgres: Dùng sao lưu vật lý (Physical Backup / Base Backup) vì database này rất lớn.
MySQL, MongoDB: Dùng sao lưu logic (Logical Dump) vì cần lấy cấu trúc và dữ liệu đem sang môi trường UAT.
Hãy viết câu lệnh thực thi cho cả 5 CSDL.
Đáp án:
1. Oracle: (Dùng RMAN)
rman target /
RMAN> BACKUP AS COMPRESSED BACKUPSET DATABASE FORMAT '/backup/sales_db_full_%U.bkp';
2. SQL Server: (Dùng T-SQL)
BACKUP DATABASE sales_db
TO DISK = 'D:\Backup\sales_db_full.bak'
WITH COMPRESSION, INIT, STATS = 10;
3. PostgreSQL: (Dùng công cụ vật lý từ OS Linux)
Lưu ý: pg_basebackup lấy toàn bộ Cluster, không chỉ định 1 DB lẻ được.
pg_basebackup -h localhost -U postgres -D /backup/sales_cluster_backup -Fp -P
4. MySQL / MariaDB: (Dùng Logical Dump an toàn cho UAT)
mysqldump -u root -p --single-transaction --routines --triggers sales_db > /backup/sales_db_uat.sql
5. MongoDB: (Dùng Logical Dump)
mongodump --host="localhost" --port=27017 --db="sales_db" --out="/backup/mongo_dump/"
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