Maria DB 更改 windows 服务器上的数据目录

Maria DB change datadir on windows server

我在我的 windows 服务器上安装了 MariaDB,发现它默认存储数据库的数据目录为 C:\Program Files\MariaDB 10.2\data

我希望它移动专用于数据库内容的 E: 磁盘。

我以为复制datadir然后修改C:\Program Files\MariaDB 10.2\data datadir中的my.ini会解决它,但是当我尝试重新启动服务时它不会启动。 我也尝试将文件夹权限设置为网络服务,但似乎没有帮助。

我需要做什么才能在 windows 上移动我的数据目录?

经过大量搜索,我偶然发现了 http://baazgusht.blogspot.nl/2017/02/change-datadir-of-mariadb-in-window.html

它给了我需要在 windows 上移动数据目录的提示。

  • 以管理员模式打开cmd(开始搜索cmd,右键以管理员身份执行)
  • 键入 Net stop MariaDB(或您为服务命名的任何名称。对我来说是 net stop "MariaDB 10_2_7"
  • CD 到 C:\program files\mariadb 10.2\(或安装 mariadb 的任何地方)
  • 类型:xcopy data E:\MariaDB /O /X /E /H /K (E:\MariaDb 是我的位置,您可能有其他位置。将 E:\MariaDB 替换为您想要的任何内容,只需使用下面相同的值作为my.ini)
  • 中的数据目录
  • 当目的地不存在时,Xcopy 会询问它应该是文件还是文件夹。选择代表文件夹的选项。
  • 类型:记事本data/my.ini
  • datadir=C:\Pro.... 的值更改为 datadir=E:\MariaDB
  • 保存 (ctrl + s)
  • 在 CMD 中输入 net start mariadb(或者你给服务起的任何名字。对我来说是 net start "MariaDB 10_2_7"

我认为真正的问题是这个。

MariaDB 使用 MySQL5.5(或我使用的其他版本的 MariaDB10)作为 "group user" 来设置对数据文件夹的完全权限。但是这个 "group user" 不是在 Windows "users and groups" 下创建的。所以你不能在安全选项卡上添加这个组并设置权限到另一个文件夹。

实际上,解决方法是将原始数据文件夹 xcopy 到新位置并保留原始权限。

但我的问题是我在崩溃后恢复了一个较旧的数据文件夹。因此尚不清楚解决方法是否有效(我今晚会尝试)。我需要设置正确的用户组。

一个真正的错误修复:修复了 MariaDB 的安装以在正确的位置有效地创建 "group user" 而不仅仅是在文件夹权限中使用它。

在对这个错误感到困惑之后,我可以建议您:

  1. 在 Windows 路径中使用斜线,例如 C:/MariaDB/DB
  2. 使用足够的权限进行试验。这似乎有效:

    cacls Path_to_MariaDB_DBData /E /T /P "Network Service":F 
    

@Tschallacka 回答的补充信息:

复制的 my.ini 文件应该从目标目录中删除(在他们的示例中为“E:\MariaDb”),因为 MariaDB 不支持它。 (无论如何它仍然包含旧路径。)并且源目录的内容(在他们的示例中为“C:\Program Files\MariaDB 10.2\data”)除了 my.ini 也应该被删除,因为现在可以在新路径中找到这些文件。

@Tschallacka 的解决方案有效,因为 xcopy 还会复制文件的权限。 Windows Explorer 没有。

xcopy 选项说明:
/E Copies directories and subdirectories, including empty ones.
/H Copies hidden and system files also.
/K Copies attributes. Normal Xcopy will reset read-only attributes.
安装后没有隐藏文件,系统文件或只读文件,正常使用后应该没有,复制文件应该没有关系,但不会造成伤害。
/O Copies file ownership and ACL information.
原始目录设置了一些额外的权限。没有这些,MariaDB 服务似乎无法正确访问复制的文件。
/X Copies file audit settings (implies /O).
即使没有这个选项,服务似乎也能正常启动。