Một số tùy chọn để tạo bản sao lưu MySQL là gì?

Một hệ thống sao lưu đáng tin cậy là một trong những tính năng quan trọng nhất của bất kỳ giải pháp lưu trữ nào. Điều quan trọng là chúng tôi có toàn bộ chương Sao lưu từ xa tự động trong hướng dẫn Cài đặt WordPress trên Ubuntu và xây dựng các bản sao lưu tự động với bộ nhớ ngoại vi trực tiếp vào SpinupWP

Tôi là một fan hâm mộ lớn của giải pháp sao lưu SpinupWP. Đối với phần lớn các trang web, đó là sự kết hợp hoàn hảo giữa sao lưu toàn bộ trang thông thường, di chuyển các bản sao lưu ra bên ngoài và dọn dẹp các bản sao lưu cũ

Tuy nhiên, có một số trường hợp loại giải pháp sao lưu này không lý tưởng. Các trang web xử lý số lượng lớn giao dịch mỗi giờ có thể cần xem xét giải pháp sao lưu gia tăng, trong đó mỗi giao dịch cơ sở dữ liệu được ghi lại và sao lưu

Trong bài viết này, tôi sẽ giới thiệu cho bạn sự khác biệt giữa sao lưu toàn bộ và sao lưu gia tăng, cách bạn triển khai sao lưu gia tăng theo cách thủ công trên máy chủ của mình và cách bạn có thể tự động hóa quy trình bằng dịch vụ có tên SqlBak

Sự cố với Ảnh chụp nhanh   Sao lưu

Hầu hết các giải pháp sao lưu cơ sở dữ liệu đều chụp “ảnh chụp nhanh” của cơ sở dữ liệu, một bản sao đầy đủ cấu trúc và dữ liệu tại thời điểm sao lưu. Các bản sao lưu này phù hợp với các trang web có cơ sở dữ liệu nhỏ không thay đổi thường xuyên. Các trang web có cơ sở dữ liệu lớn hơn, tích cực hơn cần một giải pháp tốt hơn

Cửa hàng thương mại điện tử là một ví dụ về loại cơ sở dữ liệu này, với kích thước của dữ liệu sản phẩm, khách hàng và đơn đặt hàng luôn tăng lên. Và khi số lượng khách hàng tích cực đặt hàng trên trang web tăng lên, thì tốc độ đọc và ghi dữ liệu vào cơ sở dữ liệu cũng tăng theo.

Nếu bạn có một cơ sở dữ liệu lớn, nó sẽ ảnh hưởng đến hiệu suất của máy chủ mỗi khi bạn phải chạy sao lưu. Dù bạn sử dụng giải pháp nào, nó sẽ phải chạy một số quy trình trên máy chủ để sao lưu dữ liệu. Khi dữ liệu tăng lên, các tài nguyên cần thiết để hoàn tất quá trình sao lưu sẽ tăng lên và sẽ có ít tài nguyên hơn cho phần còn lại của chức năng trang web của bạn. Cuối cùng, bạn rơi vào tình huống phải chạy các bản sao lưu khi máy chủ không bận, có thể một lần một ngày vào lúc 5 giờ sáng

Điều này lại dẫn đến vấn đề thứ hai. nguy cơ mất dữ liệu lớn hơn. Sao lưu dữ liệu mỗi ngày một lần có nghĩa là nếu bất kỳ dữ liệu mới nào giữa các lần sao lưu bị mất thì dữ liệu đó sẽ biến mất vĩnh viễn

Tôi đã thực sự trải nghiệm điều này trong môi trường sản xuất. Nó không dễ chịu

Trong công việc lập trình đầu tiên của mình, tôi phụ trách cập nhật phần mềm ứng dụng của khách hàng trên mạng Windows cục bộ của họ. Khách hàng là một xưởng sửa chữa ô tô và phần mềm ứng dụng đã quản lý kho hàng và hệ thống điểm bán hàng của họ. Người chủ tạo sao lưu thường xuyên vào mỗi buổi tối sau khi cửa hàng đóng cửa. Thật không may, lần duy nhất tôi có thể cập nhật phần mềm là vào khoảng giữa trưa, khi họ nghỉ trưa. Đã xảy ra sự cố và họ đã mất toàn bộ giao dịch trong buổi sáng

Những loại thất bại này không phổ biến, nhưng chúng xảy ra. Trong trường hợp của tôi, đó là một lỗi từ phía tôi. Trên một máy chủ web, nó có thể là bất cứ thứ gì từ lỗi phần cứng đến vi phạm bảo mật. Khi trang web của bạn cũng là cửa hàng thương mại điện tử của bạn và do đó rất quan trọng đối với việc tạo thu nhập của bạn, bạn cần biết rằng bạn có thể phục hồi sau mọi thất bại có thể xảy ra

