Lệnh sao lưu cơ sở dữ liệu MySQL

Ngay bây giờ, mất dữ liệu giống như mất bảo hiểm nhân thọ của bạn. Vì vậy hệ quản trị cơ sở dữ liệu bạn đang sử dụng nên có định hướng dự phòng. Nếu bạn là quản trị viên MySQL hoặc người dùng xử lý dữ liệu ngày càng tăng, bạn nên xem xét triển khai kế hoạch tự động hóa sao lưu thường xuyên hơn. Lý do?

Những trường hợp như vậy có thể dẫn đến vi phạm dữ liệu không thể tha thứ, đặc biệt là khi bạn không có kế hoạch sao lưu cơ sở dữ liệu. Nếu bạn là người dùng hoặc quản trị viên MySQL được đầu tư, bài viết này ở đây để khắc phục những lo lắng về sao lưu cơ sở dữ liệu của bạn. Chúng tôi sẽ đáp ứng hai mục tiêu. Đầu tiên, bạn sẽ hiểu việc triển khai xuất cơ sở dữ liệu thông qua “mysqldump”. Sau đó, cuối cùng, chúng ta sẽ đề cập đến cách sử dụng “crontab” có thể giúp toàn bộ quá trình này dễ dàng hơn thông qua tự động hóa

Chuẩn bị một thư mục sao lưu dữ liệu

Vì Linux không đưa ra đề xuất cho người dùng về đích sao lưu dữ liệu MySQL, nên bạn phải chọn một vị trí sao lưu phù hợp. Ví dụ: trong hướng dẫn hướng dẫn này, chúng tôi sẽ làm việc trong một thư mục sao lưu trong “/var/www_my_backups/”. Chúng tôi chỉ xem xét phương pháp này để hiểu cơ chế sao lưu dữ liệu của MySQL. Tốt nhất, nên sao lưu dữ liệu quan trọng trên máy chủ việt vị.  

Bạn có thể tạo thư mục sao lưu ưa thích trên máy cục bộ của mình thông qua lệnh đầu cuối tương tự như sau

$ sudo mkdir /var/www_my_backups/

Đảm bảo rằng máy sao lưu do Linux vận hành mà bạn đang sử dụng đã cấp cho bạn quyền truy cập root hoặc quyền sudo. Nếu bạn không có quyền truy cập của chủ sở hữu vào thư mục sao lưu đã tạo, bạn sẽ gặp lỗi về quyền khi chạy thử nghiệm mysqldump. Lệnh sau sẽ liệt kê người dùng hệ thống hiện đang hoạt động và thông tin chi tiết nếu bạn có quyền sở hữu trên thư mục sao lưu đã tạo

$ sudo chown $[whoami]:$[whoami] /var/www_my_backups/

Tiện ích máy khách mysqldump

Công cụ MySQL này thực hiện sao lưu logic. Nó dẫn đến một số bộ câu lệnh SQL, giúp tạo lại dữ liệu bảng cơ sở dữ liệu ban đầu và các định nghĩa đối tượng khi được thực thi. Ngoài ra, một hoặc một số kết xuất cơ sở dữ liệu MySQL được sao lưu hoặc chuyển sang máy chủ cơ sở dữ liệu SQL thứ cấp.  

Một lệnh mysqldump tiêu chuẩn được thể hiện bằng cú pháp lệnh sau

$ mysqldump -u [mysql_username] -p[mysql_password] [mysql_database_name] > /path/to/[mysql_dump_file_name].sql
  • -u [mysql_username]. đại diện cho một người dùng đặc quyền của cơ sở dữ liệu MySQL. Người dùng này sẽ có thể thực hiện các hoạt động kết xuất cơ sở dữ liệu
  • -p[mysql_password]. đại diện cho mật khẩu người dùng của cơ sở dữ liệu MySQL. KHÔNG thêm khoảng cách giữa “-p” và “[mysql_password]”
  • [mysql_dump_file_name]. đại diện cho tên của cơ sở dữ liệu MySQL của bạn
  • >. trỏ đến đích của kết xuất đầu ra
  • /path/to/[mysql_dump_file_name]. sql. trỏ đến vị trí đường dẫn của tệp kết xuất được liên kết. Bạn có thể đặt tên tùy chỉnh cho tệp kết xuất này [mysql_dump_file_name] nếu bạn muốn.  

