MySQL vàMariaDB bao gồm tiện ích themysqldump để đơn giản hóa quá trình tạo bản sao lưu cơ sở dữ liệu hoặc hệ thống cơ sở dữ liệu. Sử dụng mysqldump
tạo một bản sao lưu hợp lý . Bạn chỉ có thể sử dụng công cụ này nếu quy trình cơ sở dữ liệu của bạn có thể truy cập và đang chạy.
Nếu cơ sở dữ liệu của bạn không thể truy cập được vì bất kỳ lý do gì, thay vào đó, bạn có thể tạo một bản sao lưu vật lý , là bản sao của cấu trúc hệ thống tệp chứa dữ liệu của bạn.
Các hướng dẫn trong hướng dẫn này áp dụng cho cả MySQL và MariaDB. Để đơn giản hóa, tên MySQL sẽ được sử dụng để áp dụng cho cả hai.
Trước khi bạn bắt đầu
-
Bạn sẽ cần cài đặt MySQL hoặc MariaDB đang hoạt động và người dùng cơ sở dữ liệu để chạy sao lưu. Để được trợ giúp cài đặt, hãy xem tài liệu Linode MySQL.
-
Bạn sẽ cần quyền truy cập root vào hệ thống hoặc tài khoản người dùng có
sudo
đặc quyền.
Sao lưu cơ sở dữ liệu
mysqldump
cú pháp chung của lệnh là:
mysqldump -u [username] -p [databaseName] > [filename]-$(date +%F).sql
-
mysqldump
nhắc nhập mật khẩu trước khi bắt đầu quá trình sao lưu. - Tùy thuộc vào kích thước của cơ sở dữ liệu, có thể mất một lúc để hoàn thành.
- Bản sao lưu cơ sở dữ liệu sẽ được tạo trong thư mục lệnh được chạy.
-
-$(date +%F)
thêm dấu thời gian vào tên tệp.
Các trường hợp sử dụng ví dụ bao gồm:
-
Tạo bản sao lưu của toàn bộ Hệ thống quản lý cơ sở dữ liệu (DBMS):
mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql -u root -p
-
Sao lưu một cơ sở dữ liệu cụ thể. Thay thế
db1
với tên của cơ sở dữ liệu bạn muốn sao lưu:mysqldump -u username -p db1 --single-transaction --quick --lock-tables=false > db1-backup-$(date +%F).sql
-
Sao lưu một bảng từ bất kỳ cơ sở dữ liệu nào. Trong ví dụ dưới đây,
table1
được xuất từ cơ sở dữ liệudb1
:mysqldump -u username -p --single-transaction --quick --lock-tables=false db1 table1 > db1-table1-$(date +%F).sql
Đây là bảng phân tích về mysqldump
các tùy chọn lệnh được sử dụng ở trên:
-
--single-transaction
:Đưa ra câu lệnh BEGIN SQL trước khi kết xuất dữ liệu từ máy chủ. -
--quick
:Thực thi các bảng kết xuất từng hàng. Điều này mang lại sự an toàn hơn cho các hệ thống có ít RAM và / hoặc cơ sở dữ liệu lớn, nơi việc lưu trữ các bảng trong bộ nhớ có thể trở thành vấn đề. -
--lock-tables=false
:Không khóa bảng cho phiên sao lưu.
Tự động hóa sao lưu với cron
Các mục nhập có thể được thêm vào /etc/crontab
thường xuyên lên lịch sao lưu cơ sở dữ liệu.
-
Tạo một tệp để giữ thông tin đăng nhập của người dùng gốc MySQL sẽ thực hiện sao lưu. Lưu ý rằng người dùng hệ thống có thư mục chính mà tệp này được lưu trữ trong có thể không liên quan đến bất kỳ người dùng MySQL nào.
- Tệp:/ home / example_user / .mylogin.cnf
-
1 2 3
[client] user = root password = MySQL root user's password
-
Hạn chế quyền đối với tệp thông tin xác thực:
chmod 600 /home/example_user/.mylogin.cnf
-
Tạo tệp công việc cron. Dưới đây là ví dụ cron job sao lưu toàn bộ hệ quản trị cơ sở dữ liệu hàng ngày vào lúc 1 giờ sáng:
- Tệp:/ etc / cron.daily / mysqldump
-
1
0 1 * * * /usr/bin/mysqldump --defaults-extra-file=/home/example_user/.my.cnf -u root --single-transaction --quick --lock-tables=false --all-databases > full-backup-$(date +\%F).sql
Để biết thêm thông tin về cron, hãy xem các trang hướng dẫn sử dụng thecron (8) vàcron (5).
Khôi phục bản sao lưu
Cú pháp chung của lệnh khôi phục là:
mysql -u [username] -p [databaseName] < [filename].sql
-
Khôi phục toàn bộ bản sao lưu DBMS. Bạn sẽ được nhắc nhập mật khẩu của người dùng gốc MySQL:
Điều này sẽ ghi đè tất cả dữ liệu hiện tại trong hệ thống cơ sở dữ liệu MySQLmysql -u root -p < full-backup.sql
-
Khôi phục một kết xuất cơ sở dữ liệu duy nhất. Cơ sở dữ liệu đích trống hoặc cũ phải tồn tại để nhập dữ liệu vào và người dùng MySQL mà bạn đang chạy lệnh phải có quyền ghi vào cơ sở dữ liệu đó:
mysql -u [username] -p db1 < db1-backup.sql
-
Khôi phục một bảng duy nhất, bạn phải có cơ sở dữ liệu đích sẵn sàng để nhận dữ liệu:
mysql -u dbadmin -p db1 < db1-table1.sql
Thông tin khác
Bạn có thể muốn tham khảo các nguồn sau đây để biết thêm thông tin về chủ đề này. Mặc dù những điều này được cung cấp với hy vọng rằng chúng sẽ hữu ích, xin lưu ý rằng chúng tôi không thể đảm bảo tính chính xác hoặc kịp thời của các tài liệu được lưu trữ bên ngoài.
- Trang Phương pháp sao lưu cơ sở dữ liệu MySQL
- mysqldump - Một Chương trình Sao lưu Cơ sở dữ liệu, Hướng dẫn Tham khảo MySQL