Giới thiệu tính năng sao lưu gia tăng   Sao lưu

Sao lưu gia tăng—còn được gọi là sao lưu vi sai—chỉ bao gồm các thay đổi cơ sở dữ liệu kể từ lần chụp nhanh cuối cùng. Trong ví dụ của tôi về cửa hàng ô tô, các bản sao lưu gia tăng có thể đã tiết kiệm thời gian. Chúng tôi có thể đã khôi phục từ bản sao lưu được thực hiện vào đêm hôm trước, áp dụng tất cả các bản sao lưu gia tăng từ sáng hôm đó và khôi phục tất cả dữ liệu

Vì sao lưu gia tăng nhỏ, chúng có thể được thực hiện thường xuyên hơn mà không ảnh hưởng đến tài nguyên máy chủ. Nguyên tắc chung là chạy một bản sao lưu đầy đủ mỗi ngày, sao chép bản sao lưu đó vào bộ lưu trữ ngoại vi sau khi hoàn tất. Bạn có thể làm điều này một lần mỗi tuần hoặc thậm chí một lần mỗi tháng nếu trang web của bạn không quá bận rộn. Sau đó, ghi lại mọi giao dịch cơ sở dữ liệu kể từ lần sao lưu cuối cùng vào nhật ký và lưu trữ các nhật ký này ở vị trí ngoại vi theo các khoảng thời gian đã đặt

Sao lưu gia tăng và   MySQL

Trong chương Sao lưu từ xa tự động của hướng dẫn Cài đặt WordPress trên Ubuntu, chúng tôi đã sử dụng tiện ích

root@hellfish:~$ find / -type f -name mysql.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
/etc/mysql/mysql.cnf
/etc/mysql/conf.d/mysql.cnf
/etc/mysql/conf.d/mysqldump.cnf
9 để sao lưu cơ sở dữ liệu vào một tệp, được gọi là “tệp kết xuất. ” Tiện ích này cho phép bạn tạo các bản sao lưu đầy đủ cho cơ sở dữ liệu MySQL của mình với các tùy chọn bao gồm hoặc loại trừ các bảng, dữ liệu và cấu trúc. Những gì nó không cung cấp là sao lưu gia tăng

MySQL Enterprise cung cấp các bản sao lưu gia tăng trong số nhiều tính năng của nó, nhưng nó đi kèm với một mức giá đáng kể. May mắn thay, có một cách để tạo các bản sao lưu gia tăng trong phiên bản MySQL miễn phí

Trước tiên, bạn cần kích hoạt nhật ký nhị phân MySQL. Đây là nhật ký của tất cả các thay đổi cơ sở dữ liệu đã xảy ra trên máy chủ MySQL, được gọi là “sự kiện. ” Nhật ký nhị phân bị tắt theo mặc định, nhưng bạn có thể kích hoạt nó bằng cách cập nhật đúng tệp cấu hình MySQL

Với mục đích của bài viết này, tôi đang sử dụng máy chủ

nano /etc/mysql/mysql.conf.d/mysqld.cnf
0 của chúng tôi, chạy Ubuntu 20. 04, MySQL8. 0. 23 và được thiết lập bởi SpinupWP. Tôi đang đăng nhập với tư cách người dùng sudo bằng xác thực khóa công khai SSH, nhưng tôi đang chuyển sang người dùng root để chạy tất cả các lệnh này. Tôi sẽ làm việc với các tệp khác nhau thuộc sở hữu của những người dùng khác nhau, vì vậy việc thực hiện mọi thứ với tư cách là người dùng root sẽ dễ dàng hơn

sudo -i

MySQL có hai bộ tệp cấu hình, một cho máy khách và một cho máy chủ. Để bật nhật ký nhị phân, bạn cần chỉnh sửa cấu hình máy chủ của mình. Vị trí của tệp cấu hình có liên quan tùy thuộc vào hệ điều hành của bạn. Nếu bạn không chắc vị trí của tệp, bạn có thể sử dụng lệnh

nano /etc/mysql/mysql.conf.d/mysqld.cnf
1, lệnh này sẽ xuất ra danh sách các tệp cấu hình MySQL có thể có

find / -type f -name mysql*.cnf
root@hellfish:~$ find / -type f -name mysql.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
/etc/mysql/mysql.cnf
/etc/mysql/conf.d/mysql.cnf
/etc/mysql/conf.d/mysqldump.cnf

Bạn có thể chỉnh sửa bất kỳ tệp nào bằng

nano /etc/mysql/mysql.conf.d/mysqld.cnf
2

nano /etc/mysql/mysql.conf.d/mysqld.cnf

