Các vị trí khác nhau cho cơ sở dữ liệu MySQL?


18

Tôi có thể định cấu hình MySQL để lưu trữ cơ sở dữ liệu cụ thể ở một nơi riêng biệt trên đĩa không?

Tôi vẫn muốn bất kỳ cơ sở dữ liệu mới nào đi đến vị trí mặc định, nhưng có một cơ sở dữ liệu cụ thể mà tôi muốn lưu trữ trong thư mục Dropbox của mình để nó có thể được đồng bộ hóa giữa một vài máy tính.

Tôi có thể làm cái này như thế nào?


1
Ngẫu nhiên, có thể làm điều này theo cách khác. Để lại cơ sở dữ liệu như cũ và symlink đến nó từ Dropbox. Dropbox không thực sự hiểu các liên kết tượng trưng và sẽ chỉ đồng bộ hóa chúng như bình thường.
TRiG

Câu trả lời:


27

Tất nhiên bạn có thể! Bạn phải cấp permisson gốc . Đọc các trang hướng dẫn ln .

MySQL lưu trữ dữ liệu cơ sở dữ liệu trong các thư mục riêng biệt trong /var/lib/mysql. Tôi nghĩ, lúc đầu bạn phải tạo một thư mục, nơi bạn muốn đặt các tệp của cơ sở dữ liệu đã chọn. Cấp quyền gốc, dừng MySQL deamon:

# /etc/init.d/mysql stop

Sao chép dữ liệu của bạn vào thư mục mới của bạn:

# cp /var/lib/mysql/DATABASENAME /path/to/new/database/dir

Xóa thư mục cũ của bạn khỏi các tệp dữ liệu MySQL: ( Cảnh báo! LUÔN LUÔN tạo SQL kết xuất trước !!! )

# rm -R /var/lib/mysql/DATABASENAME

Tạo một liên kết trở lại thư mục dữ liệu MySQL: ( Hãy chú ý! Đọc trang hướng dẫn của ln trước !!! )

# ln -s /full/path/to/new/database/dir /var/lib/mysql/DATABASENAME

Sau đó, bạn đã sẵn sàng, bắt đầu MySQL của bạn:

# /etc/init.d/mysql start

Cảnh báo! Nếu thư mục mới của bạn không thể viết và đọc được bởi MySQL sẽ không hoạt động! Ví dụ, vấn đề phổ biến: bạn đặt thư mục dữ liệu mới vào thư mục nhà của bạn, thư mục nhà của bạn được người khác đọc bảo vệ (ví dụ: drwxrwx --- bạn là bạn của bạn).

Hãy hỏi, nếu bạn muốn biết những điều khác về phương pháp đó!


2
Cảm ơn! Tôi thậm chí đã không xem xét các liên kết tượng trưng, ​​tôi đã quá bận rộn suy nghĩ về các cách để làm điều đó trong mysql.
Colin

8
Bạn cũng sẽ muốn chỉnh sửa /etc/apparmor.d/*mysqldđể bao gồm thư mục mới. Sau đó sudo service apparmor reloadtrước khi khởi động lại MySQL.
Kees Cook

3
@KeesCook cảm ơn rất nhiều về mẹo apparmor, điều đó đã khiến tôi phát điên !! Có vẻ như tốt hơn là đặt nó vào /etc/apparmor.d/localmặc dù (trên bản cài đặt của tôi đã có usr.sbin.mysqld ở đó), thêm một cái duy nhất /full/path/to/new/database/dir/** rwk,đã làm điều đó cho tôi ...
Tobias J

Cảm ơn rất nhiều, một số chi tiết chỉnh sửa apparmor ở đây cũng hữu ích. Tôi đã bị chậm khi cố gắng đặt cơ sở dữ liệu vào một ổ đĩa không tự động gắn kết khi khởi động và người dùng root cần truy cập vào nó. Từ chối làm việc. Được chỉnh sửa fstabnhư thế này để ổ đĩa đó được gắn vào hệ thống tệp sau khi khởi động, bây giờ mọi thứ đều hoạt động.
thảo quả

3

Xin lưu ý rằng nếu bạn đang sử dụng Ubuntu, bạn cũng cần thêm một mục trong tệp cấu hình AppArmour /etc/apparmor.d/usr.sbin.mysqld nếu không bạn sẽ tiếp tục gặp lỗi về quyền viết mặc dù bạn thay đổi tệp và thư mục quyền.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.