Tôi có thể chia sẻ tệp cơ sở dữ liệu MySql với Windows khi khởi động kép không?


12

Tôi muốn sử dụng trong cả Ubuntu và Windows (khởi động kép) các tệp cơ sở dữ liệu MySql của tôi nằm trên phân vùng NTFS. Nó sẽ làm việc chứ? Có vấn đề gì không?


4
ĐỐI VỚI GHI CHÚ CỦA CỘNG ĐỒNG: Người dùng đang hỏi về khả năng tương thích của các định dạng dữ liệu MySQL giữa Ubuntu Linux và Microsoft Windows. Người dùng đang tự hỏi liệu dữ liệu được lưu trữ ở định dạng Ubuntu Linux cho MySQL có tương thích với cách mà phiên bản Windows của MySQL lưu trữ dữ liệu để thông tin cơ sở dữ liệu có thể được chỉnh sửa và khôi phục trên cả Windows và MySQL hay không.
Thomas Ward

Trả lời: Tôi vừa cung cấp một câu trả lời mở rộng cho câu hỏi này tại đây , trong Unix & Linux StackExchange .
Chế độ xem hình elip

Câu trả lời:


9

Vâng, nó hoạt động nhưng với một số quirks. MySQL sử dụng cùng một định dạng tệp trên các nền tảng, vì vậy tất cả những gì bạn cần là chia sẻ thư mục dữ liệu. Một vấn đề là thư mục dữ liệu cần phải có mysql là chủ sở hữu và nhóm trong ubfox. Và Windows không phân biệt chữ hoa chữ thường và Linux phân biệt chữ hoa chữ thường, vì vậy hãy giữ tất cả các tên đồng nhất: cả chữ thường hoặc chữ hoa nhưng không trộn lẫn chúng.

Từ đầu đến cuối; nếu bạn đã có những thứ được thiết lập, điều này có thể cần một số điều chỉnh để phù hợp với thiết lập của bạn:

  • Cài đặt và thiết lập MySQL trên cả hai hệ thống.
  • Dừng máy chủ mysql nếu nó đang chạy.
  • Tạo một phân vùng NTFS mới. Đánh dấu tên thiết bị (hãy gọi nó sdXNngay bây giờ).
  • Di chuyển thư mục dữ liệu mysql từ Ubuntu sang phân vùng mới.

    mkdir /{mountpoint}/mysql_data
    sudo mv /var/lib/mysql /{mountpoint/mysql_data
    

    sử dụng mvtiết kiệm quyền.

  • Tạo một thư mục mysql mới

    sudo mkdir /var/lib/mysql
    
  • Gắn kết phân vùng NTFS tại /var/lib/mysql. Thay đổi tên devicename thành những gì nó nhận được khi bạn tạo phân vùng NTFS.

    sudo mount /dev/{sdXN} /var/lib/mysql -t ntfs-3g -o uid=mysql,gid=mysql,umask=0077
    
  • Để tự động đếm khi khởi động, tìm phân vùng UUID, định vị và chỉnh sửa /etc/fstab.

    ls -l /dev/disk/by-uuid
    locale -a
    sudo gedit /etc/fstab   
    UUID={number_found_with_the_ls-l} /var/lib/mysql ntfs-3g uid=mysql,gid=mysql,umask=0077,locale={your_locale}.utf8  0  0
    
  • Thay đổi đường dẫn 'datadir' /etc/mysql/my.cnfđể trỏ đến/var/lib/mysql/mysql_data

  • Bắt đầu máy chủ mysql và kiểm tra nó.

  • Chỉnh sửa tệp cấu hình Windows ( my.ini) và đặt 'datadir' thành X:/mysql_data(thay thế X:cho nơi bạn gắn kết nó trong Windows).

Tổng hợp từ chủ đề 1442148 trên UF.org .

Tôi đã có phiên bản Ubuntu hoạt động; Vì vậy, một phần chưa được kiểm tra vì tôi không có Windows


Câu trả lời rất hay! Chỉ cần hai ý kiến: Đã có nhiều tên trường hợp hỗn hợp và sử dụng lower_case_table_names=1nó hoạt động tốt. Không có tùy chọn gắn kết của bạn, tôi gặp phải lỗi này (IMHO thực sự là một lỗi).
maaartinus

"sudo mv / var / lib / mysql / dev / {sdXN} / mysql_data" báo lỗi. Xem unix.stackexchange.com/questions/310433/ Quảng cáo
Chế độ xem hình elip

1

Nếu bạn đã thêm phân vùng linux vào môi trường chỉ có cửa sổ trước đó, bạn có thể sử dụng cơ sở dữ liệu tại chỗ chỉ với một số điều chỉnh nhỏ. Phiên bản dài tại đây , phiên bản ngắn:

Bạn sẽ cần mount --bind '/media/windows/ProgramData/MySQL/MySQL Server 5.5/data' /var/lib/mysqlchạy khi khởi động (giả sử bạn gắn ổ đĩa windows của mình vào /media/windowssử dụng fstab).

Để kiểm tra kích thước nhật ký của innodb, bạn sẽ cần di chuyển nhật ký innodb cho phân vùng ubfox. Trong my.cnf, thêm innodb_log_group_home_dir = /var/log/mysqlđể các bản ghi đi bên cạnh nhật ký lỗi mysql.

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.