我想在 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 下安装它的位置)。
我使用的是 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
就这样!