File đúng thường sẽ có tên là

nano /etc/mysql/mysql.conf.d/mysqld.cnf
3 và có phần
nano /etc/mysql/mysql.conf.d/mysqld.cnf
4, chính là cấu hình cho MySQL server

Nếu bạn đang sử dụng MariaDB thay cho MySQL, cấu trúc tệp cấu hình sẽ tương tự, nhưng có những điểm khác biệt. Bắt đầu bằng cách xem thư mục

nano /etc/mysql/mysql.conf.d/mysqld.cnf
5 và xem cách các tệp cấu hình khác nhau được tải từ đó. Trên Ubuntu 20 mặc định. 04 cài đặt, đúng file là
nano /etc/mysql/mysql.conf.d/mysqld.cnf
6

Trong trường hợp của tôi, tệp được đặt tại

nano /etc/mysql/mysql.conf.d/mysqld.cnf
7 và có dạng như sau

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log
default_authentication_plugin = mysql_native_password

Sau khi bạn tìm đúng tệp, hãy bỏ ghi chú hoặc thêm các cài đặt sau vào phần

nano /etc/mysql/mysql.conf.d/mysqld.cnf
4 để các giá trị khớp với cài đặt bên dưới

server-id        = 1
expire_logs_days = 10
binlog_format    = row
log_bin          = /var/log/mysql/mysql-bin

Nhấn Ctrl + X, Y, rồi Enter để lưu tệp. Bây giờ khởi động lại máy chủ MySQL

service mysql restart

Để kiểm tra xem các cài đặt đã được áp dụng hay chưa, hãy đăng nhập vào máy chủ MySQL của bạn với người dùng root và chạy các lệnh MySQL sau

show binary logs;
show variables like 'server_id';
show variables like 'expire_logs_days';
show variables like 'binlog_format';

Đây là những gì đầu ra sẽ trông như thế nào

root@hellfish:~$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.23 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show binary logs;
+------------------+-----------+-----------+
| Log_name         | File_size | Encrypted |
+------------------+-----------+-----------+
| mysql-bin.000001 |       156 | No        |
+------------------+-----------+-----------+
1 row in set (0.01 sec)

mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 1     |
+---------------+-------+
1 row in set (0.01 sec)

mysql> show variables like 'expire_logs_days';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| expire_logs_days | 10    |
+------------------+-------+
1 row in set (0.00 sec)

mysql> show variables like 'binlog_format';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
1 row in set (0.01 sec)

mysql>

Nhật ký nhị phân được tạo trong thư mục

nano /etc/mysql/mysql.conf.d/mysqld.cnf
9 và có tiền tố
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log
default_authentication_plugin = mysql_native_password
0. Bạn có thể sử dụng
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log
default_authentication_plugin = mysql_native_password
1 hoặc
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log
default_authentication_plugin = mysql_native_password
2 để xem các tệp nhật ký

root@hellfish:/var/log/mysql# ls -lah
total 64K
drwxr-x---  2 mysql adm    4.0K Jan 26 08:29 .
drwxrwxr-x 13 root  syslog 4.0K Jan 26 07:58 ..
-rw-r-----  1 mysql adm     43K Jan 26 08:29 error.log
-rw-r-----  1 mysql mysql   156 Jan 26 08:29 mysql-bin.000001
-rw-r-----  1 mysql mysql    32 Jan 26 08:29 mysql-bin.index

Tạo bản sao lưu đầy đủ đầu tiên của bạn   Bản sao lưu

Bây giờ bạn đã bật nhật ký nhị phân, trước tiên bạn cần tạo ảnh chụp nhanh. Như chúng tôi đã đề cập trước đó, sao lưu gia tăng chỉ lưu các thay đổi kể từ lần sao lưu đầy đủ cuối cùng, vì vậy chúng tôi cần một điểm để bắt đầu từ

Tôi đã tạo một thư mục

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log
default_authentication_plugin = mysql_native_password
3 để lưu trữ mọi bản sao lưu được tạo trong bài viết này. Sử dụng
root@hellfish:~$ find / -type f -name mysql.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
/etc/mysql/mysql.cnf
/etc/mysql/conf.d/mysql.cnf
/etc/mysql/conf.d/mysqldump.cnf
9 Tôi sẽ tạo tệp sao lưu đầy đủ đầu tiên

find / -type f -name mysql*.cnf
0

Tôi đang tạo tệp sao lưu bằng cách sử dụng cùng một chuỗi định dạng ngày tháng mà chúng tôi đã sử dụng trong tệp , vì vậy tôi sẽ biết khi nào quá trình hoàn tất