Trước khi chúng tôi tiếp tục với hướng dẫn hướng dẫn này, có một điều đáng nói về “-p[mysql_password]”. Mặc dù hướng dẫn bài viết này sẽ tập trung vào việc liên kết việc sử dụng nó với một số ví dụ về kết xuất MySQL, nhưng bạn nên tránh sử dụng nó trực tiếp khi xử lý các kết xuất sao lưu MySQL thực của mình, đặc biệt là trong mạng dùng chung.  

Một kết xuất đang chạy có thể bị tấn công bằng lệnh hai chiều như “ps ax”, tiết lộ tên người dùng và mật khẩu cơ sở dữ liệu được liên kết. Tuy nhiên, sử dụng vị trí “~/. của tôi. cnf” để lưu trữ mật khẩu cơ sở dữ liệu MySQL của bạn khiến việc sử dụng “-p[mysql_password]” trong lệnh kết xuất đã nêu là không cần thiết. Nếu lệnh kết xuất này đang thực thi thông qua một công việc định kỳ, tùy chọn lệnh “–defaults-extra-file=/path/to/. của tôi. cnf” sẽ trỏ lệnh mysqldump đến vị trí của mật khẩu cơ sở dữ liệu.    

Một số ví dụ sao lưu cơ sở dữ liệu MySQL

Chúng ta hãy xem xét một số tình huống người dùng nơi chúng ta có thể sử dụng lệnh mysqldump để sao lưu dữ liệu cơ sở dữ liệu MySQL.   

Sao lưu tất cả cơ sở dữ liệu

Sử dụng tùy chọn lệnh “–all-databases” trong lệnh mysqldump của bạn sẽ xử lý tất cả các kết xuất cơ sở dữ liệu MySQL trên hệ thống Linux của bạn. Ví dụ: lệnh sau minh họa cách kết xuất tất cả cơ sở dữ liệu MySQL của bạn vào tệp “/var/www_my_backups/” hiện có. Người dùng của hệ thống Linux này phải là người chủ hoặc có đặc quyền sudo.  

Trong trường hợp của chúng tôi và để bạn hiểu, chúng tôi đã đặt tên cho tệp kết xuất của mình là “all-databases. sql, nhưng bạn có thể sử dụng bất kỳ tên nào khác theo sở thích của mình. Vì chúng tôi đang xử lý tất cả các cơ sở dữ liệu, nên việc trở thành người dùng tài khoản MySQL gốc là cần thiết.  

$ mysqldump -u root -p[mysql_password] --all-databases > /var/www_my_backups/all-databases.sql

Sao lưu một cơ sở dữ liệu

Nếu chỉ có một cơ sở dữ liệu MySQL là quan trọng đối với bạn, thì việc tạo bản sao lưu của nó bằng lệnh mysqldump yêu cầu thay thế tùy chọn lệnh “[mysql_database]” bằng tên thực. Tên tệp kết xuất có thể lấy tên của cơ sở dữ liệu này “[mysql_database]. sql” để dễ dàng theo dõi và khôi phục sau này. Bạn cũng có thể sử dụng tên tệp kết xuất tùy chỉnh khác nếu muốn.  

Lệnh ví dụ này được triển khai bằng người dùng root, nhưng bất kỳ người dùng nào khác có quyền truy cập vào cơ sở dữ liệu được nhắm mục tiêu đều là một tùy chọn khả thi.  

$ mysqldump -u root -p[mysql_password] [mysql_database_name] > /var/www_my_backups/[mysql_database_name].sql

Sao lưu nhiều cơ sở dữ liệu

Có thể bạn có lựa chọn cơ sở dữ liệu MySQL cụ thể mà bạn muốn sao lưu. Trong trường hợp này, tùy chọn lệnh “[mysql_database_name]” sẽ xuất hiện nhiều lần và mỗi trường hợp được liên kết với tên của cơ sở dữ liệu bạn muốn sao lưu. Hãy nhớ đặt tên của các cơ sở dữ liệu này trên lệnh mysqldump. Tệp kết xuất “[mysql_database_name]. sql” cũng nên được liên kết với một tên duy nhất mà bạn sẽ nhớ

$ mysqldump -u root -p[mysql_password] [mysql_database_1_name] [mysql_database_2_name] > /var/www_my_backups/[mysql_databases_1_2_names].sql

Sao lưu một bảng duy nhất

Khi thói quen sao lưu của bạn chỉ sau một bảng cơ sở dữ liệu cụ thể, việc tạo bản sao lưu của nó phải có cả tên cơ sở dữ liệu và tên bảng cơ sở dữ liệu dưới dạng các tùy chọn lệnh của lệnh mysqldump. Bạn có thể đặt cho tệp kết xuất của mình cùng tên với bảng cơ sở dữ liệu được nhắm mục tiêu, e. g. [mysql_database_table_name]. sql.      

