Nếu bạn muốn chia sẻ cơ sở dữ liệu với một vài người dùng khác, việc đặt cơ sở dữ liệu vào OneDrive sẽ không hoạt động.
MySQL lưu trữ dữ liệu trong các tệp dưới datadir, điều đó đúng. Chúng được lưu trữ trong các tệp có tên là không gian bảng có .ibd
phần mở rộng.
Nhưng khi bạn thực hiện các thao tác CHÈN / CẬP NHẬT / XÓA, dữ liệu được lưu trữ tạm thời trong bộ nhớ và trong nhật ký giao dịch (ib_logfile*
. MySQL phải phối hợp nhuần nhuyễn giữa những thứ này, để lưu dữ liệu một cách bền bỉ, đồng thời đảm bảo hiệu suất tốt. Nó hoạt động tốt, nhưng chỉ khi MySQL Server là quy trình duy nhất ghi vào tệp.
OneDrive hoàn toàn không phối hợp với MySQL. Nó sẽ kiểm tra định kỳ các tệp đã thay đổi kể từ lần đồng bộ hóa gần đây nhất. Khoảng thời gian OneDrive kiểm tra tệp là khoảng 10 phút một lần và điều này không thể định cấu hình.
OneDrive có thể chọn đồng bộ hóa tệp ngay sau khi bạn đã thực hiện một số thao tác CHÈN / CẬP NHẬT / XÓA và dữ liệu được sửa đổi trong RAM, nhưng chưa được cập nhật trong tệp vùng bảng trên đĩa.
Khi bạn đã thực hiện một thay đổi, nó cũng phải được lưu trữ an toàn trong nhật ký giao dịch, ngay cả khi nó không được cập nhật trong vùng bảng. Nhưng nếu bạn bè của bạn nhận được tệp ở trạng thái này (nhật ký giao dịch chứa các thay đổi không có trong vùng bảng), họ có thể tạo lại dữ liệu từ RAM của bạn mà họ không nhận được. Điều này được gọi là khôi phục sự cố InnoDB . Máy chủ MySQL thực hiện nếu tự động nếu nó khởi động và tìm thấy nhật ký giao dịch chứa các thay đổi không có trong vùng bảng. Nó giả định rằng bạn đã khởi động lại đột ngột và làm mất những gì có trong RAM.
Nếu bạn bè của bạn cố gắng giữ cho Máy chủ MySQL của họ chạy liên tục, đọc một dữ liệu đang được cập nhật đồng thời bởi OneDrive của họ, về cơ bản nó sẽ ghi đè lên các tệp của họ và MySQL sẽ trở nên nhầm lẫn. Nó chỉ kiểm tra xem liệu nó có thực hiện khôi phục sự cố khi Máy chủ MySQL khởi động hay không. Vì vậy, nếu các tệp thay đổi theo những cách không mong muốn trong khi Máy chủ MySQL đang chạy, nó sẽ chỉ kết luận rằng ổ cứng của bạn đã bị hỏng. Nó có thể sẽ báo lỗi nghiêm trọng và tắt MySQL.
Ngoài ra, nếu bạn bè của bạn cố gắng thực hiện các thay đổi của riêng họ đối với cơ sở dữ liệu, thì các thay đổi của họ sẽ xung đột với các bản cập nhật từ OneDrive. Sau đó, nỗ lực ghi đè tệp của họ cuối cùng sẽ được đồng bộ hóa theo hướng ngược lại thông qua OneDrive và cuối cùng sẽ làm hỏng cơ sở dữ liệu của bạn. Điều này sẽ xảy ra mà không có cảnh báo sau khoảng thời gian 10 phút, bất cứ khi nào OneDrive chọn thực hiện đồng bộ hóa tệp của mình.
Vì vậy, tôi e rằng OneDrive không phải là giải pháp để chia sẻ cơ sở dữ liệu của bạn.
Các giải pháp thay thế có cơ hội hoạt động bao gồm:
-
Lưu trữ một phiên bản MySQL Server trên một trang web mà tất cả các bạn chia sẻ và cung cấp cho mỗi người trong số các bạn một ứng dụng khách có thể sử dụng cơ sở dữ liệu. Ứng dụng khách miễn phí phổ biến là phpMyAdmin . Theo cách đó, sẽ chỉ có một phiên bản của MySQL Server, một datadir, mặc dù mỗi người sẽ là những máy khách đồng thời đọc và ghi dữ liệu. Đây là giải pháp đơn giản nhất, có nhiều khả năng hoạt động.
-
Xuất dữ liệu từ phiên bản Máy chủ MySQL của bạn bằng cách sử dụng mysqldump định kỳ và đưa tệp xuất lên OneDrive hoặc gửi tệp đó cho bạn bè của bạn qua email hoặc bất kỳ phương tiện nào khác. Sau đó, họ sẽ phải nhập dữ liệu đó vào Máy chủ MySQL của họ theo cách thủ công. Điều này sẽ ghi đè lên bất kỳ thay đổi nào họ đã thực hiện đối với cơ sở dữ liệu của họ, nhưng nó sẽ không xuất hiện dưới dạng tham nhũng. Nếu họ muốn gửi lại các thay đổi cho bạn, họ có thể thực hiện một thao tác tương tự:xuất cơ sở dữ liệu của họ, đặt tệp kết xuất trên OneDrive, sau đó bạn lấy tệp kết xuất của họ và nhập nó vào phiên bản Máy chủ MySQL của bạn, ghi đè lên bất kỳ thay đổi nào bạn đã có được thực hiện cục bộ kể từ lần cuối cùng bạn gửi tệp xuất của mình cho bạn bè.
-
Sử dụng tiện ích bổ sung MySQL để sao chép đồng bộ nhiều máy chủ, chẳng hạn như Nhân rộng nhóm InnoDB hoặc Percona XtraDB Cluster . Nhưng điều này có lẽ quá phức tạp để bạn thiết lập nếu bạn là người mới sử dụng MySQL.