Điều quan trọng là phải hiểu lệnh này đang làm gì

  1. Tùy chọn
    [mysqld]
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    datadir         = /var/lib/mysql
    log-error       = /var/log/mysql/error.log
    default_authentication_plugin = mysql_native_password
    
    5 xóa các tệp nhật ký máy chủ MySQL và bắt đầu ghi tệp nhật ký nhị phân mới
  2. Tùy chọn
    [mysqld]
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    datadir         = /var/lib/mysql
    log-error       = /var/log/mysql/error.log
    default_authentication_plugin = mysql_native_password
    
    6 xóa mọi tệp nhật ký nhị phân cũ. Nếu bạn đang sử dụng phiên bản MySQL sau 8. 0. 26, bạn nên sử dụng
    [mysqld]
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    datadir         = /var/lib/mysql
    log-error       = /var/log/mysql/error.log
    default_authentication_plugin = mysql_native_password
    
    7 để thay thế, vì
    [mysqld]
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    datadir         = /var/lib/mysql
    log-error       = /var/log/mysql/error.log
    default_authentication_plugin = mysql_native_password
    
    6 không được dùng trong MySQL 8. 0. 26
  3. Tùy chọn
    [mysqld]
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    datadir         = /var/lib/mysql
    log-error       = /var/log/mysql/error.log
    default_authentication_plugin = mysql_native_password
    
    9 là cần thiết nếu bạn có các bảng sử dụng công cụ lưu trữ InnoDB
  4. Tùy chọn
    server-id        = 1
    expire_logs_days = 10
    binlog_format    = row
    log_bin          = /var/log/mysql/mysql-bin
    
    0 cho biết lệnh kết xuất tất cả cơ sở dữ liệu

Bạn có thể thắc mắc tại sao chúng tôi sao lưu tất cả cơ sở dữ liệu chứ không phải một cơ sở dữ liệu duy nhất. Tôi sẽ giải thích điều này khi chúng ta đến phần trên

Nếu bạn xem thư mục nhật ký MySQL sau khi tạo bản sao lưu đầy đủ đầu tiên, bạn sẽ thấy rằng nhật ký nhị phân đã thay đổi

find / -type f -name mysql*.cnf
1

Nhật ký nhị phân hiện tại đã thay đổi từ

server-id        = 1
expire_logs_days = 10
binlog_format    = row
log_bin          = /var/log/mysql/mysql-bin
1 thành
server-id        = 1
expire_logs_days = 10
binlog_format    = row
log_bin          = /var/log/mysql/mysql-bin
2, sau sự kiện
root@hellfish:~$ find / -type f -name mysql.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
/etc/mysql/mysql.cnf
/etc/mysql/conf.d/mysql.cnf
/etc/mysql/conf.d/mysqldump.cnf
9 với
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log
default_authentication_plugin = mysql_native_password
5

Xem nhật ký nhị phân   Thay đổi

Bây giờ có thể là thời điểm tốt để xem những gì bên trong tệp nhật ký nhị phân. Bạn có thể làm điều này bằng cách sử dụng tiện ích

server-id        = 1
expire_logs_days = 10
binlog_format    = row
log_bin          = /var/log/mysql/mysql-bin
5

find / -type f -name mysql*.cnf
2

Bạn sẽ thấy nhật ký của tất cả các sự kiện đã diễn ra trên máy chủ MySQL

find / -type f -name mysql*.cnf
3

Có một nhược điểm đối với nhật ký nhị phân. Chúng bao gồm tất cả các sự kiện MySQL, trên tất cả các cơ sở dữ liệu trên máy chủ MySQL. Đây là lý do chúng tôi đã tạo một bản sao lưu đầy đủ của tất cả các cơ sở dữ liệu trong bước trước đó. Nếu bạn muốn khôi phục một cơ sở dữ liệu từ nhật ký nhị phân, bạn cần giới hạn đầu ra để chỉ hiển thị các sự kiện liên quan đến một cơ sở dữ liệu cụ thể. May mắn thay, bạn có thể sử dụng tùy chọn

server-id        = 1
expire_logs_days = 10
binlog_format    = row
log_bin          = /var/log/mysql/mysql-bin
6 cho việc này, tùy chọn này cho phép bạn chỉ định những sự kiện cơ sở dữ liệu nào sẽ được liệt kê

find / -type f -name mysql*.cnf
4

Nhị phân dự phòng   Nhật ký

Bạn có thể sao chép các tệp có liên quan từ thư mục nhật ký MySQL, nhưng bạn có thể gặp một số vấn đề nếu các thay đổi cơ sở dữ liệu được ghi lại trong khi bạn đang sao chép. Tốt nhất là trước tiên, điều này sẽ buộc MySQL phải đóng tệp nhật ký hiện tại và bắt đầu ghi vào tệp mới. Sau đó, bạn có thể sao chép tất cả các tệp nhật ký trừ tệp hiện tại

