Thư mục dữ liệu mysql

Cơ sở dữ liệu phát triển theo thời gian, đôi khi vượt qua không gian trên hệ thống tệp. Bạn cũng có thể gặp phải sự tranh chấp I/O khi chúng nằm trên cùng một phân vùng với phần còn lại của hệ điều hành. RAID, lưu trữ khối mạng và các thiết bị khác có thể cung cấp dự phòng và các tính năng mong muốn khác. Cho dù bạn có thêm không gian, đánh giá các cách để tối ưu hóa hiệu suất hoặc tìm cách tận dụng các tính năng lưu trữ khác, hướng dẫn này sẽ hướng dẫn bạn thông qua việc di chuyển thư mục dữ liệu MySQL

Nội dung chính Hiển thị

  • Giới thiệu
  • Điều kiện tiên quyết
  • Bước 1 - Di chuyển thư mục dữ liệu MySQL
  • Bước 2 - Chỉ vào vị trí dữ liệu mới
  • Bước 3 - Định cấu hình các quy tắc kiểm soát truy cập apparmor
  • Bước 4 - Khởi động lại MySQL
  • Kết luận
  • MySQL lưu trữ các tập tin cơ sở dữ liệu ở đâu?
  • Tệp DB MySQL được lưu trữ ở đâu?
  • Làm cách nào để tìm cơ sở dữ liệu MySQL trong Ubuntu?

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

Để hoàn thành hướng dẫn này, bạn sẽ cần

  • Máy chủ Ubuntu 16. 04 với người dùng không root có đặc quyền

    Output

    +-----------------+ | @@datadir | +-----------------+ | /var/lib/mysql/ | +-----------------+ 1 row in set (0.00 sec)
    2. Bạn có thể tìm hiểu thêm về cách thiết lập người dùng với các đặc quyền này trong thiết lập máy chủ ban đầu của chúng tôi với hướng dẫn Ubuntu 16. 04. Bạn có thể tìm hiểu thêm về cách thiết lập người dùng với các đặc quyền này trong Thiết lập máy chủ ban đầu với Ubuntu 16 của chúng tôi. 04 hướng dẫn
  • Một máy chủ MySQL. Nếu bạn đã cài đặt MySQL, cách cài đặt MySQL theo hướng dẫn Ubuntu 16. 04 could help you. Nếu bạn chưa cài đặt MySQL, Cách cài đặt MySQL trên Ubuntu 16. 04 hướng dẫn có thể giúp bạn

Trong ví dụ này, chúng tôi di chuyển dữ liệu sang một khối lưu trữ thiết bị được gắn vào

Output

+-----------------+ | @@datadir | +-----------------+ | /var/lib/mysql/ | +-----------------+ 1 row in set (0.00 sec)
3. Bạn có thể tìm hiểu cách thiết lập một trong cách sử dụng khối lưu trữ trên Hướng dẫn DigitalOcean

Bất kể lưu trữ cơ bản nào bạn sử dụng, hướng dẫn này có thể giúp bạn chuyển thư mục dữ liệu đến một vị trí mới

Bước 1 - Di chuyển thư mục dữ liệu MySQL

Để chuẩn bị chuyển thư mục dữ liệu MySQL, hãy xác minh vị trí hiện tại bằng cách bắt đầu phiên bản MySQL tương tác bằng thông tin quản trị

  1. mysql -u root -p

Khi được nhắc nhở, hãy cung cấp mật khẩu gốc MySQL. Sau đó, từ nhắc MySQL, chọn thư mục dữ liệu

  1. select @@datadir;

Output

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

Đầu ra này xác nhận rằng MySQL đã được cấu hình để sử dụng thư mục dữ liệu mặc định,

Output

+-----------------+ | @@datadir | +-----------------+ | /var/lib/mysql/ | +-----------------+ 1 row in set (0.00 sec)
4 to the directory that we need to move. Khi bạn đã xác nhận điều này, hãy nhập

Output

+-----------------+ | @@datadir | +-----------------+ | /var/lib/mysql/ | +-----------------+ 1 row in set (0.00 sec)
5 để thoát khỏi màn hình

