Tôi có thể sao chép var lib mysql không?

Máy chủ Arch Linux của tôi gần đây đã bị hỏng và tôi cần thực hiện cài đặt mới trên nó. Tuy nhiên, tôi đã không thể tạo kết xuất SQL của cơ sở dữ liệu MariaDB bằng lệnh mysqldump (tôi biết. ). Tôi đã khởi động vào máy chủ bằng Arch Live USB và đã sao chép tất cả các tệp tôi cần, nhưng bây giờ tôi đang tự hỏi làm thế nào để sao lưu cơ sở dữ liệu SQL. Vì tôi dự định chuyển từ cùng một phiên bản Arch và MariaDB sang cùng một phiên bản Arch và MariaDB, nếu tôi sao chép tất cả các tệp trong/var/lib/mysql, điều đó có thực hiện được không? . Có ai biết nếu điều này sẽ làm việc hoặc nếu có một cách tốt hơn?

Lần sửa cuối bởi tony5429 (2018-01-21 13. 51. 46)

Trong MySQL, bạn có thể sao lưu dữ liệu của mình bằng cách sử dụng bản sao lưu logic hoặc vật lý. Cái trước tạo tệp kết xuất MySQL. Mặt khác, bản sao lưu MySQL vật lý là bản sao thô của tất cả các tệp và thư mục chứa thông tin cơ sở dữ liệu. Bạn có thể tạo các bản sao lưu logic MySQL bằng cách sử dụng mysqldump hoặc bằng cách cài đặt các công cụ tự động như automysqlbackup. Trong hướng dẫn này, bạn sẽ tạo một bản sao lưu MySQL vật lý

điều kiện tiên quyết

Trước khi bắt đầu, hãy đảm bảo bạn có người dùng không phải root với quyền sudo và máy chủ cơ sở dữ liệu MySQL

Định vị thư mục dữ liệu

  1. Đăng nhập vào máy chủ MySQL bằng mật khẩu gốc của bạn

    $ sudo mysql -u root -p
    
  2. SQL sau sẽ tiết lộ thư mục dữ liệu của phiên bản MySQL của bạn

    mysql> select @@datadir;
    
  3. Đầu ra tương tự như thế này

    +-----------------+
    
    | @@datadir       |
    
    +-----------------+
    
    | /var/lib/mysql/ |
    
    +-----------------+
    
    1 row in set (0.00 sec)
    

Phương pháp luân phiên

Xác định vị trí đường dẫn dữ liệu MySQL mà không cần đăng nhập vào máy chủ MySQL

$ sudo mysqld --verbose --help | grep ^datadir

Đầu ra tương tự như thế này

datadir    /var/lib/mysql/

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

  1. Dừng dịch vụ MySQL

    $ sudo systemctl stop mysql
    
  2. Tạo một thư mục để lưu trữ bản sao lưu tệp MySQL. Tạo thư mục mẹ và thư mục con với ngày hiện tại. Sơ đồ đặt tên này cho phép bạn xác định ngày sao lưu cuối cùng

    $ sudo mkdir -p /var/mysql_backups/2020_07_13_backup
    
  3. Sao chép tệp cơ sở dữ liệu bằng

    mysql> select @@datadir;
    
    8

    ________số 8
  4. Khởi động máy chủ cơ sở dữ liệu

    $ sudo systemctl start mysql
    

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

  1. Dừng dịch vụ MySQL

    $ sudo systemctl stop mysql
    
  2. Đổi tên thư mục dữ liệu MySQL hiện tại. Bước này bảo tồn một bản sao lưu của trạng thái hiện tại

    mysql> select @@datadir;
    
    0
  3. Tạo một thư mục dữ liệu MySQL mới

    mysql> select @@datadir;
    
    1
  4. Khôi phục bản sao lưu MySQL

    mysql> select @@datadir;
    
    2
  5. Thay đổi quyền sở hữu của

    mysql> select @@datadir;
    
    9 thành người dùng
    +-----------------+
    
    | @@datadir       |
    
    +-----------------+
    
    | /var/lib/mysql/ |
    
    +-----------------+
    
    1 row in set (0.00 sec)
    
    0

    mysql> select @@datadir;
    
    3
  6. Khởi động máy chủ cơ sở dữ liệu

    $ sudo systemctl start mysql
    

Kiểm tra sao lưu

  1. Kiểm tra bản sao lưu bằng cách đăng nhập vào máy chủ MySQL với quyền root

    $ sudo mysql -u root -p
    
  2. Xác minh lược đồ cơ sở dữ liệu là chính xác

    mysql> select @@datadir;
    
    6
  3. Cơ sở dữ liệu của bạn được hiển thị. Ví dụ

    mysql> select @@datadir;
    
    7

Sự kết luận

Trong hướng dẫn này, bạn đã tạo bản sao lưu vật lý cho cơ sở dữ liệu MySQL của mình. Phương pháp này lý tưởng cho cơ sở dữ liệu lớn và giúp khôi phục dễ dàng hơn khi cài đặt lại máy chủ cơ sở dữ liệu

Không, tôi thực sự không gặp bất kỳ sự cố nào khi khôi phục dữ liệu. Về cơ bản, nói một cách đơn giản, ai đó đã quyết định xóa toàn bộ cơ sở dữ liệu MySQL (đừng hỏi tôi làm thế nào) và tôi có thể khôi phục toàn bộ cơ sở dữ liệu bằng các tệp được sao lưu từ rsync. Chúng tôi không gặp phải bất kỳ cơ sở dữ liệu hoặc sự cố nào khác do điều này nếu đó là những gì bạn đang hỏi. Tôi cũng đã khôi phục cơ sở dữ liệu sau khi nhập sai một số dữ liệu, nó cũng hoạt động tốt

Nhìn chung, cá nhân tôi thấy rằng rsync đã làm và thực hiện công việc sao lưu dữ liệu tốt hơn so với kết xuất MySQL. Tuy nhiên, điều đó không có nghĩa là cả hai đều không có vị trí của mình. Cá nhân tôi đã sử dụng mysqldump khi thực hiện nâng cấp hoặc thay đổi hệ thống để thêm một chút "dư thừa" vào đó trong trường hợp rsync không hoạt động trong thời gian này. Tôi cũng đã từng sử dụng mysqldump hàng tháng nhưng tôi đã ngừng sử dụng nó

Var lib mysql là gì?

Thư mục thường /var/lib/mysql hoặc /var/db/mysql được sử dụng để lưu trữ cơ sở dữ liệu và các câu chuyện trong hệ điều hành giống như UNIX . Bạn có thể sử dụng lệnh sau để định vị MySQL datadir. grep datadir /etc/my. cnf. datadir=/var/lib/mysql. Hoặc.

Tôi có thể xóa var lib mysql không?

Theo mặc định, điều này có thể được tìm thấy tại /var/lib/mysql. Bạn có thể chọn xóa hoàn toàn thư mục này bằng cách sử dụng lệnh xóa , nhưng tốt hơn hết là bạn chỉ cần đổi tên thư mục cũ thành tên mới.

Var lib mysql ở đâu?

Trong UNIX, các giá trị mặc định điển hình là /usr/local/mysql/var nếu bạn cài đặt MySQL từ một bản phân phối nguồn, /usr/local/mysql/data nếu bạn cài đặt từ một bản phân phối nhị phân và /var/lib/mysql nếu bạn cài đặt từ . Trong Windows, thư mục dữ liệu mặc định là C. \mysql\dữ liệu