Để thực hiện việc này, hãy đăng nhập vào máy chủ MySQL và chạy lệnh MySQL sau

find / -type f -name mysql*.cnf
5

Nếu bạn kiểm tra nội dung của thư mục nhật ký, bạn sẽ thấy nó đã tạo một tệp nhật ký mới

find / -type f -name mysql*.cnf
6

server-id        = 1
expire_logs_days = 10
binlog_format    = row
log_bin          = /var/log/mysql/mysql-bin
2 là danh sách tất cả các sự kiện kể từ khi sao lưu đầy đủ và
server-id        = 1
expire_logs_days = 10
binlog_format    = row
log_bin          = /var/log/mysql/mysql-bin
8 là tệp nhật ký hiện tại. Nếu bạn thực hiện thay đổi đối với cơ sở dữ liệu, bạn sẽ thấy các sự kiện mới trong
server-id        = 1
expire_logs_days = 10
binlog_format    = row
log_bin          = /var/log/mysql/mysql-bin
8

Bây giờ chúng tôi có thể sao lưu tất cả các tệp không phải là tệp nhật ký hiện tại, trong trường hợp này là

server-id        = 1
expire_logs_days = 10
binlog_format    = row
log_bin          = /var/log/mysql/mysql-bin
2. Tôi sẽ sao chép nó theo cách thủ công vào một thư mục
service mysql restart
1 mà tôi đã tạo, nhưng thêm ngày và giờ hiện tại vào trước để tôi có thể dễ dàng xác định nó sau này. Nếu bạn có nhiều tệp nhật ký nhị phân, bạn phải sao chép từng tệp

find / -type f -name mysql*.cnf
7

Sau khi sao chép các tệp nhật ký nhị phân có liên quan, chúng tôi cần xóa chúng khỏi thư mục nhật ký. Điều này là để đảm bảo rằng chúng tôi không sao chép dữ liệu đã sao lưu vào lần tiếp theo khi chúng tôi sao chép các tệp nhật ký nhị phân. Chúng ta có thể sử dụng câu lệnh

service mysql restart
2 để xóa tất cả các tệp nhật ký nhị phân được liệt kê trong tệp chỉ mục nhật ký trước ngày hoặc tên tệp nhật ký được chỉ định. Trong trường hợp của chúng tôi, chúng tôi muốn xóa tất cả các tệp nhật ký nhị phân ngoại trừ tệp hiện tại, vì vậy chúng tôi đăng nhập vào máy chủ MySQL và chạy lệnh sau

find / -type f -name mysql*.cnf
8

Nếu chúng tôi kiểm tra nội dung của thư mục nhật ký, chúng tôi sẽ thấy rằng tệp nhật ký mà chúng tôi sao chép đã bị xóa

find / -type f -name mysql*.cnf
9

Tại thời điểm này, bạn có thể sử dụng một giải pháp tương tự như giải pháp mà chúng tôi đã nêu trong hướng dẫn của chúng tôi để di chuyển các bản sao lưu đến một vị trí lưu trữ ngoại vi như Amazon S3

Khôi phục từ nhị phân   Nhật ký

Bây giờ chúng tôi có một bản sao lưu đầy đủ và một bản sao lưu nhật ký nhị phân, sẽ rất hữu ích nếu biết cách khôi phục từ chúng

Thư mục

service mysql restart
3 của chúng tôi hiện trông như thế này

root@hellfish:~$ find / -type f -name mysql.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
/etc/mysql/mysql.cnf
/etc/mysql/conf.d/mysql.cnf
/etc/mysql/conf.d/mysqldump.cnf
0

Chúng tôi chỉ có hai tệp, vì chúng tôi có một bản sao lưu đầy đủ và một bản sao lưu nhật ký nhị phân, nhưng nếu bạn chạy một bản sao lưu toàn bộ mỗi ngày một lần và sao chép nhật ký nhị phân đều đặn, thì bạn sẽ có một tệp

service mysql restart
4 và nhiều tệp
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log
default_authentication_plugin = mysql_native_password
0 mỗi ngày

Để khôi phục nhật ký nhị phân từ một thời điểm cụ thể, trước tiên chúng tôi cần khôi phục bản sao lưu đầy đủ gần đây nhất

root@hellfish:~$ find / -type f -name mysql.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
/etc/mysql/mysql.cnf
/etc/mysql/conf.d/mysql.cnf
/etc/mysql/conf.d/mysqldump.cnf
1

Bây giờ chúng tôi có thể khôi phục nhật ký nhị phân mà chúng tôi đã sao chép sau lần sao lưu đầy đủ cuối cùng. Chúng tôi thực hiện điều này bằng cách sử dụng tiện ích

