1. Tổng quan
Migration CSDL (Di chuyển hệ thống) là một chiến dịch lớn, được chia làm hai bài toán:
Homogeneous Migration (Cùng nền tảng): Chuyển từ máy chủ cũ sang máy chủ mới (ví dụ: nâng cấp phần cứng, lên Cloud). Quá trình này tận dụng các công cụ đồng bộ nội tại (Native Replication).
Heterogeneous Migration (Khác nền tảng): Chuyển từ hãng này sang hãng khác (ví dụ: Oracle sang PostgreSQL). Đây là dự án cực kỳ phức tạp vì phải chuyển đổi Cấu trúc (Schema), Mã nguồn (PL/SQL sang PL/pgSQL) và Dữ liệu.
Mục tiêu tối thượng của DBA trong các dự án này là Zero Downtime Migration (Chuyển đổi với độ trễ gần bằng 0) dựa trên công nghệ CDC (Change Data Capture).
2. Chi tiết các nội dung
A. Phương pháp Migration Cùng nền tảng (Homogeneous)
| Hệ thống | Phương pháp Offline (Có Downtime) | Phương pháp Online (Zero Downtime / CDC) |
| Oracle | Data Pump (expdp/impdp), Transportable Tablespace | Oracle GoldenGate, Data Guard. |
| SQL Server | Backup/Restore, Detach/Attach file .mdf | Always On Availability Groups, Transactional Replication. |
| PostgreSQL | pg_dump / pg_restore | Logical Replication (Publisher - Subscriber). |
| MySQL | mysqldump, MySQL Shell Dump & Load | Binlog Replication (Master - Slave / Group Replication). |
| MongoDB | mongodump / mongorestore | Replica Set (Thêm node mới vào cụm, đợi đồng bộ xong thì thăng cấp). |
B. Công cụ Migration Khác nền tảng (Heterogeneous)
Khi muốn "thoát" Vendor Lock-in, DBA phải dùng các công cụ chuyển đổi chuyên dụng:
Sang SQL Server: Dùng SSMA (SQL Server Migration Assistant).
Sang PostgreSQL: Dùng Ora2Pg (chuyển từ Oracle siêu tốt) hoặc AWS SCT.
Sang MySQL: Dùng MySQL Workbench Migration Wizard.
Công cụ ETL/CDC trung gian: Debezium (mã nguồn mở dùng Kafka), Apache NiFi, AWS DMS (Database Migration Service).
C. Các bước thực hiện Zero Downtime Migration tiêu chuẩn
Schema Build: Dựng cấu trúc bảng, view rỗng trên DB đích.
Initial Load (Tải dữ liệu ban đầu): Đổ toàn bộ dữ liệu hiện có sang DB đích (Lúc này DB gốc vẫn đang chạy).
CDC Sync (Đồng bộ độ trễ): Bật cơ chế đọc Log (Redo/WAL) để "bơm" liên tục các thay đổi diễn ra trong lúc Initial Load sang DB đích.
Cutover (Chuyển mạch): Khóa ứng dụng vài giây $\rightarrow$ Đợi DB đích đồng bộ byte cuối cùng $\rightarrow$ Trỏ Connection String sang DB mới $\rightarrow$ Mở ứng dụng.
D. Câu lệnh Quản trị: Thiết lập Đồng bộ Migration (Chi tiết 5 DB)
1. Oracle: Migration siêu tốc qua Network Link (Không cần tạo file Dump trên đĩa)
Thay vì export ra file rồi copy sang server mới, anh tạo một đường ống mạng (Database Link) và bơm thẳng dữ liệu sang.
-- Trên Server Mới:
CREATE DATABASE LINK old_db_link CONNECT TO system IDENTIFIED BY "Mật_Khẩu" USING 'OLD_TNS';
-- Chạy Data Pump kéo dữ liệu trực tiếp qua mạng:
impdp system/Mật_Khẩu DIRECTORY=DATA_PUMP_DIR NETWORK_LINK=old_db_link SCHEMAS=sales_schema PARALLEL=4;
2. SQL Server: Migration Zero Downtime bằng Always On Availability Group
Biến server mới thành một Node dự phòng của server cũ, để hệ thống tự đồng bộ ở mức Block.
-- Trên Server Mới (Secondary Replica):
ALTER AVAILABILITY GROUP [AG_Migration] JOIN;
ALTER AVAILABILITY GROUP [AG_Migration] GRANT CREATE ANY DATABASE;
-- Đợi quá trình Initial Data Sync hoàn tất (Dashboard báo Synchronized).
-- Đến ngày Cutover, thực hiện Failover sang Server Mới:
ALTER AVAILABILITY GROUP [AG_Migration] FAILOVER;
3. PostgreSQL: Migration bằng Logical Replication (Khác phiên bản cũng được)
Cho phép chuyển dữ liệu online từ Postgres 11 (cũ) sang Postgres 14 (mới).
-- Trên Server Cũ (Publisher):
CREATE PUBLICATION migration_pub FOR ALL TABLES;
-- Trên Server Mới (Subscriber):
CREATE SUBSCRIPTION migration_sub
CONNECTION 'host=192.168.1.10 dbname=app_db user=rep_user password=Secret'
PUBLICATION migration_pub;
-- Kết quả: Postgres tự động Initial Load và stream WAL liên tục.
4. MySQL / MariaDB: Migration bằng Binlog Replication
-- Trên Server Mới, cấu hình kéo Binlog từ Server Cũ:
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='192.168.1.10',
SOURCE_USER='repl_user',
SOURCE_PASSWORD='SecretPassword',
SOURCE_LOG_FILE='mysql-bin.000005',
SOURCE_LOG_POS=1204;
START REPLICA;
-- Theo dõi độ trễ bằng lệnh SHOW REPLICA STATUS\G (Chờ Seconds_Behind_Master về 0).
5. MongoDB: Migration "Không làm gì cả" (Cơ chế Replica Set)
MongoDB là hệ thống nhàn nhất khi chuyển server vật lý.
// Kết nối vào Server Cũ (Đang là Primary), thêm Server Mới vào cụm:
rs.add("192.168.1.20:27017");
// Xem quá trình tự động chép dữ liệu (Initial Sync) và áp dụng Oplog:
rs.status();
// Ngày Cutover, ép Server Cũ nhường ngôi Primary cho Server Mới:
rs.stepDown();
3. Tóm tắt lại nội dung của bài học (Đặc thù từng hệ thống)
Chiến lược Migration của một DBA phụ thuộc hoàn toàn vào "vũ khí" mà hệ thống đó cung cấp:
Oracle: GoldenGate là vị vua của Zero Downtime Migration, hỗ trợ cả Homogeneous và Heterogeneous cực kỳ mạnh mẽ. Nếu không có license GoldenGate, Data Guard hoặc Data Pump qua Network Link là phương án thay thế hoàn hảo.
SQL Server: Tính năng Always On AG biến việc chuyển server thành một cú click chuột Failover nhẹ nhàng. Nếu chuyển đổi từ hệ thống khác sang, công cụ SSMA của Microsoft hỗ trợ convert mã nguồn (Stored Procedure) tự động với tỷ lệ chính xác rất cao.
PostgreSQL: Sức mạnh nằm ở Logical Replication. Anh có thể dựng một server Postgres 15 mới tinh, kéo dữ liệu online từ server Postgres 10 cũ đang chạy mà ứng dụng không hề hay biết. Chuyển đổi từ Oracle sang Postgres dùng Ora2Pg đang là xu hướng toàn cầu.
MySQL: Cơ chế Binlog Replication đơn giản, dễ làm. Khi migration các database khổng lồ, MySQL Shell (Dump & Load API) hỗ trợ chia nhỏ chunk và đẩy song song (Parallel) cực kỳ ấn tượng, thay thế hoàn toàn cho
mysqldumptruyền thống.MongoDB: Kiến trúc hướng phân tán giúp việc chuyển server chỉ đơn giản là bài toán thêm/bớt Node (Add/Remove Node) trong một Replica Set. Hệ thống tự động lo phần Initial Sync và Oplog Sync mà DBA không cần viết script.
4. Câu hỏi ôn tập
Hỏi (Oracle): Phương pháp nào trong Data Pump (
expdp/impdp) cho phép chuyển dữ liệu thẳng từ Database cũ sang Database mới mà không tiêu tốn một byte ổ cứng nào để lưu file dump trung gian?Đáp: Sử dụng tham số
NETWORK_LINK.
Hỏi (SQL Server): Trong bộ công cụ của Microsoft, tiện ích miễn phí nào giúp đánh giá độ tương thích và tự động chuyển đổi mã nguồn từ CSDL khác (như Oracle) sang SQL Server?
Đáp: SSMA (SQL Server Migration Assistant).
Hỏi (PostgreSQL): Khác biệt lớn nhất giữa Physical Replication và Logical Replication khi dùng để Migration là gì?
Đáp: Physical Replication sao chép chính xác từng block đĩa, nên 2 server bắt buộc phải cùng phiên bản lớn (major version). Logical Replication đọc WAL và dịch thành câu lệnh SQL, nên dùng được giữa các phiên bản khác nhau (hỗ trợ nâng cấp phiên bản không gián đoạn).
Hỏi (MySQL): Trong lúc thiết lập Replication để di chuyển dữ liệu, thông số nào báo hiệu rằng Server mới đã bắt kịp hoàn toàn tiến độ của Server gốc và sẵn sàng để Cutover?
Đáp: Thông số
Seconds_Behind_Mastercó giá trị bằng0.
Hỏi (MongoDB): Để thực hiện cắt chuyển (Cutover) đưa một node mới lên làm máy chủ chính và từ từ gỡ bỏ node cũ, lệnh nào được dùng để ép node Primary hiện tại từ chức?
Đáp: Lệnh
rs.stepDown().
5. Bài tập thực hành (Trích xuất Data định dạng CSV)
Đề bài tình huống: Anh đang thực hiện Heterogeneous Migration: Chuyển dữ liệu của bảng customers sang một hệ thống phân tích trung tâm khác nền tảng. Phương pháp thô sơ nhưng chuẩn xác nhất là trích xuất dữ liệu ra định dạng trung gian CSV (Comma Separated Values).
Hãy viết lệnh trích xuất bảng customers ra file CSV cho 5 hệ thống.
Đáp án:
1. Oracle: (Thường dùng SQLcl hoặc cấu hình spool trong SQL*Plus)
SET MARKUP CSV ON QUOTE ON;
SPOOL /backup/customers.csv;
SELECT * FROM customers;
SPOOL OFF;
2. SQL Server: (Dùng công cụ CLI bcp từ hệ điều hành)
bcp "SELECT * FROM app_db.dbo.customers" queryout "D:\backup\customers.csv" -c -t, -S localhost -U sa -P "MậtKhẩu"
3. PostgreSQL: (Dùng lệnh COPY)
COPY customers TO '/backup/customers.csv' DELIMITER ',' CSV HEADER;
4. MySQL / MariaDB: (Dùng lệnh SELECT ... INTO OUTFILE)
SELECT * FROM customers
INTO OUTFILE '/var/lib/mysql-files/customers.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
5. MongoDB: (Dùng công cụ mongoexport từ hệ điều hành)
mongoexport --host localhost --db app_db --collection customers --type=csv --fields name,email,phone --out /backup/customers.csvVới nền tảng Migration vững chắc này, anh hoàn toàn có thể di dời bất kỳ CSDL nào lên Cloud hoặc nâng cấp hạ tầng mới. Tiếp theo, chúng ta sẽ mở đầu Phần 4 - Bảo trì, tuning nâng cao, tự động hóa với Module 17: Bảo trì CSDL (Rebuild Index, Update Statistics). Anh đã sẵn sàng để "bảo dưỡng" động cơ 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