Các lệnh backup và restore MySQL Database dành cho DBA
Trong bài này mình sẽ giới thiệu các lệnh dùng để backup và restore MySQL Database dành cho Database Administration, phương pháp này chỉ dành cho những chuyên viên DBA.
Trong Linux, để backup MySQL thì chúng ta sử dụng lệnh mysqldump, còn để restore thì sử dụng lệnh mysqlimport. Đây là hai lệnh sử dụng rất nhiều trong việc quản lý MySQL.
I. Cách backup MySQL Database
mysqldump là một ứng dụng command line, nó được sử dụng để tạo ra file backup database ở local hoặc thông qua remote, kết quả của lệnh này là sẽ trả về một file db ở dạng SQL duy nhất.
Để backup với lệnh mysqldump thì điều kiện là database cần backup phải tồn tại trên server, và tài khoản bạn đang đăng nhập vào có quyền truy xuất vào database đó. Tất cả thông tin sẽ được nhập vào lệnh mysqldump qua cú pháp sau.
Bài viết này được đăng tại [free tuts .net]
# mysqldump -u [username] –p[password] [database_name] > [dump_file.sql]
Trong đó:
- [username] là tên đăng nhập vào MySQL có quyền truy xuất đến database
- [password] là mật khẩu của username
- [database_name] là tên của database cần backup
- [dump_file.sql] là tên file backup được lưu lại. Bạn sẽ tải file này về máy tính của mình để sau này phục hồi lại.
1. Backup một database duy nhất
Để backup một database thì ta sử dụng cú pháp sau.
# mysqldump -u root -ptecmint rsyslog > rsyslog.sql
Trong lệnh này thì database cần backup là rsyslog, và file sau khi backup là rsyslog.sql.
2. Backup nhiều database cùng lúc
Nếu muốn backup nhiều database vào một file duy nhất thì bạn hãy nhập tên database cách nhau bởi khoảng trắng.
# mysqldump -u root -ptecmint --databases rsyslog syslog > rsyslog_syslog.sql
Như bnạ thấy, mình đã backup 2 database tên là rsyslog và syslog.
3. Backup tất cả database của user
Nếu bạn muốn backup tất cả database của một user thì sử dụng cú pháp sau.
# mysqldump -u root -ptecmint --all-databases > all-databases.sql
Tham số --all-databases sẽ cho biết bạn muốn backup mọi database của user ptecmint.
4. Chỉ backup database structure table
Nếu bạn chỉ muốn backup lại cấu trúc các table trong database thì sử dụng tham số -–no-data.
# mysqldump -u root -ptecmint -–no-data rsyslog > rsyslog_structure.sql
5. Chỉ backup dữ liệu, không backup cấu trúc db
Nếu bạn muốn chỉ backup dữ liệu mà khong muốn backup cấu trúc của các table thì sử dụng hai tham số, đó là --no-create-db
và --no-create-info
.
# mysqldump -u root -ptecmint --no-create-db --no-create-info rsyslog > rsyslog_data.sql
6. Backup một table trong một database
Nếu chỉ muốn backup một table thôi thì hãy cung cấp tên database và tên table.
# mysqldump -u root -ptecmint wordpress wp_posts > wordpress_posts.sql
Trong đó wordpress là tên database, còn wp_posts là tên table.
7. Backup nhiều table trong một database
Rất đơn giản, trường hợp này thì ta chỉ cần thêm danh sách table cần backup và cách nhau bởi khoảng trắng là được.
# mysqldump -u root -ptecmint wordpress wp_posts wp_comments > wordpress_posts_comments.sql
Mình đã backup 2 table tên là wp_posts và wp_comments.
8. Backup thông qua remote đến server của database
Trường hợp này bạn phải cung cấp địa chỉ IP của server chứa database.
# mysqldump -h 172.16.25.126 -u root -ptecmint gallery > gallery.sql
Lưu ý là tài khoản và mật khẩu mà bạn cung cấp phải chuẩn xác nhé.
II. Cách restore MySQL Database
Ở phần I mình đã hướng dẫn xong các backup và kết quả là nó sẽ tạo ra một file .sql
. Bây giờ muốn restore nó thì cực kì đơn giản, bạn có thể sử dụng PHP MyAdmin hoặc một công cụ quản lý DB nào đó cũng được. Tuy nhiên trong bài này mình sẽ hướng dẫn sử dụng lệnh mysqlimport và mysql để phục hồi.
Đây là cú pháp sử dụng lệnh mysql.
# mysql -u [username] –p[password] [database_name] < [dump_file.sql]
Đầu tiên bạn phải chắc chắn rằng đã có một database trống nhé, nếu chưa có thì hãy tạo nó trước. Như ví dụ này mình đã có một database tên là rsyslog nên sẽ chạy lệnh sau để restore.
# mysql -u root -ptecmint rsyslog < rsyslog.sql
Trường hợp database của bạn đã tồn tại trên server và nó không rỗng thì có thể sử dụng lệnh mysqlimport.
# mysqlimport -u root -ptecmint rsyslog < rsyslog.sql
Tùy vào từng trường hợp mà bạn chọn giải pháp cho riêng mình nhé.
Trên là cách backup và restore MySQL Database bằng cách sử dụng thư viẹn mysqldum trong Linux. Chúc bạn thực hiện thành công.