server-id        = 1
expire_logs_days = 10
binlog_format    = row
log_bin          = /var/log/mysql/mysql-bin
5 để xem dữ liệu nhật ký cho cơ sở dữ liệu cụ thể và đưa đầu ra đó tới tiện ích
service mysql restart
7 cho cơ sở dữ liệu được đề cập

root@hellfish:~$ find / -type f -name mysql.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
/etc/mysql/mysql.cnf
/etc/mysql/conf.d/mysql.cnf
/etc/mysql/conf.d/mysqldump.cnf
2

Nếu bạn có nhiều tệp nhật ký nhị phân, bạn có thể đưa tất cả chúng vào cùng một lệnh, như vậy

root@hellfish:~$ find / -type f -name mysql.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
/etc/mysql/mysql.cnf
/etc/mysql/conf.d/mysql.cnf
/etc/mysql/conf.d/mysqldump.cnf
3

Gia tăng MySQL tự động   Sao lưu

Cho rằng các lệnh này được chạy với tư cách là người dùng root từ thiết bị đầu cuối, nên cũng có thể tự động hóa tất cả những điều này bằng một tập lệnh bó. Đồng thời, chúng tôi muốn cho phép tập lệnh sao lưu nhiều tệp nhật ký nhị phân có thể

root@hellfish:~$ find / -type f -name mysql.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
/etc/mysql/mysql.cnf
/etc/mysql/conf.d/mysql.cnf
/etc/mysql/conf.d/mysqldump.cnf
4

Bước cuối cùng là lưu tập lệnh này ở đâu đó và sau đó tự động hóa quy trình bằng công việc định kỳ của máy chủ. Vì chúng tôi đang chạy tất cả những thứ này với tư cách là người dùng root, tôi đang lưu tập lệnh dưới dạng

service mysql restart
8 trong tài khoản người dùng root và tạo một cron người dùng root

root@hellfish:~$ find / -type f -name mysql.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
/etc/mysql/mysql.cnf
/etc/mysql/conf.d/mysql.cnf
/etc/mysql/conf.d/mysqldump.cnf
5

Sau đó, tôi tạo một tác vụ theo lịch trình để tạo bản sao lưu đầy đủ mỗi ngày một lần (lúc 5 giờ sáng theo giờ máy chủ) và chạy các bản sao lưu gia tăng mỗi giờ

root@hellfish:~$ find / -type f -name mysql.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
/etc/mysql/mysql.cnf
/etc/mysql/conf.d/mysql.cnf
/etc/mysql/conf.d/mysqldump.cnf
6

Cuối cùng, bạn nên dọn dẹp định kỳ các tệp sao lưu trong thư mục

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log
default_authentication_plugin = mysql_native_password
3. Điều này có thể đạt được bằng cách sử dụng cùng một quy trình dọn dẹp mà chúng tôi đã sử dụng trong

Sao lưu gia tăng cho cá nhân   Cơ sở dữ liệu

Quy trình tôi đã nêu ở trên sao lưu tất cả dữ liệu MySQL trên máy chủ. Lý do cho điều này là các bản ghi nhị phân chứa tất cả các sự kiện trên toàn bộ máy chủ MySQL. Mặc dù có thể định cấu hình MySQL để tạo nhật ký nhị phân riêng cho mỗi cơ sở dữ liệu, nhưng đây là một quy trình phức tạp yêu cầu nhiều dịch vụ MySQL và sử dụng bản sao. Đây là một quy trình phức tạp, vì vậy chúng tôi khuyên bạn nên sử dụng dịch vụ của bên thứ ba để sao lưu nhật ký nhị phân của mình thay thế

Sao lưu bằng   SqlBak

Chúng tôi khuyên dùng SqlBak nếu bạn chọn giảm tải các bản sao lưu của mình cho một dịch vụ để tận dụng các bản sao lưu gia tăng. Bạn có thể đọc thêm về những gì họ cung cấp trên trang web của họ, nhưng có một vài lý do chúng tôi đề xuất họ

  1. Họ cung cấp bản dùng thử miễn phí 30 ngày cho phép bạn kiểm tra tất cả các chức năng
  2. Sử dụng dịch vụ của họ không yêu cầu bạn phải cài đặt thủ công bất kỳ phần mềm bổ sung nào trên máy chủ của mình, ngoài tiện ích
    show binary logs;
    show variables like 'server_id';
    show variables like 'expire_logs_days';
    show variables like 'binlog_format';
    
    0
  3. Họ có tài liệu tốt, ngắn gọn và dễ hiểu, ngay cả với người có hiểu biết hạn chế về cách máy chủ MySQL hoạt động
  4. Giao diện người dùng của họ rõ ràng và hướng dẫn bạn qua từng bước của quy trình

