Vâng có nhiều lúc cơ sở dữ liệu quá lớn thì việc các bạn sử dụng các công cụ viết sẵn đó sẽ tốn nhiều thời gian và sẽ bị lỗi hoặc không làm được
Đến lúc này thì việc chạy bằng dòng lệnh là giải pháp tối ưu [theo mình]. Mình thường xuyên sao lưu và khôi phục những cơ sở dữ liệu lớn đến vài chục GB, và mình thấy nhiều cái chưa có giải pháp tối ưu hơn việc sử dụng lệnh
Sau đây mình hướng dẫn bạn cách sử dụng lệnh để sao lưu và phục hồi cơ sở dữ liệu MySQL
Sao lưu bằng Dòng lệnh [sử dụng mysqldump để sao lưu cơ sở dữ liệu]
Để có thể sử dụng dòng lệnh sao lưu cơ sở dữ liệu, bạn cần phải đăng nhập vào máy chủ thông qua kết nối ssh như Putty
Hoặc nếu bạn sử dụng Ubuntu, thì bạn có thể luôn sử dụng Terminal của ubuntu thông qua lệnh
ssh root@105.257.195.15 -p 22
Sử dụng cấu trúc lệnh như sau để sao lưu cơ sở dữ liệu
$ mysqldump --opt -u [uname] -p [dbname] > [backupfile.sql]
in which
[tên]. người dùng của cơ sở dữ liệu
[tên db]. Tên của cơ sở dữ liệu
[tập tin sao lưu. sql]. Tên tập tin sao lưu muốn lưu
[-opt]. Các tùy chọn mysqldump
Ví dụ. Để sao lưu cơ sở dữ liệu vznvn
$ mysqldump -u root -p vznvn > backup_vzn.sql
Bạn cũng có thể tùy chọn các bảng để sao lưu bằng cách liệt kê các bảng, các bảng cách nhau bằng khoảng trắng [dấu cách]
$ mysqldump -u root -p vznvn bang_a bang_b > backup_vzn.sql
Sao lưu Cơ sở dữ liệu MySQL và đồng thời nén lại
Nếu cơ sở dữ liệu có dung lượng lớn, bạn cần nén lại, khi đó bạn có thể sử dụng cấu trúc lệnh nén cùng gzip
Bài viết này sẽ phân tích cho bạn làm thế nào để sao lưu và khôi phục cơ sở dữ liệu với Mysql hay MariaDB từ dòng lệnh mysqldump
Tệp sao lưu được tạo bởi mysqldump về cơ bản là 1 tệp lệnh mysql có thể được sử dụng để tạo lại bản gốc của cơ sở dữ liệu được sao lưu. Mysqldump cũng có thể tạo các tệp ở định dạng CSV và XML
Bạn cũng có thể sử dụng mysqldump để chuyển cơ sở dữ liệu Mysql của bạn sang một máy chủ Mysql khác
Nếu bạn không sao lưu cơ sở dữ liệu của mình, lỗi phần mềm hoặc lỗi ổ cứng có thể là thảm họa làm hỏng toàn bộ cơ sở dữ liệu và không thể khôi phục chúng được. Để giúp bạn tiết kiệm nhiều thời gian, tôi khuyên bạn nên thường xuyên sao lưu cơ sở dữ liệu của mình
I. Cú pháp mysqldump
Trước khi vào cách sử dụng mysqldump, hãy bắt đầu bằng cách xem lại cú pháp cơ bản
Các biểu thức của mysqldump có dạng như sau
mysqldump [options] > file.sql
- tùy chọn - tùy chọn của mysqldump
- tập tin. sql - file database was backup
To use myqldump, must access mysql server
II. Sao lưu cơ sở dữ liệu đơn giản
Trường hợp sử dụng biến phổ biến nhất của mysqldump là để sao lưu 1 cơ sở dữ liệu
Ví dụ. để tạo ra 1 bản sao lưu của cơ sở dữ liệu có tên là database_name bằng cách sử dụng quyền người dùng là root và lưu tệp của nó có tên là database_name. sql you must run command after
mysqldump -u root -p database_name > database_name.sql
Bạn phải nhập mật khẩu cho người dùng có quyền root tại thông báo. Sau khi xác thực mật khẩu thành công, quá trình sao lưu dữ liệu sẽ bắt đầu. Tùy thuộc vào kích thước cơ sở dữ liệu, quá trình này sẽ mất 1 khoảng thời gian và bạn phải đợi nó chạy xong
Nếu bạn đang đăng nhập với 1 người dùng khác, đồng thời có quyền sao lưu mà không cần mật khẩu, bạn có thể bỏ qua tùy chọn -u và -p
mysqldump database_name > database_name.sql
III. Sao lưu nhiều cơ sở dữ liệu
Để sao lưu nhiều cơ sở dữ liệu bằng 1 lệnh, bạn cần sử dụng tùy chọn --daatabase và theo sau đó là cơ sở dữ liệu bạn muốn sao lưu. Tên của mỗi cơ sở dữ liệu phân cách nhau bởi dấu cách
mysqldump -u root -p --databases database_name_a database_name_b > databases_a_b.sql
Lệnh trên sẽ tạo ra một tệp sao lưu cả cơ sở dữ liệu a và b
IV. Sao lưu tất cả các cơ sở dữ liệu trong máy chủ
Sử dụng tùy chọn --all-databases để sao lưu toàn bộ cơ sở dữ liệu của bạn
________số 8Giống với ví dụ trước, lệnh trên sẽ tạo ra một bản sao lưu duy nhất chứa tất cả các cơ sở dữ liệu có trong máy chủ của bạn
V. Sao lưu tất cả cơ sở dữ liệu vào nhiều tệp
mysqldump không cung cấp tùy chọn sao lưu tất cả cơ sở dữ liệu vào nhiều tệp nhưng bạn có thể dễ dàng thực hiện nó bằng cách sử dụng vòng lặp FOR ở trong bash
for DB in $[mysql -e 'show databases' -s --skip-column-names]; do
mysqldump $DB > "$DB.sql";
done
Lệnh trên sẽ tạo ra các tệp kết xuất khác nhau cho mỗi cơ sở dữ liệu
VI. Tạo 1 bản nén sao lưu cơ sở dữ liệu
Nếu cơ sở dữ liệu kích thước lớn, việc nén lại sẽ là 1 ý tưởng tốt để tạo ra tệp kết xuất. Để làm được điều đó, bạn chỉ cần chuyển đầu ra sang tệp gzip
$ mysqldump --opt -u [uname] -p [dbname] > [backupfile.sql]
0VII. Tạo bản sao lưu với dấu thời gian
Nếu bạn muốn giữ nhiều bản sao lưu trong cùng 1 thư mục, bạn có thể thêm ngày hiện tại để phân biệt ngày sao lưu giữa các tệp
$ mysqldump --opt -u [uname] -p [dbname] > [backupfile.sql]
1Lệnh trên sẽ tạo ra 1 tệp có định dạng như tệp sau. cơ sở dữ liệu_name-20180617. sql
VIII. Khôi phục lại cơ sở dữ liệu đã sao lưu
Bạn có thể khôi phục lại cơ sở dữ liệu bằng cách sử dụng mysql. Cú pháp như sau
$ mysqldump --opt -u [uname] -p [dbname] > [backupfile.sql]
2Trong hầu hết các trường hợp, bạn cần phải tạo cơ sở dữ liệu đã tồn tại, thì công việc trước tiên bạn cần xóa chúng
Trong ví dụ sau, lệnh đầu tiên sẽ tạo ra một cơ sở dữ liệu có tên là database_name và sau đó sẽ nhập tệp sao lưu database_name. sql to it
$ mysqldump --opt -u [uname] -p [dbname] > [backupfile.sql]
3IX. Khôi phục lại 1 cơ sở dữ liệu từ 1 tệp sao lưu tất cả cơ sở dữ liệu
Nếu bạn đã sao lưu tất cả cơ sở dữ liệu của mình bằng tùy chọn --all-databases và bạn muốn khôi phục lại cơ sở dữ liệu duy nhất từ tệp sao lưu, bạn có thể sử dụng tùy chọn --one-database như dưới đây
mysqldump -u root -p database_name > database_name.sql
0X. Xuất hoặc nhập cơ sở dữ liệu bằng 1 dòng lệnh
Thay vì tạo ra 1 tệp kết xuất và chúng nhập tệp đó vào một cơ sở dữ liệu khác, bạn có thể sử dụng cách sau cho nhanh
mysqldump -u root -p database_name > database_name.sql
1Lệnh trên sẽ dẫn đầu đến máy khách mysql ở máy chủ từ xa và sẽ nhập nó vào cơ sở dữ liệu có tên là remote_database_name. Trước khi chạy câu lệnh, bạn cần đảm bảo rằng cơ sở dữ liệu đã tồn tại ở máy chủ từ xa
XI. Sao lưu tự động với cron job
Tự động hóa sao lưu cơ sở dữ liệu cũng đơn giản như một công việc định kỳ, lệnh mysqldump sẽ được chạy trong thời gian bạn chỉ định