Để đảm bảo tính toàn vẹn của dữ liệu, chúng tôi sẽ tắt MySQL trước khi chúng tôi thực hiện việc thay đổi thư mục dữ liệu

  1. sudo systemctl stop mysql

Output

+-----------------+ | @@datadir | +-----------------+ | /var/lib/mysql/ | +-----------------+ 1 row in set (0.00 sec)
6 không hiển thị kết quả của tất cả các lệnh quản lý dịch vụ, vì vậy nếu bạn muốn chắc chắn rằng bạn đã thành công, hãy sử dụng lệnh sau.
  1. sudo systemctl status mysql

Bạn có thể chắc chắn rằng nó đã tắt nếu dòng cuối cùng của đầu ra cho bạn biết máy chủ bị dừng

Output

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

Bây giờ máy chủ đã ngừng hoạt động, chúng tôi sẽ sao chép thư mục cơ sở dữ liệu hiện có vào vị trí mới

Output

+-----------------+ | @@datadir | +-----------------+ | /var/lib/mysql/ | +-----------------+ 1 row in set (0.00 sec)
7. Sử dụng cờ

Output

+-----------------+ | @@datadir | +-----------------+ | /var/lib/mysql/ | +-----------------+ 1 row in set (0.00 sec)
8 để bảo đảm sự tồn tại của các quyền và các thuộc tính khác của thư mục, trong khi ____29 cung cấp đầu ra dòng dài để bạn có thể thực hiện theo tiến trình

Lưu ý. Hãy chắc chắn rằng không có dấu gạch chéo trên thư mục, có thể được thêm vào nếu bạn sử dụng hoàn thành tab. Khi có một đường chéo kéo dài,

Output

+-----------------+ | @@datadir | +-----------------+ | /var/lib/mysql/ | +-----------------+ 1 row in set (0.00 sec)
7 sẽ điền nội dung của thư mục vào điểm gắn kết thay vì chuyển nó vào thư mục
  1. sudo systemctl stop mysql
1 chứa. Đảm bảo không có dấu gạch chéo ở cuối thư mục, dấu gạch chéo này có thể được thêm vào nếu bạn sử dụng tính năng hoàn thành tab. Khi có dấu gạch chéo ở cuối,

Output

+-----------------+ | @@datadir | +-----------------+ | /var/lib/mysql/ | +-----------------+ 1 row in set (0.00 sec)
7 sẽ đổ nội dung của thư mục vào điểm gắn kết thay vì chuyển nó vào thư mục chứa
  1. sudo systemctl stop mysql
1.

Output

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

Khi

Output

+-----------------+ | @@datadir | +-----------------+ | /var/lib/mysql/ | +-----------------+ 1 row in set (0.00 sec)
7 hoàn tất, thay đổi tên thư mục hiện tại với phần mở rộng. bak và giữ nó cho đến khi tôi xác nhận việc chuyển giao đã thành công. Bằng cách đặt lại tên, chúng tôi sẽ tránh nhầm lẫn có thể phát sinh từ các tệp ở cả vị trí mới và vị trí cũ.

Output

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

Bây giờ chúng tôi đã sẵn sàng để chuyển sự chú ý của chúng tôi sang cấu hình

Bước 2 - Chỉ vào vị trí dữ liệu mới

MySQL has a number of way to write over the configuration value. Theo default,

  1. sudo systemctl stop mysql
3 was set to
  1. sudo systemctl stop mysql
4 in file
  1. sudo systemctl stop mysql
5. Chỉnh sửa tệp này để phản hồi thư mục dữ liệu mới.
  1. mysql -u root -p
3

Find line start by

  1. sudo systemctl stop mysql
6 và thay đổi đường dẫn theo sau để phản hồi vị trí mới

Trong trường hợp của chúng tôi, tệp được cập nhật trông giống như đầu ra bên dưới

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

  1. mysql -u root -p
5