$ mysqldump -u root -p[mysql_password] [mysql_database_name] [mysql_database_table_name] > /var/www_my_backups/[mysql_databases_table_name].sql

Sao lưu nhiều bảng

Khi bạn muốn sao lưu nhiều bảng cơ sở dữ liệu MySQL cụ thể, việc đề cập đến tất cả các tên bảng cơ sở dữ liệu đã chọn của bạn sẽ xuất hiện sau tên cơ sở dữ liệu lưu trữ các bảng này. Tệp kết xuất được nhắm mục tiêu có thể có tên như [mysql_database_tables_1_2_names]. sql

$ mysqldump -u root -p[mysql_password] [mysql_database_name] [mysql_database_table_1_name] [mysql_database_table_2_name] > /var/www_my_backups/[mysql_databases_tables_1_2_names].sql

Sao lưu [các] cơ sở dữ liệu từ xa

Việc triển khai ví dụ này cũng đơn giản. Lệnh kết xuất cơ sở dữ liệu MySQL sẽ cần bao gồm tùy chọn lệnh “-h” theo sau là tên máy chủ của máy từ xa hoặc địa chỉ IP được liên kết. Sau đó, tất cả các cú pháp lệnh sao lưu cơ sở dữ liệu thông thường khác sẽ tuân theo.  

________số 8

Bạn có thể điều chỉnh lệnh mysqldump này để xử lý các trường hợp sao lưu cơ sở dữ liệu khác đã được thảo luận, e. g. , sao lưu MySQL với nhiều cơ sở dữ liệu hoặc bảng.   

Sao lưu cơ sở dữ liệu liên quan đến nén

Nếu bạn muốn liên kết các bản sao lưu dữ liệu của mình với các bản nén, thì “. tùy chọn lệnh gzip -c >” mysqldump có thể được sử dụng để chuyển đầu ra gzip.  

$ mysqldump -u root -p[mysql_password] [mysql_database_name] | gzip -c > /var/www_my_backups/[mysql_database_name].sql.gz

Nếu cơ sở dữ liệu MySQL của bạn lớn và bạn muốn theo dõi tiến trình nén, hãy luôn xem xét triển khai tùy chọn dài dòng như được mô tả trong ví dụ sau.   

$ sudo chown $[whoami]:$[whoami] /var/www_my_backups/
0

Khôi phục cơ sở dữ liệu MySQL

Khi bạn đã hoàn tất việc sao lưu cơ sở dữ liệu MySQL của mình, tiếp theo là gì? .  

$ sudo chown $[whoami]:$[whoami] /var/www_my_backups/
1

As you might not have noted, the only difference between this database restoration command and the database backup command is that we use the “mysql” option instead of the “mysqldump” option and the “” option.  

Tự động sao lưu MySQL

Hệ điều hành Linux được trang bị một số dịch vụ hữu ích vô giá đối với người quản trị cơ sở dữ liệu như dịch vụ trong MySQL RDBMS. Một trong những dịch vụ này là dịch vụ cron. Nó có hiệu quả trong việc lên lịch các lệnh tự động. Các lệnh này sau khi được tạo sẽ được phân bổ cho bảng crontab cron. Bạn có thể truy cập crontab thông qua lệnh sau.  

$ sudo chown $[whoami]:$[whoami] /var/www_my_backups/
2

Nếu được nhắc, lệnh này có thể muốn liên kết quá trình thực thi của nó với trình soạn thảo văn bản để chọn trình soạn thảo văn bản nano

chọn trình chỉnh sửa crontab

Một tệp có tên như “/tmp/crontab. LVY6A9/crontab” sẽ mở. Ở dưới cùng của tệp crontab này, hãy nhập lịch trình cron khả thi cùng với lệnh kết xuất MySQL hiện hành. Ví dụ minh họa bên dưới thực hiện việc sử dụng nén gzip để sao lưu cơ sở dữ liệu hàng ngày. Đôi khi bạn có thể có lớn. các tệp sql được lên lịch để sao lưu. Sử dụng gzip sẽ giảm các tệp đó xuống kích thước hợp lý trước khi lưu trữ sao lưu. Nó giúp quản lý bộ nhớ sao lưu.     

$ sudo chown $[whoami]:$[whoami] /var/www_my_backups/
3

