1. Giới thiệu
MySQL là một hệ quản trị cơ sở dữ liệu được sử dụng bởi nhiều trang web và ứng dụng. Trong số các công cụ của nó, lệnh “mysqldump” đặc biệt quan trọng khi thực hiện sao lưu hoặc di chuyển cơ sở dữ liệu. Đặc biệt, khi bạn muốn sao lưu chỉ các bảng cụ thể từ một cơ sở dữ liệu lớn, lệnh này trở nên 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 dump các bảng cụ thể bằng lệnh mysqldump. Hướng dẫn được thiết kế để dễ hiểu cho người mới bắt đầu, đồng thời giới thiệu các tùy chọn mức trung cấp và kỹ thuật sử dụng nâng cao.
2. Cú pháp cơ bản của lệnh mysqldump
Trước tiên, hãy ôn lại cách sử dụng cơ bản của lệnh mysqldump. Lệnh này được sử dụng để dump (sao lưu) cấu trúc và dữ liệu của toàn bộ cơ sở dữ liệu hoặc các bảng cụ thể.
Cú pháp cơ bản
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ư được hiển thị bên dưới, bạn có thể sao lưu một bảng cụ thể.
mysqldump -u username -p database_name table_name > output_file.sql
-u: Chỉ định tên người dùng dùng để truy cập cơ sở dữ liệu-p: Chỉ định mật khẩu (bạn sẽ được yêu cầu nhập nó)database_name: Tên của cơ sở dữ liệu cần dumptable_name: Bảng cụ thể cần dump> output_file.sql: Chỉ định tệp đầu ra
Các tùy chọn thường dùng
--single-transaction: Đảm bảo tính nhất quán giao dịch khi sao lưu các bảng InnoDB--skip-lock-tables: Tránh khóa bảng trong quá trình sao lưu

3. Cách dump các bảng cụ thể
Dump một bảng duy nhất
Để sao lưu chỉ một bảng cụ thể, chỉ định tên bảng sau tên cơ sở dữ liệu. Trong ví dụ sau, chỉ bảng users được dump.
mysqldump -u root -p my_database users > users_dump.sql
Lệnh này 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 users_dump.sql.
Dump nhiều bảng
Nếu bạn muốn sao lưu nhiều bảng cùng lúc, chỉ định các tên bảng cách nhau bằng khoảng trắng.
mysqldump -u root -p my_database users orders products > multiple_tables_dump.sql
Trong ví dụ trên, ba bảng users, orders và products được dump đồng thời.
Dump bằng danh sách bảng
Khi dump một số lượng lớn bảng, việc chỉ định thủ công từng tên bảng có thể rườm rà. Trong trường hợp đó, bạn có thể sử dụng lệnh SHOW TABLES hoặc một script để tự động tạo danh sách các bảng cần dump.
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
Phương pháp này cho phép bạn sao lưu hiệu quả chỉ các bảng khớp với mẫu được chỉ định.
4. Các tùy chọn và sử dụng nâng cao
mysqldump cung cấp nhiều tùy chọn cho phép bạn tạo bản sao lưu linh hoạt theo nhu cầu. Dưới đây là một số tùy chọn cho các tình huống cụ thể.
Dump chỉ cấu trúc
Nếu bạn không cần dữ liệu và chỉ muốn sao lưu cấu trúc bảng, sử dụng tùy chọn --no-data.
mysqldump -u root -p my_database --no-data users > users_structure.sql
Lệnh này chỉ dump cấu trúc của bảng users và không bao gồm bất kỳ dữ liệu nào.
Dump chỉ dữ liệu
Ngược lại, nếu bạn muốn dump chỉ dữ liệu bảng, sử dụng tùy chọn --no-create-info.
mysqldump -u root -p my_database --no-create-info users > users_data.sql
Lệnh này loại trừ cấu trúc bảng và chỉ dump dữ liệu.
Dump dữ liệu dựa trên điều kiện cụ thể
Bằng cách sử dụng tùy chọn --where, bạn có thể dump chỉ dữ liệu khớp với các điều kiện cụ thể. Ví dụ, để dump chỉ các hàng mà id lớn hơn 100, sử dụng lệnh sau:
mysqldump -u root -p my_database users --where="id > 100" > users_filtered_dump.sql
Điều này cho phép bạn trích xuất và sao lưu chỉ dữ liệu cần thiết từ một cơ sở dữ liệu lớn.

5. Các ví dụ sử dụng thực tế
Trường hợp sử dụng 1: Sao lưu một bảng duy nhất
Ví dụ, nếu bạn muốn sao lưu chỉ bảng salary trong cơ sở dữ liệu employees, hãy sử dụng lệnh sau:
mysqldump -u root -p employees salary > salary_dump.sql
Trường hợp sử dụng 2: Sao lưu dữ liệu có điều kiện
Để xuất chỉ một phạm vi dữ liệu cụ thể, sử dụng tùy chọn --where. Ví dụ, để sao lưu chỉ các hàng mà id trong bảng users lớn hơn 100:
mysqldump -u root -p my_database users --where="id > 100" > users_partial_dump.sql
6. Lưu ý quan trọng và các thực hành tốt nhất
Vấn đề khóa bảng
Khi sử dụng mysqldump, các bảng có thể bị khóa, ngăn cản các thao tác khác được thực hiện. Điều này có thể đặc biệt gây vấn đề trong các hệ thống sản xuất. Để tránh vấn đề này, nên sử dụng tùy chọn --single-transaction. Đối với các bảng InnoDB, kết hợp nó với tùy chọn --skip-lock-tables sẽ tăng cường độ an toàn hơn.
Xử lý khối lượng dữ liệu lớn
Nếu cơ sở dữ liệu của bạn chứa một lượng dữ liệu rất lớn, quá trình sao lưu có thể mất thời gian dài. Một cách hiệu quả là sử dụng gzip để nén dữ liệu trong thời gian thực.
mysqldump -u root -p my_database | gzip > backup_$(date +%Y%m%d).sql.gz
Lệnh này nén dữ liệu trong quá trình sao lưu, giúp tiết kiệm không gian đĩa.
7. Kết luận
Trong bài viết này, chúng tôi đã giải thích cách xuất các bảng cụ thể bằng lệnh mysqldump. Chúng tôi đã bao phủ mọi thứ từ cách sử dụng lệnh cơ bản đến việc sao lưu có điều kiện, xuất chỉ cấu trúc hoặc chỉ dữ liệu, và thậm chí các kỹ thuật script hiệu quả. mysqldump là một công cụ rất mạnh, và khi được sử dụng đúng cách, nó cho phép bạn thực hiện sao lưu và di chuyển cơ sở dữ liệu một cách mượt mà.
Trong bài viết tiếp theo, chúng tôi sẽ đi sâu hơn vào các tùy chọn mysqldump nâng cao và so sánh nó với các công cụ sao lưu khác.