Điều này có vẻ như là thời điểm thích hợp để đưa MySQL lên một lần nữa, nhưng có một điều nữa để cấu hình trước khi chúng ta có thể thực hiện điều đó thành công

Bước 3 - Định cấu hình các quy tắc kiểm soát truy cập apparmor

Chúng tôi cần phải nói với Apparmor để cho phép MySQL ghi vào thư mục mới bằng cách tạo bí danh giữa thư mục mặc định và vị trí mới. Để thực hiện công việc này, hãy chỉnh sửa tệp đã chỉnh sửa

  1. sudo systemctl stop mysql
7
  1. sudo systemctl stop mysql
7.
  1. select @@datadir;
0

Ở bên dưới cùng của tệp, thêm quy tắc bí danh sau

  1. select @@datadir;
1

Đối với các thay đổi có hiệu lực, hãy khởi động lại APPARMOR

  1. select @@datadir;
2

Lưu ý. Nếu bạn bỏ qua bước cấu hình apparmor, bạn sẽ gặp thông báo lỗi sau. Nếu bỏ qua bước cấu hình AppArmor, bạn sẽ gặp thông báo lỗi sau

  1. select @@datadir;
3

Đầu ra từ cả hai

Output

+-----------------+ | @@datadir | +-----------------+ | /var/lib/mysql/ | +-----------------+ 1 row in set (0.00 sec)
6 và
  1. sudo systemctl stop mysql
9 end with

  1. select @@datadir;
4

Vì các thông báo không được tạo ra có một kết nối rõ ràng giữa ứng dụng và thư mục dữ liệu, lỗi này có thể mất một khoảng thời gian để tìm ra

Bước 4 - Khởi động lại MySQL

Bước tiếp theo là bắt đầu MySQL, nhưng nếu bạn làm như vậy, bạn sẽ gặp phải một lỗi khác. Lần này, do sự cố ứng dụng, tập lệnh xảy ra lỗi

  1. sudo systemctl status mysql
0 kiểm tra sự tồn tại của thư mục,
  1. sudo systemctl status mysql
1 hoặc liên kết tượng trưng, ​​
  1. sudo systemctl status mysql
2, phù hợp với hai đường dẫn mặc định. Nó thất bại nếu họ không tìm thấy

/usr/share/mysql/mysql-systemd-start

  1. select @@datadir;
5

Vì chúng tôi cần những thứ này để khởi động máy chủ, nên chúng tôi sẽ tạo cấu trúc thư mục cấu trúc tối thiểu để vượt qua kiểm tra môi trường tập lệnh

  1. select @@datadir;
6

Bây giờ chúng tôi đã sẵn sàng để bắt đầu MySQL

  1. select @@datadir;
7

Để đảm bảo rằng thư mục dữ liệu mới thực sự được sử dụng, hãy bắt đầu Màn hình MySQL

  1. mysql -u root -p

Nhìn vào giá trị cho thư mục dữ liệu một lần nữa

  1. select @@datadir;
9

Bây giờ, bạn đã khởi động lại MySQL và xác nhận rằng nó sử dụng vị trí mới, hãy tận dụng cơ hội để đảm bảo rằng cơ sở dữ liệu của bạn có chức năng đầy đủ. Khi bạn đã xác minh tính toàn vẹn của bất kỳ dữ liệu nào hiện có, bạn có thể xóa thư mục dữ liệu đã sao lưu

Output

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

Khởi động lại MySQL một lần cuối cùng để đảm bảo rằng nó hoạt động như mong đợi

Output

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

Kết luận

Trong hướng dẫn này, chúng tôi đã chuyển thư mục dữ liệu MySQL, sang một vị trí mới và cập nhật ACL của Ubuntu, ACL để điều chỉnh. Mặc dù chúng tôi đã sử dụng một khối lưu trữ thiết bị, các hướng dẫn ở đây phải phù hợp để xác định lại vị trí của thư mục dữ liệu bất kể công nghệ cơ bản

Để biết thêm về việc quản lý các thư mục dữ liệu MySQL, hãy xem các phần này trong tài liệu chính thức của MySQL