Tùy chọn lệnh “00 03 ***” có thể được hiểu như sau. Cứ sau 3 giờ sáng cứ sau 24 giờ, lệnh mysqldump theo sau nó được thực thi để sao lưu cơ sở dữ liệu. Tệp sao lưu cơ sở dữ liệu hiện tồn tại trước khi bắt đầu quá trình sao lưu này bị ghi đè. Trong trường hợp của bạn, bạn không cần đợi sau 24 giờ để chứng kiến ​​quá trình tự động sao lưu cơ sở dữ liệu của mình hoạt động thông qua crontab

Bạn có thể chỉnh sửa tùy chọn “00 03 ***” trên tệp crontab thành “02 00 ***” và chỉ trong hai phút, quá trình sao lưu sẽ tự khởi tạo. Ngoài ra, nếu thời gian của bạn là 22. 30, chỉnh sửa tệp bằng “34 22 ***” sẽ khởi tạo quá trình sao lưu cơ sở dữ liệu ở 22. 34. Hãy nhớ lưu [Ctrl + X] tệp crontab này trước khi đóng tệp để lệnh này có thể thực thi được.  

Sau khi số phút bạn đặt trôi qua, công việc định kỳ sẽ được thực thi. Sau đó, liệt kê thư mục sao lưu đã tạo trên thiết bị đầu cuối của bạn và thư mục đã tạo. sql. tệp sao lưu gz phải có mặt.  

$ sudo chown $[whoami]:$[whoami] /var/www_my_backups/
4

Đầu ra kết quả phải tương tự như sau

$ sudo chown $[whoami]:$[whoami] /var/www_my_backups/
5

Nếu bạn gặp vấn đề trong việc phát hiện. sql. gz tệp sao lưu MySQL, đọc lại thời gian crontab của bạn hoặc toàn bộ lệnh. Có thể có lỗi cú pháp hoặc thiếu thứ gì đó. Ngoài ra, nhật ký cron hệ thống có thể chỉ ra nơi có sự cố

$ sudo chown $[whoami]:$[whoami] /var/www_my_backups/
6

Hãy nhớ đặt lại mục crontab về lịch trình cơ sở dữ liệu ưa thích của bạn sau khi bạn xác nhận mọi thứ đang hoạt động bình thường.    

sử dụng của tôi. cnf để lưu mật khẩu cơ sở dữ liệu MySQL

Chúng tôi đã đề cập đến nhược điểm của tùy chọn “-p[mysql_password]” trên lệnh mysqldump, đặc biệt là trong mạng chia sẻ. Chúng ta cần thảo luận về cách thực hiện lưu trữ mật khẩu trong “~/. của tôi. tập tin cnf. Người dùng sử dụng cron để tự động sao lưu cơ sở dữ liệu của họ sẽ cần hiểu cách triển khai “–defaults-extra-file=/path/to/. của tôi. tùy chọn lệnh cnf”.    

chỉnh sửa của tôi. tập tin cnf

Thư mục chính của hệ thống Linux của bạn chứa tệp ẩn này. Đường dẫn hệ thống trực tiếp tới nó là “/home/your_username/. của tôi. cnf”. Sử dụng trình soạn thảo văn bản nano để mở tệp này. Tùy chọn “~” trỏ đến thư mục chính

$ sudo chown $[whoami]:$[whoami] /var/www_my_backups/
7

Chỉnh sửa tệp đang mở này theo cú pháp sau để lưu thành công mật khẩu cơ sở dữ liệu MySQL của bạn. Phần “YOUR_DB_PASS” là mục duy nhất bạn cần thay đổi bằng mật khẩu cơ sở dữ liệu thực tế của mình. Nhập các chi tiết thông tin này ở dưới cùng của tệp và lưu chúng.  

$ sudo chown $[whoami]:$[whoami] /var/www_my_backups/
8

Sử dụng Ctrl + X để lưu tệp này. Cái này của tôi. cnf” cũng cần một số cài đặt quyền. Thực hiện lệnh sau

$ sudo chown $[whoami]:$[whoami] /var/www_my_backups/
9

Bây giờ là lúc để xem việc giải trí lệnh mysqldump mới của chúng tôi với tùy chọn lệnh “-p[mysql_password]” đã bị loại bỏ

$ mysqldump -u [mysql_username] -p[mysql_password] [mysql_database_name] > /path/to/[mysql_dump_file_name].sql
0

Như bạn có thể thấy, chúng tôi đã không thêm bất cứ điều gì. Có vẻ như thứ duy nhất chúng tôi đã xóa là tùy chọn lệnh “-p[mysql_password]”.  

