1. Giới thiệu
MySQL là một hệ quản trị cơ sở dữ liệu được sử dụng rộng rãi trong nhiều trang web và ứng dụng. Trong đó, lệnh mysqldump
là công cụ rất quan trọng khi cần sao lưu hoặc di chuyển cơ sở dữ liệu. Đặc biệt, khi bạn chỉ muốn sao lưu một bảng cụ thể từ cơ sở dữ liệu lớn, lệnh này cực kỳ hữu ích.
Trong bài viết này, chúng tôi sẽ giải thích chi tiết cách sử dụng lệnh mysqldump để xuất dữ liệu (dump) của một bảng cụ thể. Nội dung được trình bày dễ hiểu cho người mới bắt đầu, đồng thời cung cấp các tùy chọn và cách sử dụng nâng cao cho người dùng có kinh nghiệm.
2. Cú pháp cơ bản của lệnh mysqldump
Trước tiên, hãy cùng tìm hiểu cách sử dụng cơ bản của lệnh mysqldump. Lệnh này được dùng để xuất (backup) toàn bộ cơ sở dữ liệu hoặc cấu trúc và dữ liệu của một bảng cụ thể.
Cú pháp cơ bản
Bạn có thể sao lưu một bảng cụ thể bằng cách chỉ định tên người dùng, mật khẩu, tên cơ sở dữ liệu và tên bảng như sau:
mysqldump -u tên_người_dùng -p tên_cơ_sở_dữ_liệu tên_bảng > file_xuat.sql
-u
: Chỉ định tên người dùng để truy cập cơ sở dữ liệu-p
: Yêu cầu nhập mật khẩu (sẽ hiển thị khi chạy lệnh)tên_cơ_sở_dữ_liệu
: Tên cơ sở dữ liệu cần xuất dữ liệutên_bảng
: Tên bảng cụ thể cần xuất> file_xuat.sql
: Tên file kết quả
Các tùy chọn thường dùng
--single-transaction
: Giữ tính toàn vẹn giao dịch khi backup bảng InnoDB--skip-lock-tables
: Tránh khóa bảng trong quá trình sao lưu

3. Cách dump một bảng cụ thể
Chỉ định một bảng
Để sao lưu một bảng duy nhất, hãy chỉ định tên bảng ngay sau tên cơ sở dữ liệu. Ví dụ sau sẽ chỉ xuất bảng users
:
mysqldump -u root -p my_database users > users_dump.sql
Lệnh này sẽ lưu cấu trúc và dữ liệu của bảng users
trong cơ sở dữ liệu my_database
vào file users_dump.sql
.
Xuất nhiều bảng cùng lúc
Nếu muốn sao lưu nhiều bảng cùng lúc, hãy liệt kê các tên bảng cách nhau bằng dấu cách:
mysqldump -u root -p my_database users orders products > multiple_tables_dump.sql
Ví dụ trên sẽ dump 3 bảng: users
, orders
, và products
.
Dump bằng danh sách bảng
Khi cần sao lưu nhiều bảng, việc gõ thủ công tất cả tên bảng có thể mất thời gian. Trong trường hợp này, bạn có thể dùng lệnh SHOW TABLES
hoặc script để tạo danh sách bảng tự động.
mysql -u root -p my_database -N -e "SHOW TABLES LIKE 'hoge%'" > table_list.txt
mysqldump -u root -p my_database `cat table_list.txt` > partial_dump.sql
Cách này giúp sao lưu hiệu quả các bảng khớp với mẫu đã chỉ định.
4. Tùy chọn và cách sử dụng nâng cao
Lệnh mysqldump hỗ trợ nhiều tùy chọn, cho phép bạn tùy chỉnh cách sao lưu. Sau đây là một số ví dụ phổ biến.
Dump chỉ cấu trúc
Nếu bạn chỉ cần cấu trúc bảng mà không cần dữ liệu, hãy sử dụng tùy chọn --no-data
:
mysqldump -u root -p my_database --no-data users > users_structure.sql
Dump chỉ dữ liệu
Nếu chỉ cần dữ liệu mà không cần cấu trúc bảng, hãy dùng tùy chọn --no-create-info
:
mysqldump -u root -p my_database --no-create-info users > users_data.sql
Dump dữ liệu theo điều kiện
Với tùy chọn --where
, bạn có thể xuất dữ liệu theo điều kiện cụ thể. Ví dụ sau chỉ xuất dữ liệu có id
lớn hơn 100:
mysqldump -u root -p my_database users --where="id > 100" > users_filtered_dump.sql

5. Ví dụ thực tế
Trường hợp 1: Backup một bảng duy nhất
Nếu bạn muốn sao lưu bảng salary
trong cơ sở dữ liệu employees
, hãy dùng lệnh sau:
mysqldump -u root -p employees salary > salary_dump.sql
Trường hợp 2: Backup dữ liệu theo điều kiện
Ví dụ sau chỉ sao lưu dữ liệu có id
lớn hơn 100 trong bảng users
:
mysqldump -u root -p my_database users --where="id > 100" > users_partial_dump.sql
6. Lưu ý và Best Practices
Vấn đề khóa bảng
Khi dùng mysqldump, bảng có thể bị khóa, gây ảnh hưởng đến các thao tác khác. Với hệ thống đang hoạt động, bạn nên dùng tùy chọn --single-transaction
. Nếu là bảng InnoDB, có thể kết hợp với --skip-lock-tables
để an toàn hơn.
Xử lý dữ liệu lớn
Nếu cơ sở dữ liệu có dung lượng rất lớn, việc dump có thể mất nhiều thời gian. Bạn có thể nén dữ liệu ngay khi dump bằng gzip
để tiết kiệm dung lượng đĩa.
mysqldump -u root -p my_database | gzip > backup_$(date +%Y%m%d).sql.gz

7. Kết luận
Trong bài viết này, chúng tôi đã hướng dẫn cách sử dụng mysqldump để dump các bảng cụ thể trong cơ sở dữ liệu. Từ cách dùng cơ bản, dump theo điều kiện, chỉ dữ liệu hoặc chỉ cấu trúc, đến cách tối ưu với script. Mysqldump là công cụ mạnh mẽ, nếu dùng đúng cách sẽ giúp sao lưu và di chuyển dữ liệu nhanh chóng, an toàn.
Trong bài tiếp theo, chúng tôi sẽ tìm hiểu sâu hơn về các tùy chọn nâng cao của mysqldump và so sánh với các công cụ backup khác.