Bắt đầu với   SqlBak

Khi bạn đăng ký tài khoản SqlBak, bước đầu tiên của bạn là thêm một máy chủ mới từ bảng điều khiển SqlBak

Một số tùy chọn để tạo bản sao lưu MySQL là gì?

SqlBak sau đó cung cấp hướng dẫn cho hệ điều hành bạn đã chọn. Ứng dụng cho phép bạn sao chép các lệnh liên quan để chạy, bao gồm cả khóa bí mật cá nhân của bạn

Một số tùy chọn để tạo bản sao lưu MySQL là gì?

Đây là kết quả đầu ra trông như thế nào

root@hellfish:~$ find / -type f -name mysql.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
/etc/mysql/mysql.cnf
/etc/mysql/conf.d/mysql.cnf
/etc/mysql/conf.d/mysqldump.cnf
7

Nó nhắc bạn thêm một kết nối đến máy chủ cơ sở dữ liệu của bạn, trong trường hợp này là MySQL. Vì chúng tôi muốn sử dụng tùy chọn sao lưu gia tăng, bạn cần chạy tùy chọn này với thông tin đăng nhập MySQL

show binary logs;
show variables like 'server_id';
show variables like 'expire_logs_days';
show variables like 'binlog_format';
1. Trên SpinupWP, bạn sẽ tạo mật khẩu gốc khi cung cấp máy chủ hoặc bạn có thể lấy mật khẩu này từ tab “Cơ sở dữ liệu” cho máy chủ của mình

Một số tùy chọn để tạo bản sao lưu MySQL là gì?

root@hellfish:~$ find / -type f -name mysql.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
/etc/mysql/mysql.cnf
/etc/mysql/conf.d/mysql.cnf
/etc/mysql/conf.d/mysqldump.cnf
8

Sau khi máy chủ được định cấu hình, bạn có thể tạo các công việc sao lưu mới từ bảng điều khiển SqlBak

Tạo bản sao lưu đầu tiên của bạn   Công việc

Tạo công việc sao lưu mới là trường hợp nhấp vào nút Thêm công việc mới, ở trên cùng bên phải của bảng điều khiển hoặc bên cạnh máy chủ trong danh sách

Một số tùy chọn để tạo bản sao lưu MySQL là gì?

Bạn được yêu cầu chọn máy chủ và loại sao lưu

Một số tùy chọn để tạo bản sao lưu MySQL là gì?

Các cài đặt sao lưu quan trọng nhất là

  • cơ sở dữ liệu cần sao lưu
  • đích để lưu trữ các bản sao lưu
  • lịch sao lưu

Vì chúng tôi đã định cấu hình SqlBak để sử dụng thông tin đăng nhập gốc của MySQL, nên chúng tôi có thể chọn từ tất cả các cơ sở dữ liệu có sẵn

Một số tùy chọn để tạo bản sao lưu MySQL là gì?

Đối với đích đến, tôi sẽ sử dụng cùng một thư mục vị trí mà tôi đã làm trước đó, vì vậy tôi nhấp vào Thêm đích, chọn thư mục Cục bộ/Mạng, Ổ cứng gắn ngoài/NAS và nhập đường dẫn trên máy chủ. Tôi cũng có thể chọn sử dụng bất kỳ tùy chọn lưu trữ ngoại vi nào mà SqlBak hỗ trợ làm điểm đến của mình. Đây là một lợi thế khác của việc sử dụng một dịch vụ như SqlBak. Tôi không cần cấu hình bổ sung để gửi bản sao lưu khỏi máy chủ của mình

Khi định cấu hình một đích cục bộ, SqlBak có nút “Kiểm tra” tiện dụng, nút này đảm bảo rằng tiện ích

show binary logs;
show variables like 'server_id';
show variables like 'expire_logs_days';
show variables like 'binlog_format';
0 mà tôi đã cài đặt có thể ghi vào vị trí đó

Một số tùy chọn để tạo bản sao lưu MySQL là gì?

Đối với lịch biểu, bạn cần nhấp vào Cài đặt nâng cao… để bật tùy chọn gia tăng

Một số tùy chọn để tạo bản sao lưu MySQL là gì?

Một điều tôi thực sự thích ở đây là giao diện người dùng bao gồm một liên kết trong chú giải công cụ bên cạnh tùy chọn “Sao lưu gia tăng”, đến một tài liệu về cách bật nhật ký nhị phân. Tôi thấy bài viết này rất hữu ích và tôi có thể thiết lập nhật ký nhị phân của mình mà không gặp sự cố nào