Crontab và –defaults-extra-file

Đối với những người dùng thích sao lưu cơ sở dữ liệu tự động, bạn sẽ cần tìm nạp mật khẩu cơ sở dữ liệu trong “~/. của tôi. cnf” thông qua tùy chọn lệnh “–defaults-extra-file”. Cách tiếp cận này giúp mọi thứ trở nên dễ dàng đối với lệnh mysqldump khi cần tham chiếu tính xác thực của người dùng cơ sở dữ liệu và mật khẩu. Bạn phải cụ thể về đường dẫn đến my. cnf và không chỉ sử dụng ký hiệu “~”. Xem xét việc triển khai sau bên trong tệp crontab

$ mysqldump -u [mysql_username] -p[mysql_password] [mysql_database_name] > /path/to/[mysql_dump_file_name].sql
1

Trong ví dụ này, crontab thực thi mỗi ngày vào lúc 22. 30 giờ để tạo bản nén gzip dự phòng cho cơ sở dữ liệu MySQL.   

lưu ý cuối cùng

Bài viết này đã xem xét các cơ chế sao lưu cơ sở dữ liệu cục bộ về thư mục sao lưu “/var/www_my_backups”. Vì bây giờ bạn đã hiểu quy trình sao lưu diễn ra như thế nào, bạn nên mở rộng quy mô lớn hơn và bắt đầu nghĩ đến việc sao lưu ngoại vi. Tuy nhiên, một cách tiếp cận thực tế hơn là thông qua cấu hình truy cập SFTP trỏ đến thư mục sao lưu “/var/www_my_backups” này

Với cấu hình như vậy, có thể tạo một công việc định kỳ SFTP thông qua một máy chủ từ xa để lấy một bản sao của các tệp cơ sở dữ liệu được lưu trữ cục bộ này để lưu trữ bảo hiểm vào ban đêm và hàng ngày.  

Khi chúng tôi kết thúc hướng dẫn bài viết tuyệt vời này, bạn hiện là bậc thầy đáng tự hào về các tình huống sao lưu cơ sở dữ liệu MySQL, khôi phục sao lưu cơ sở dữ liệu và tự động hóa sao lưu cơ sở dữ liệu. Giờ đây, bạn có thể tự tin và tự tin sử dụng các công việc định kỳ để lên lịch và xử lý tự động sao lưu cơ sở dữ liệu MySQL của mình. Lịch trình tự động hóa không nhất thiết phải là hàng ngày vì chúng cũng có thể là hàng tuần và hàng tháng.       

Lệnh nào được sử dụng để sao lưu dữ liệu MySQL?

Mysqldump là một tiện ích dòng lệnh được sử dụng để tạo bản sao lưu logic của cơ sở dữ liệu MySQL. Nó tạo ra các Câu lệnh SQL có thể được sử dụng để tạo lại các đối tượng và dữ liệu cơ sở dữ liệu. Lệnh này cũng có thể được sử dụng để tạo đầu ra ở định dạng XML, văn bản được phân tách hoặc định dạng CSV.

Làm cách nào để sao lưu bảng cơ sở dữ liệu trong MySQL?

Phương pháp 1 – Sao lưu bảng MySQL Sử dụng INSERT INTO . TẠO BẢNG table_backup; .

Làm cách nào để sao lưu cơ sở dữ liệu MySQL trong dòng lệnh Linux?

Trả lời .
Kết nối với máy chủ qua SSH
Tạo một thư mục nơi các tập tin sao lưu sẽ được lưu trữ. # mkdir /root/mysql_dumps_all
Lấy danh sách tất cả các cơ sở dữ liệu. .
Tạo một bãi chứa của từng cơ sở dữ liệu MySQL. .
Liệt kê tất cả các kết xuất cơ sở dữ liệu

Làm cách nào để sao lưu cơ sở dữ liệu MySQL từ dòng lệnh Ubuntu?

Nó sẽ lo việc đó cho bạn. .
Sao lưu cơ sở dữ liệu MySQL trên Linux/Ubuntu
Sao lưu và khôi phục trang web CodeGuard
Bước 1. Chọn tùy chọn sao lưu của bạn
Bước 2. Lấy thông tin cần thiết để thêm trang web của bạn
Bước 3. Chọn thư mục gốc của bạn
Bước 4. Chọn nội dung để sao lưu
Bước 5. Thêm cơ sở dữ liệu từ cửa sổ hoàn thành

Chủ Đề