我可以在双启动时与 Windows 共享 MySql 数据库文件吗?

我可以在双启动时与 Windows 共享 MySql 数据库文件吗?

我想在 Ubuntu 和 Windows(双启动)中使用位于 NTFS 分区上的 MySql 数据库文件。这样可行吗?有什么问题吗?

答案1

是的,它可以工作,但有一些怪癖。MySQL 在各个平台上使用相同的文件格式,因此您只需要共享数据目录。一个问题是,在 ubuntu 中,数据目录需要有 mysql 作为所有者和组。而且 Windows 不区分大小写,而 Linux 区分大小写,因此请保持所有名称统一:整个名称要么小写,要么大写,但不要混合。

从开始到结束;如果您已经设置好了,则可能需要进行一些调整以适合您的设置:

  • 在两个系统上安装并设置 MySQL。
  • 如果 mysql 服务器正在运行,请停止它。
  • 创建一个新的 NTFS 分区。标记设备名称(sdXN暂时这样称呼)。
  • 将 mysql 数据目录从 Ubuntu 移动到新分区。

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

    使用mv保存权限。

  • 新建一个mysql目录

    sudo mkdir /var/lib/mysql
    
  • 将 NTFS 分区挂载到/var/lib/mysql。将设备名称更改为创建 NTFS 分区时的名称。

    sudo mount /dev/{sdXN} /var/lib/mysql -t ntfs-3g -o uid=mysql,gid=mysql,umask=0077
    
  • 要在启动时自动挂载,请找到分区 UUID 和语言环境并编辑/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
    
  • 将“datadir”路径更改为/etc/mysql/my.cnf指向/var/lib/mysql/mysql_data

  • 启动mysql服务器并测试。

  • 编辑 Windows 配置文件(my.ini)并将“datadir”设置为X:/mysql_data(替换X:为您在 Windows 下安装它的位置)。

编译自UF.org 上的主题 1442148

我使用的是 Ubuntu 版本,但由于我没有 Windows,因此部分功能未经测试

答案2

如果您在之前仅使用 Windows 的环境中添加了 Linux 分区,则只需进行一些细微调整即可使用数据库。长版本这里, 简洁版本:

您需要mount --bind '/media/windows/ProgramData/MySQL/MySQL Server 5.5/data' /var/lib/mysql在启动时运行(假设您使用 fstab 将 Windows 驱动器挂载到/media/windows)。

为了绕过 innodb 的日志大小检查,您需要移动 ubuntu 分区的 innodb 日志。在 中my.cnf添加,innodb_log_group_home_dir = /var/log/mysql以便日志位于 mysql 错误日志旁边。

答案3

我遇到了同样的问题。但我通过在共享文件夹上安装一个 sqlite db 解决了这个问题。每当我们想将 sqlite 转换为 mysql 或反之亦然时,我们都可以使用 python pip 包进行转换。

pip 安装 sqlite3-to-mysql

pip 安装 mysql-to-sqlite3

就这样!

相关内容