- 1 1. Giới thiệu
- 2 2. Ôn lại nhanh: sử dụng cơ bản mysqldump
- 3 3. Sao lưu có điều kiện bằng tùy chọn --where
- 3.1 --where có thể làm gì?
- 3.2 Cú pháp cơ bản
- 3.3 Các ví dụ điều kiện thường gặp
- 3.4 Lưu ý khi sử dụng các điều kiện WHERE
- 3.5 Các trường hợp sử dụng thực tế
- 3.5.1 Trường hợp 1: Trích xuất chỉ các log trong một khoảng thời gian nhất định
- 3.5.2 Trường hợp 2: Di chuyển chỉ người dùng đang hoạt động (đến môi trường mới)
- 3.5.3 Trường hợp 3: Trích xuất chỉ dữ liệu của một người dùng cụ thể để điều tra
- 3.5.4 Trường hợp 4: Tách dump theo phạm vi ID (cho bộ dữ liệu lớn)
- 3.6 Các thực hành tốt nhất (cài đặt được khuyến nghị)
- 4 4. Các điểm quan trọng khi khôi phục
- 5 5. Khắc phục sự cố / các câu hỏi thường gặp
- 5.1 Các lỗi thường gặp và cách khắc phục
- 5.2 Cảnh báo về hiệu năng và vận hành
- 5.3 Câu hỏi thường gặp (FAQ)
- 5.3.1 Câu 1. Điều kiện WHERE có thể được sử dụng trên nhiều bảng không?
- 5.3.2 Câu 2. Có nên dùng LIKE trong điều kiện WHERE không?
- 5.3.3 Câu 3. Tôi có thể sao lưu schema nhưng lọc dữ liệu bằng WHERE không?
- 5.3.4 Câu 4. Tôi gặp lỗi khóa ngoại khi khôi phục dump có điều kiện
- 5.3.5 Câu 5. Cách tiếp cận tốt nhất khi dữ liệu lớn mất quá nhiều thời gian là gì?
- 6 6. Tổng kết
1. Giới thiệu
Nhu cầu trích xuất “chỉ dữ liệu cần thiết” trong các hoạt động sao lưu
Khi chạy MySQL, việc sao lưu định kỳ là rất cần thiết. Tuy nhiên, tùy thuộc vào tình huống, có nhiều trường hợp “bạn không cần phải dump toàn bộ dữ liệu.” Ví dụ:
- Trích xuất chỉ dữ liệu từ một khoảng thời gian cụ thể từ một bảng lớn
- Dump chỉ các bản ghi mà status có giá trị cụ thể
- Loại trừ dữ liệu cũ và di chuyển chỉ các bản ghi đang được sử dụng hiện tại
- Di chuyển chỉ dữ liệu cần thiết đến môi trường thử nghiệm
Trong những tình huống này, tùy chọn --where của mysqldump là cực kỳ hữu ích.
Cách mysqldump liên quan đến các điều kiện WHERE
Thông thường, mysqldump được sử dụng như một cơ chế để “sao lưu tất cả các hàng theo bảng.” Tuy nhiên, với --where, bạn có thể chỉ định các điều kiện giống như một mệnh đề WHERE SQL và tạo file dump chỉ chứa các bản ghi cần thiết.
- Các điều kiện ngày tháng như
created_at >= '2024-01-01' - Các điều kiện trạng thái như
status = 'active' - Các bộ lọc phạm vi như
id BETWEEN 100 AND 200 - Trích xuất với nhiều điều kiện kết hợp bằng AND / OR
Bằng cách này, mysqldump không chỉ là một công cụ sao lưu—nó còn có thể được sử dụng như một công cụ trích xuất dữ liệu linh hoạt.
Lợi ích của các dump có điều kiện
Bằng cách tận dụng --where, bạn có thể nhận được các lợi ích sau:
- Giảm thời gian sao lưu Vì chỉ trích xuất các bản ghi cần thiết, khối lượng công việc sẽ nhẹ hơn.
- Kích thước file dump nhỏ hơn Đặc biệt hiệu quả trong các môi trường có bảng lớn.
- Di chuyển dữ liệu hiệu quả hơn Bạn có thể tải chỉ dữ liệu bạn cần vào môi trường thử nghiệm hoặc staging.
- Lý tưởng cho lưu trữ Cho phép thiết kế linh hoạt như “lưu dữ liệu cũ riêng biệt như một kho lưu trữ.”
Những gì bạn sẽ học trong bài viết này
Bài viết này cung cấp giải thích toàn diện—từ cơ bản mysqldump đến viết dump được lọc WHERE, các mẫu thực tế, lưu ý vận hành và khắc phục sự cố.
- Cú pháp cơ bản mysqldump
- Các ví dụ thực tế về dump được lọc WHERE
- Các mẫu điều kiện cụ thể sử dụng ngày tháng và giá trị trạng thái
- Cách suy nghĩ về hiệu suất trên các bảng lớn
- Các lỗi phổ biến và cách sửa chúng
- Các thực hành tốt nhất kết nối với hoạt động thực tế
Để giữ tính thân thiện với người mới bắt đầu, chúng tôi giải thích cẩn thận các lệnh mẫu và khi nào sử dụng chúng.
2. Ôn lại nhanh: sử dụng cơ bản mysqldump
mysqldump là công cụ sao lưu chính thức của MySQL. Tính năng chính của nó là có thể lưu dữ liệu và cấu trúc bảng dưới dạng file SQL dựa trên văn bản. Trước khi sử dụng các điều kiện WHERE, hãy ôn lại các kiến thức cơ bản bạn nên biết.
Cú pháp cơ bản và các tùy chọn cốt lõi
Cú pháp cơ bản của mysqldump rất đơn giản:
mysqldump -u username -p database_name > dump.sql
Khi bạn chạy lệnh, bạn sẽ được yêu cầu nhập mật khẩu.
Dưới dạng này, tất cả các bảng trong cơ sở dữ liệu sẽ được dump.
Các tùy chọn cốt lõi thường dùng
mysqldump có nhiều tùy chọn, nhưng các tùy chọn sau đặc biệt phổ biến:
--single-transactionSao lưu các bảng InnoDB mà không khóa chúng. An toàn ngay cả trên hệ thống đang hoạt động.--quickXử lý các hàng từng cái một trong khi giữ sử dụng bộ nhớ thấp. Hiệu quả cho các bảng lớn.--default-character-set=utf8mb4Ngăn chặn văn bản bị lỗi bằng cách chỉ định bộ ký tự của file dump.--no-dataDump chỉ cấu trúc bảng (không có dữ liệu).--tablesChỉ định tên bảng để dump chỉ những gì bạn cần.
Bằng cách kết hợp những cái này, bạn có thể tạo bản sao lưu tối ưu cho tình huống của mình.
Cách dump chỉ các bảng cụ thể
Với mysqldump, bạn có thể liệt kê tên bảng sau tên cơ sở dữ liệu để sao lưu chỉ những bảng đó.
mysqldump -u root -p mydb users orders > selected_tables.sql
Trong ví dụ này, chỉ users và orders được dump.
Điều này rất tiện lợi khi bạn muốn nhiều bảng nhưng không cần toàn bộ cơ sở dữ liệu.
Cách dump nhiều cơ sở dữ liệu cùng lúc
Nếu bạn muốn sao lưu nhiều cơ sở dữ liệu cùng lúc, sử dụng --databases hoặc --all-databases.
- Dump nhiều cơ sở dữ liệu được chỉ định
mysqldump -u root -p --databases db1 db2 db3 > multi_db.sql
- Sao lưu toàn bộ cơ sở dữ liệu trên máy chủ
mysqldump -u root -p --all-databases > all.sql
Vì các bản sao lưu có bộ lọc WHERE về cơ bản được sử dụng theo bảng, nên quan trọng là phải hiểu khái niệm “sao lưu cấp bảng” trước tiên.
Quy trình sao lưu và khôi phục cơ bản với mysqldump
Quy trình sao lưu cơ bản sử dụng mysqldump như sau:
- Tạo tệp sao lưu bằng mysqldump
- Tùy chọn nén nó bằng gzip, v.v.
- Lưu trữ nó ở nơi an toàn (máy chủ khác, lưu trữ ngoài, v.v.)
- Khôi phục bằng cách nhập với lệnh mysql
Khôi phục được thực hiện như sau:
mysql -u root -p mydb < dump.sql
Vì mysqldump tạo ra SQL dạng văn bản thuần, nên dễ xử lý và không phụ thuộc vào môi trường cụ thể.
3. Sao lưu có điều kiện bằng tùy chọn --where
Một trong những tùy chọn mạnh mẽ nhất trong mysqldump là --where.
Bạn có thể chỉ định các điều kiện theo cùng cách như trong câu lệnh SELECT WHERE của MySQL, và sao lưu chỉ những hàng bạn cần.
--where có thể làm gì?
Một mysqldump thông thường sao lưu toàn bộ một bảng.
Nhưng với --where, bạn có thể thực hiện “sao lưu kiểu trích xuất” như:
- Trích xuất chỉ dữ liệu mới
- Sao lưu chỉ các hàng có trạng thái đang hoạt động
- Sao lưu chỉ dữ liệu của một người dùng cụ thể
- Trích xuất chỉ các hàng trong một khoảng ID nhất định
- Kết hợp nhiều điều kiện (AND/OR)
Đây là lý do tại sao mysqldump có thể được sử dụng không chỉ như một công cụ sao lưu, mà còn như một
“công cụ di chuyển dữ liệu với bộ lọc trích xuất.”
Cú pháp cơ bản
Dạng cơ bản của --where là:
mysqldump -u root -p mydb mytable --where="condition_expression" > filtered.sql
Biểu thức điều kiện có thể được viết giống như một câu lệnh WHERE chuẩn của SQL.
Các ví dụ điều kiện thường gặp
1. Lọc theo ID
mysqldump -u root -p mydb users --where="id > 1000" > users_over_1000.sql
2. Lọc theo ngày (created_at là 2024 hoặc sau đó)
mysqldump -u root -p mydb logs --where="created_at >= '2024-01-01'" > logs_2024.sql
3. Lọc theo trạng thái (chỉ hoạt động)
mysqldump -u root -p mydb orders --where="status = 'active'" > orders_active.sql
4. Nhiều điều kiện (AND)
mysqldump -u root -p mydb orders \
--where="status = 'active' AND created_at >= '2024-01-01'" \
> orders_active_recent.sql
5. Kết hợp các điều kiện OR
mysqldump -u root -p mydb products \
--where="category = 'A' OR category = 'B'" \
> products_ab.sql
6. Khớp một phần với LIKE
mysqldump -u root -p mydb members --where="email LIKE '%@example.com'" > example_members.sql
Lưu ý khi sử dụng các điều kiện WHERE
1. Sử dụng dấu ngoặc kép so với dấu ngoặc đơn
--where="status = 'active'"
Như đã chỉ ra ở trên,
Bên ngoài → dấu ngoặc kép
Bên trong → dấu ngoặc đơn
là cách tiếp cận tiêu chuẩn.
2. Nó chỉ có thể được sử dụng cho mỗi bảng
--where không thể được sử dụng cho toàn bộ cơ sở dữ liệu.
Bạn phải chỉ định nó cho mỗi bảng.
3. Cẩn thận với định dạng ngày và chuỗi
Nếu định dạng không khớp với định nghĩa cột trong MySQL, các hàng sẽ không được trích xuất.
4. Các điều kiện nặng có thể làm chậm quá trình
Đặc biệt nếu điều kiện WHERE không thể sử dụng chỉ mục, quá trình sao lưu sẽ chậm hơn.
Các trường hợp sử dụng thực tế
Trường hợp 1: Trích xuất chỉ các log trong một khoảng thời gian nhất định
Ví dụ này trích xuất chỉ các log gần đây cần cho hoạt động từ một bảng log lớn.
mysqldump -u root -p app logs \
--where="created_at >= NOW() - INTERVAL 30 DAY" \
> logs_last_30days.sql
Trường hợp 2: Di chuyển chỉ người dùng đang hoạt động (đến môi trường mới)
mysqldump -u root -p service users \
--where="status = 'active'" \
> active_users.sql
Trường hợp 3: Trích xuất chỉ dữ liệu của một người dùng cụ thể để điều tra
mysqldump -u root -p crm payments \
--where="user_id = 42" \
> payments_user_42.sql
Trường hợp 4: Tách dump theo phạm vi ID (cho bộ dữ liệu lớn)
mysqldump -u root -p mydb orders --where="id BETWEEN 1 AND 500000" > part1.sql
mysqldump -u root -p mydb orders --where="id BETWEEN 500001 AND 1000000" > part2.sql
Đây là một phương pháp thực tế thường được sử dụng cho các bảng rất lớn.
Các thực hành tốt nhất (cài đặt được khuyến nghị)
- Kết hợp với
--single-transactionĐối với InnoDB, bạn có thể tránh khóa trong khi duy trì bản sao lưu nhất quán. - Sử dụng
--quickđể giảm việc sử dụng bộ nhớ - Xác nhận các cột dump có chỉ mục Nếu WHERE chậm, thường là do không có chỉ mục.
- Nén bằng gzip để giảm kích thước tệp Ví dụ:
mysqldump ... | gzip > backup.sql.gz - Cẩn thận khi chạy trong giờ làm việc Vì nó có thể gây tải, nên nên thực hiện vào ban đêm hoặc trong cửa sổ bảo trì.
4. Các điểm quan trọng khi khôi phục
Ngay cả khi tệp dump được trích xuất bằng điều kiện WHERE, quy trình khôi phục cơ bản vẫn giống như khôi phục mysqldump thông thường. Tuy nhiên, vì nó chỉ chứa “các bản ghi đã chọn,” có một vài điểm bạn cần lưu ý.
Quy trình khôi phục từ dump có điều kiện
Phương pháp khôi phục tiêu chuẩn nhất là:
mysql -u root -p database_name < dump.sql
Khi bạn chạy lệnh này, các câu lệnh CREATE TABLE và INSERT có trong đầu ra của mysqldump sẽ được áp dụng vào cơ sở dữ liệu nguyên trạng.
Tuy nhiên, đối với các dump đã lọc bằng WHERE, bạn cần chú ý các điểm sau.
Lưu ý khi khôi phục dump đã lọc bằng WHERE
1. Có thể xung đột với dữ liệu hiện có trong bảng gốc
Một dump có điều kiện chỉ trích xuất “một số bản ghi.”
Ví dụ:
- Bảng đích đã có khóa chính (id) giống nhau
- Một INSERT một phần gây ra trùng lặp
Trong những trường hợp như vậy, bạn có thể gặp lỗi như sau khi nhập:
ERROR 1062 (23000): Duplicate entry '1001' for key 'PRIMARY'
→ Các biện pháp khắc phục
- TRUNCATE bảng đích trước nếu cần
- Sửa đổi SQL để bạn có thể sử dụng
INSERT IGNOREhoặcON DUPLICATE KEY UPDATE - Xác nhận rằng bảng đích là “bảng trống” ngay từ đầu
Vì mysqldump tạo các câu lệnh INSERT theo mặc định, bạn phải cẩn thận với các bản ghi trùng lặp.
2. Cẩn thận với ràng buộc khóa ngoại
Một dump có điều kiện không tự động trích xuất tất cả các bảng liên quan cùng nhau.
Ví dụ:
- Chỉ trích xuất bảng users bằng WHERE
- Nhưng bảng orders mà tham chiếu tới user_id không có trong dump
Trong trường hợp này, lỗi khóa ngoại có thể xảy ra khi khôi phục.
→ Các biện pháp khắc phục
- Tạm thời tắt kiểm tra khóa ngoại bằng cách sử dụng
SET FOREIGN_KEY_CHECKS=0; - Nếu cần, dump các bảng liên quan với cùng điều kiện
- Hiểu trước liệu tính toàn vẹn tham chiếu có cần thiết cho trường hợp sử dụng của bạn hay không