Trong cài đặt “Lịch sao lưu nâng cao” cho lịch sao lưu, bạn có thể kiểm tra tùy chọn Sao lưu gia tăng và chọn lịch của mình

Một số tùy chọn để tạo bản sao lưu MySQL là gì?

Điều cuối cùng cần làm là đặt tên cho công việc sao lưu của bạn và nhấp vào nút Lưu hoặc Lưu & Thoát để lưu và quay lại bảng điều khiển

Một số tùy chọn để tạo bản sao lưu MySQL là gì?

Sau khi lưu, bạn sẽ có thể xem tổng quan về tất cả cài đặt công việc sao lưu, cũng như danh sách tất cả các bản sao lưu đã được tạo. Ngoài ra còn có nút Chạy ngay để chạy sao lưu ngay lập tức

Một số tùy chọn để tạo bản sao lưu MySQL là gì?

Khi các bản sao lưu đầu tiên của bạn đã hoàn tất, chúng sẽ được liệt kê trong chế độ xem "Lịch sử sao lưu". Bạn có thể nhấp vào bản sao lưu để xem nhật ký sao lưu, tải xuống bản sao lưu hoặc khôi phục bản sao lưu trước đó. Ngoài ra còn có một nút Khôi phục phía trên lịch sử Sao lưu, để khôi phục bản sao lưu thành công cuối cùng

Một số tùy chọn để tạo bản sao lưu MySQL là gì?

Như tôi đã đề cập trước đó, bản dùng thử miễn phí 30 ngày và giao diện người dùng rõ ràng có nghĩa là tôi có thể nhận và chạy các bản sao lưu đầy đủ và sao lưu gia tăng một cách nhanh chóng. Tôi cũng thích thực tế là bạn có thể bật và tắt cài đặt sao lưu

Sao lưu bằng   Ottomatik

Nếu bạn tìm kiếm các bản sao lưu MySQL gia tăng, bạn cũng có thể tìm thấy Ottomatik. Ottomatik cung cấp chức năng tương tự như SqlBak, nhưng tôi thấy nó khó sử dụng hơn

Nếu bạn giống tôi, bạn thích tự mình cài đặt ứng dụng cần thiết hơn. Thay vì cung cấp nó dưới dạng gói hệ điều hành, bạn phải cài đặt thủ công một loạt phần mềm để sử dụng Ottomatik

Tôi cũng thường thấy tài liệu khó hiểu hơn. Cuối cùng, không giống như SqlBak, bạn không có tùy chọn để kiểm tra đầy đủ tất cả các tính năng trong thời gian dùng thử và các bản sao lưu gia tăng yêu cầu bạn nâng cấp lên tài khoản trả phí

Phần kết luận

Sao lưu gia tăng là điều bắt buộc đối với các trang web có hoạt động cao. Như bạn có thể thấy từ bài viết này, nó không phải là thứ dễ dàng để tự thiết lập. Chúng tôi có thể cung cấp các bản sao lưu gia tăng trong SpinupWP trong tương lai, nhưng hiện tại, một dịch vụ như SqlBak là một bổ sung tuyệt vời cho SpinupWP

Bạn có bất kỳ câu chuyện kinh dị nào mà một bản sao lưu gia tăng sẽ giúp tiết kiệm thời gian không?

Cách tốt nhất để sao lưu cơ sở dữ liệu MySQL là gì?

Để sao lưu cơ sở dữ liệu MySQL, bạn có thể sử dụng công cụ của bên thứ ba hoặc thực thi lệnh mysqldump từ dòng lệnh . mysqldump là một tiện ích dòng lệnh được sử dụng để tạo bản sao lưu cơ sở dữ liệu logic MySQL. Nó tạo ra một. tệp sql chứa một tập hợp các câu lệnh SQL.

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

Bước 1. Tạo bản sao lưu cơ sở dữ liệu MySQL .
Mở phpMyAdmin. Trên cây thư mục bên trái, nhấp vào cơ sở dữ liệu bạn muốn sao lưu. .
Nhấp vào Xuất trên menu trên đầu màn hình. Bạn sẽ thấy một phần có tên là “Phương thức xuất. ” Sử dụng Quick để lưu một bản sao của toàn bộ cơ sở dữ liệu. .
Nhấp vào Đi

3 loại sao lưu là gì?

Các loại sao lưu phổ biến nhất là sao lưu toàn bộ, sao lưu gia tăng và sao lưu khác biệt . Các loại sao lưu khác bao gồm sao lưu toàn bộ tổng hợp và phản chiếu.

Các tùy chọn sao lưu là gì?

6 Tùy chọn sao lưu dữ liệu .
Phương tiện có thể tháo rời
Ổ cứng ngoài
Thiết bị phần cứng
phần mềm sao lưu
Dịch vụ sao lưu đám mây