3. Cảnh giác với sự khác biệt schema (di chuyển dev sang production)
Nếu cấu trúc bảng khác nhau giữa môi trường phát triển và production, lỗi có thể xảy ra khi khôi phục.
Ví dụ:
- Cột A tồn tại ở môi trường local nhưng đã bị xóa trong production
- Production có NOT NULL, nhưng dữ liệu dump bao gồm NULL
- Thứ tự cột hoặc kiểu dữ liệu khác nhau
→ Các biện pháp khắc phục
- Kiểm tra trước bằng
SHOW CREATE TABLE table_name; - Nếu cần, sử dụng
--no-create-info(loại bỏ schema) và chỉ tải dữ liệu - Đồng nhất schema trước khi dump và khôi phục
Sử dụng nó cho sao lưu vi phân và di chuyển
Các dump đã lọc bằng WHERE rất hiệu quả khi bạn muốn “chỉ di chuyển dữ liệu cần thiết sang môi trường khác.”
1. Di chuyển chỉ phạm vi cần thiết sang môi trường thử nghiệm
- Chỉ các log của 30 ngày gần nhất
- Chỉ người dùng đang hoạt động
- Chỉ giai đoạn bán hàng mà bạn muốn xác thực
Các trích xuất này cũng góp phần đáng kể vào việc giảm kích thước của cơ sở dữ liệu thử nghiệm.
2. Lưu trữ dữ liệu cũ
Nếu cơ sở dữ liệu production đang tăng trưởng, bạn có thể trích xuất chỉ dữ liệu cũ và lưu riêng như sau:
mysqldump -u root -p mydb logs \
--where="created_at < '2023-01-01'" \
> logs_archive_2022.sql
3. Ghi chú về việc hợp nhất
Nếu bạn kết hợp nhiều bản sao có điều kiện và tải chúng vào một bảng duy nhất, bạn cần chú ý kỹ đến khóa chính và tính nhất quán.
Tóm tắt: Các bản sao được lọc bằng WHERE mạnh mẽ, nhưng hãy khôi phục cẩn thận
Tùy chọn WHERE của mysqldump rất tiện lợi, nhưng khi khôi phục bạn nên ghi nhớ các điểm sau:
- Các bản ghi trùng lặp với bảng đích/gốc
- Ràng buộc khóa ngoại
- Không khớp schema
- Các vấn đề tiềm năng về tính nhất quán do lọc dữ liệu
Nói như vậy, nếu bạn thành thạo việc sao lưu có điều kiện, các bản sao lưu hàng ngày, lưu trữ và di chuyển dữ liệu của bạn sẽ trở nên hiệu quả đáng kể.
5. Khắc phục sự cố / các câu hỏi thường gặp
mysqldump trông như một công cụ đơn giản, nhưng khi kết hợp với các điều kiện WHERE, các lỗi không mong muốn có thể xảy ra tùy thuộc vào môi trường chạy, cấu trúc dữ liệu và cài đặt quyền. Phần này giải thích một cách có hệ thống các vấn đề thực tế thường gặp và cách khắc phục chúng.
Các lỗi thường gặp và cách khắc phục
1. Quyền không đủ (Truy cập bị từ chối)
mysqldump: Got error: 1044: Access denied for user ...
Nguyên nhân chính
- Thiếu quyền SELECT
- Có thể cần các quyền bổ sung khi bao gồm trigger hoặc view
- Thất bại khi cố gắng sao lưu cơ sở dữ liệu hệ thống
mysql
Cách khắc phục
- Ít nhất, cấp quyền SELECT trên các bảng mục tiêu
- Nếu có view →
SHOW VIEW - Nếu có trigger →
TRIGGER - Nếu có thể, tạo một người dùng sao lưu riêng
2. Bộ lọc WHERE không áp dụng và mọi dữ liệu đều được sao lưu
Nguyên nhân
- Đặt dấu ngoặc không đúng
- Các ký tự đặc biệt bị shell diễn giải
- Biểu thức không khớp với cột (không khớp định dạng chuỗi/ngày)
Ví dụ (sai thường gặp)
--where=status='active'
Dạng đúng
--where="status = 'active'"
Cách khắc phục
- Sử dụng dấu ngoặc kép ở ngoài và dấu ngoặc đơn ở trong
- Áp dụng tương tự khi dùng LIKE, >, hoặc < (đặt trong dấu ngoặc)
- Kiểm tra định dạng ngày phù hợp với cách lưu trong DB
3. Kích thước sao lưu bất thường lớn / quá trình chậm
Nguyên nhân
- Không có chỉ mục trên cột được dùng trong điều kiện WHERE
- Sử dụng khớp không phải tiền tố như LIKE ‘%keyword’
- Các điều kiện quá phức tạp
- Quét một bảng lớn mà không có chỉ mục
Cách khắc phục
- Xem xét thêm chỉ mục cho các cột được dùng trong WHERE
- Đối với bảng lớn, chia sao lưu thành nhiều lần chạy theo dải ID
- Luôn sử dụng
--quickđể giảm áp lực bộ nhớ - Chạy vào ban đêm hoặc trong giờ ít truy cập
4. Văn bản bị rối (vấn đề mã ký tự)
Nguyên nhân
- Bộ ký tự mặc định khác nhau tùy môi trường
- Bộ ký tự khi sao lưu và khôi phục không khớp
- Trộn lẫn utf8 và utf8mb4
Cách khắc phục
Luôn chỉ định bộ ký tự khi sao lưu:
--default-character-set=utf8mb4
※ Sử dụng cùng cài đặt khi khôi phục giúp ngăn ngừa văn bản bị rối.
5. Không thể nhập do Duplicate entry (trùng khóa chính)
Vì các bản sao có điều kiện chỉ trích xuất “các bản ghi cần thiết,” bạn sẽ gặp lỗi trùng lặp khi:
- Bảng hiện có đã có cùng ID
- Bạn cố gắng hợp nhất các bản sao và xảy ra trùng lặp
Cách khắc phục
- TRUNCATE bảng đích
- Chỉnh sửa SQL nếu cần và đổi thành
INSERT IGNORE - Khi hợp nhất, kiểm tra trùng lặp trước khi tải
Cảnh báo về hiệu năng và vận hành
Chiến lược cơ bản cho bộ dữ liệu lớn
- Chia sao lưu theo dải ID
- Chia thành nhiều tệp theo dải ngày
- Nén bằng
gziphoặcpigznếu cần - Chạy trong giờ tải thấp, như đêm khuya
Về rủi ro khóa
MyISAM khóa các bảng trong quá trình sao lưu.
Đối với InnoDB, khuyến nghị sử dụng tùy chọn sau:
--single-transaction
Điều này giúp bạn trích xuất dữ liệu nhất quán trong khi hầu như tránh được khóa.
Danh sách kiểm tra vận hành
- Xác thực điều kiện WHERE bằng một truy vấn SELECT trước
- Kiểm tra dung lượng đĩa trước khi sao lưu
- Luôn lưu trữ các tệp dump một cách an toàn (mã hoá và/hoặc nén)
- Xác nhận schema của bảng đích khớp
Câu hỏi thường gặp (FAQ)
Câu 1. Điều kiện WHERE có thể được sử dụng trên nhiều bảng không?
Không.
Bộ lọc WHERE của mysqldump hoạt động theo từng bảng.
Bạn không thể sử dụng JOIN.
Câu 2. Có nên dùng LIKE trong điều kiện WHERE không?
Có, bạn có thể. Tuy nhiên, các khớp không phải tiền tố như %keyword không thể sử dụng chỉ mục và sẽ chậm hơn.
Câu 3. Tôi có thể sao lưu schema nhưng lọc dữ liệu bằng WHERE không?
Nếu bạn chỉ cần schema, bạn sẽ dùng --no-data, vì vậy điều kiện WHERE thường không cần thiết.
Câu 4. Tôi gặp lỗi khóa ngoại khi khôi phục dump có điều kiện
Chạy đoạn sau để tạm thời vô hiệu hoá ràng buộc:
SET FOREIGN_KEY_CHECKS=0;
Tuy nhiên, hãy cẩn thận để không phá vỡ tính nhất quán.
Câu 5. Cách tiếp cận tốt nhất khi dữ liệu lớn mất quá nhiều thời gian là gì?
- Kiểm tra xem các cột trong WHERE có được lập chỉ mục không
- Chia thành nhiều dump bằng cách sử dụng các khoảng ID
- Sử dụng
--quick - Đẩy thời gian thực thi sang đêm khuya. Đây là các cách tiếp cận hiệu quả nhất trong thực tế.
6. Tổng kết
mysqldump là một trong những công cụ sao lưu dễ sử dụng nhất trong MySQL, và khi kết hợp với tùy chọn --where, bạn có thể vượt ra ngoài việc sao lưu đơn giản và sử dụng nó như một “công cụ trích xuất dữ liệu linh hoạt.”
Trong các hoạt động thực tế, bạn thường cần trích xuất chỉ một khoảng thời gian nhất định, chỉ một trạng thái cụ thể, hoặc chia dữ liệu lớn thành các phần nhỏ hơn. Trong những tình huống này, --where rất mạnh mẽ và đóng góp đáng kể vào việc quản lý dữ liệu hiệu quả.
Các điểm chính được đề cập trong bài viết này
- Cú pháp mysqldump cơ bản Sao lưu đơn giản có thể thực hiện bằng cách chỉ định tên người dùng và tên cơ sở dữ liệu.
- Dump có điều kiện với
--whereTrích xuất chỉ các bản ghi cần thiết, giống như câu lệnh WHERE trong SQL. - Các ví dụ thực tế về điều kiện Hỗ trợ nhiều mẫu lọc: khoảng ngày, trạng thái, khoảng ID, LIKE và các điều kiện kết hợp.
- Lưu ý khi khôi phục Khi tải dữ liệu một phần, chú ý tới các bản sao trùng và ràng buộc khóa ngoại.
- Các vấn đề thường gặp và biện pháp khắc phục Bao gồm quyền không đủ, WHERE không áp dụng, giảm hiệu năng, vấn đề mã hoá và trùng lặp khóa chính.
Lợi ích của dump có bộ lọc WHERE
- Sao lưu nhanh hơn Không cần sao lưu toàn bộ—việc lọc giảm thời gian xử lý.
- Kích thước tệp nhỏ hơn Đặc biệt hiệu quả với các bảng lớn.
- Dễ dàng di chuyển dữ liệu tới môi trường test/staging Chỉ tải dữ liệu bạn cần.
- Hữu ích cho việc lưu trữ Giúp quản lý dữ liệu cũ thành các tệp riêng biệt dễ dàng hơn.
Những gì nên thử tiếp theo
Khi bạn đã hiểu về dump có bộ lọc WHERE, bạn cũng có thể cân nhắc các bước tiếp theo sau:
- Tự động hoá sao lưu với cron (Linux) bằng cách sử dụng script sao lưu
- Nén tự động kết hợp với gzip hoặc zip
- Sử dụng các công cụ sao lưu vật lý nhanh hơn thay vì mysqldump (như Percona XtraBackup)
- Thiết kế sao lưu cho môi trường quy mô lớn
mysqldump đơn giản, nhưng với hiểu biết và cách sử dụng đúng, nó mở rộng đáng kể các tùy chọn thiết kế sao lưu của bạn.


