前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何使用Symlink更改MySQL数据目录

如何使用Symlink更改MySQL数据目录

原创
作者头像
心语花束
修改于 2018-07-26 09:36:42
修改于 2018-07-26 09:36:42
4K0
举报

介绍

数据库随着时间的推移而增长,有时会超出文件系统的空间。当它们与操作系统的其余部分位于同一分区时,可能会遇到I/O冲突。RAID,网络块存储和其他设备可以提供冗余和其他所需的功能。无论您是要添加更多空间,评估优化性能的方法,还是希望利用其他存储功能,本教程都将指导您重新定位MySQL的数据目录。

此处的说明适用于运行单个MySQL实例的服务器

准备

要完成本教程,您需要:

  • 具有sudo权限的非root用户的Ubuntu 16.04服务器
  • 一个MySQL服务器
  • 备份数据库。除非您正在使用全新的MySQL安装,否则应确保备份数据。

在此示例中,我们将数据移动到安装在/ mnt / volume-nyc1-01的块存储设备。

无论您使用什么底层存储,本教程都可以帮助您将数据目录移动到新位置。

第一步,移动MySQL数据目录

为确保数据的完整性,我们将关闭MySQL:

代码语言:txt
AI代码解释
复制
$ sudo systemctl stop mysql

由于systemctl不显示所有服务管理命令的结果,因此如果您想确定已成功,请使用以下命令:

代码语言:txt
AI代码解释
复制
$ sudo systemctl status mysql

如果输出的最后一行告诉您服务器已停止,您可以确定它已关闭:

代码语言:txt
AI代码解释
复制
. . .
Jul 18 11:24:20 ubuntu-512mb-nyc1-01 systemd[1]: Stopped MySQL Community Server.

关闭服务器后,我们会将现有数据库目录移动到新位置:

代码语言:txt
AI代码解释
复制
$ sudo mv /var/lib/mysql /mnt/volume-nyc1-01/mysql

接下来,我们将创建Symlink:

代码语言:txt
AI代码解释
复制
$ sudo ln -s /mnt/volume-nyc1-01/mysql /var/lib/mysql

有了Symlink,这似乎是重新启动MySQL的最佳时机,但在我们成功完成之前还有一件事需要配置。

第二步,配置AppArmor访问控制规则

将MySQL目录移动到与MySQL服务器不同的文件系统时,您需要创建AppArmor别名。

要添加别名,请编辑AppArmor alias文件:

代码语言:txt
AI代码解释
复制
sudo nano /etc/apparmor.d/tunables/alias

在文件的底部,添加以下别名规则:

/etc/apparmor.d/tunables/alias. . .alias /var/lib/mysql/ -> /mnt/volume-nyc1-01/mysql/,. . .

要使更改生效,请重新启动AppArmor:

代码语言:txt
AI代码解释
复制
sudo systemctl restart apparmor

注意: 如果您跳过AppArmor配置步骤并尝试启动mysql,则会遇到以下错误消息:

代码语言:txt
AI代码解释
复制
OutputJob for mysql.service failed because the control process

exited with error code. See "systemctl status mysql.service"

and "journalctl -xe" for details.

systemctljournalctl的输出:

代码语言:txt
AI代码解释
复制
OutputJul 18 11:03:24 ubuntu-512mb-nyc1-01 systemd[1]:
mysql.service: Main process exited, code=exited, status=1/FAILURE

由于消息不会在AppArmor和数据目录之间建立显式连接,因此此错误可能需要一些时间才能确定。但是,查看syslog会显示问题:

代码语言:txt
AI代码解释
复制
sudo tail /var/log/syslog
代码语言:txt
AI代码解释
复制
Nov 24 00:03:40 digitalocean kernel: 
[  437.735748] audit: type=1400 audit(1479945820.037:20): 
apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld" 
name="/mnt/volume-nyc1-01/mysql/mysql.lower-test" pid=4228 
comm="mysqld" requested_mask="c" denied_mask="c" fsuid=112 ouid=112

现在我们准备启动MySQL了。

代码语言:txt
AI代码解释
复制
$ sudo systemctl start mysql
$ sudo systemctl status mysql

一旦重新启动MySQL,请抓住机会确保数据正常运行并且MySQL按预期运行。

结论

在本教程中,我们移动了MySQL的数据,并使用Symlink使MySQL了解新位置。我们还更新了Ubuntu的AppArmor ACL以适应调整。虽然我们使用的是块存储设备,但此处的说明适用于重新定义数据目录的位置,而不管底层技术如何。但是这种方法仅适用于运行MySQL的单个实例。腾讯云提供云数据库 MySQL(TencentDB for MySQL)让用户可以轻松在云端部署、使用 MySQL 数据库,欢迎使用。


参考文献:《How to Change a MySQL Data Directory to a New Location Using a Symlink》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
在Ubuntu上迁移你的MySQL数据库
无论是要添加更多空间,评估优化性能的方法,还是希望利用其他存储功能,本教程都将指导您重新迁移MySQL的数据目录。
SQL GM
2018/07/26
14.1K5
如何在MySQL Ubuntu 16.04上将MySQL数据目录移动到新位置
数据库随着时间的推移而增长,有时会超出文件系统的空间。当它们与操作系统的其余部分位于同一分区时,您也可能遇到I / O争用。RAID,网络块存储和其他设备可以提供冗余和其他所需的功能。无论您是要添加更多空间,评估优化性能的方法,还是希望利用其他存储功能,本教程都将指导您重新定位MySQL的数据目录。
GeekZ
2018/10/16
1.7K0
【SQL】已解决:MySQL 服务无法启动
MySQL是一种流行的开源关系型数据库管理系统,在许多应用中被广泛使用。有时在启动MySQL服务时,可能会遇到服务无法启动的问题。这类问题通常会导致数据库无法正常工作,影响应用程序的运行。
屿小夏
2024/07/01
1.1K0
【SQL】已解决:MySQL 服务无法启动
一步迁移MySQL数据库目录 | base apt-get
前言 今天再次在MySQL WorkBench折腾,这个开源的数据库客户端老是读不出数据,以为是数据库权限的问题,服务端毕竟是Linux的,但是不是这问题,不过还是搞了。那只好记录记录一下! ---- 你没有看出标题,是一步就可以迁移MySQL数据库目录,但是使用环境是Ubuntu、基于apt-get安装。一步安装在篇章的最后。 说明 在 Ubuntu 下使用 sudo apt-get install mysql-server 安装的 MySQL 数据库,默认的数据目录是/var/lib/mysq
AlicFeng
2018/06/08
1.1K0
如何在服务器上更改MySQL数据库目录
数据库的大小将会随着时间的推移而增长,有时会超出文件系统的空间。当它们与其余操作系统的部分位于同一分区时,您也可能会遇到I / O争用的问题。RAID,网络块存储和其他设备可以提供冗余和其他功能。无论您是想要添加更多空间,评估优化性能,还是希望利用其他存储功能的优势,本教程都将指导您重新定位MySQL的数据目录。
不会飞的蝴蝶
2018/07/13
6.6K0
CKS考试总结
cks考试资格是去年活动时候跟cka一起买的 1200左右大洋吧...考了两次 ,第一次57分。我考!第二次 62分, 竟然还是没有过去....可能冥冥之中自己有所感应,今年活动的时候购买了一次机会备用的........好歹第三次算是过了86分还好......
对你无可奈何
2021/12/24
3K0
服务器安装MySQL8.0保姆级教程
如果MySQL已安装,将显示版本信息。如果未安装,则会提示命令未找到。你也可以使用以下命令:
Central South Yue
2024/09/17
2830
MySQL设置log-bin后服务器重启失败的解决办法和说明
MySQL中二进制日志功能默认是关闭的,查看各种开启方式后,确定在配置文件中加入如下配置来开启该功能:
kirin
2020/11/04
2.2K0
虚拟化平台cloudstack(2)——安装(上)
vmware workstation安装ubuntu server12.04 这个其实没什么说的了,下软件,安装,一顿下一步,OK。 安装完成后,为ubuntu server 12.04安装桌面。 使
cloudskyme
2018/03/20
1.4K0
虚拟化平台cloudstack(2)——安装(上)
技术分享 | MySQL 如何适配 AppArmor
资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。
爱可生开源社区
2021/11/19
1.4K0
systemd服务管理详解与子命令一览
描述:系统启动和服务器守护进程管理器,负责在系统启动或运行时激活系统资源,并且管理服务器进程和其它进程,可以说他是Linux的小伙伴系统启动时候最先都是运行的systemd;
全栈工程师修炼指南
2022/09/28
2.1K0
systemd服务管理详解与子命令一览
如何在Ubuntu 16.04上移动ownCloud的数据目录
ownCloud是一种能够将您的数字生活存储在私人服务器上的强大解决方案。默认情况下,数据与操作系统保存在同一分区中,这可能会导致可用磁盘空间不足。例如,随着高分辨率图片和高清视频的不断备份,很容易耗尽空间。随着存储需求的增长,可能需要移动ownCloud的data目录。无论您是要添加更多空间还是只是想要更改默认存储位置,本教程都将指导您重新定位ownCloud的data目录。
大瓜皮
2018/10/16
1.7K0
Linux 命令 | 每日一学,Audit 安全审计相关工具
描述: Linux 审计系统提供了一种方式来跟踪系统上与安全相关的信息。根据预配置的规则,审计会生成日志条目,来尽可能多地记录系统上所发生的事件的相关信息。对于关键任务环境而言至关重要,可用来确定安全策略的违反者及其所执行的操作。审计不会为您的系统提供额外的安全,而是用于发现系统上使用的安全策略的违规。可以通过其他安全措施(如 SELinux)进一步防止这些违规。
全栈工程师修炼指南
2024/04/10
1.9K0
Linux 命令 | 每日一学,Audit 安全审计相关工具
【转】如何将MySQL数据目录更改为CentOS 7上的新位置
数据库随着时间的推移而增长,有时超过了文件系统的空间。当它们与操作系统的其他部分位于同一分区上时,也可能遇到I / O争用。RAID,网络块存储和其他设备可以提供冗余和其他所需的功能。无论您是增加更多空间,评估优化性能的方法,还是希望利用其他存储功能,本教程将指导您重新定位MySQL的数据目录。
少羽大怪兽
2018/12/11
3.3K0
如何在Ubuntu 18.04上将Apache Web Root移动到新位置
在Ubuntu上,Apache Web服务器将其文档存储在/var/www/html中,该文档通常位于具有其余操作系统的根文件系统上。但有时,将文档根移动到另一个位置(例如单独安装的文件系统)会很有帮助。例如,如果您从同一个Apache实例提供多个网站,则将每个网站的文档根目录放在其自己的卷上,这样您就可以根据特定网站或客户端的需求进行扩展。
木纸鸢
2018/10/16
1.1K0
CentOS 7系统修改mariadb的数据目录
安装MySQL/MariaDB数据库时,使用了默认的数据目录空间。 今天创建数据表时失败,报错如下:
程裕强
2019/05/27
1.1K0
如何在Debian11上安装 Mysql Server 8
Mysql 通常作为流行的 LAMP 或 LEMP(Linux、Apache/Nginx、MySQL/MariaDB、PHP/Python/Perl)堆栈的一部分安装,它实现了关系模型和结构化查询语言 (SQL) 来管理和查询数据。
网络技术联盟站
2023/03/13
5.5K0
如何在Debian11上安装 Mysql Server 8
在CVM上迁移Apache数据
在Debian 8上,Apache2 Web服务器默认文件在/var/www/html中。此目录与操作系统一起位于根文件系统上。您可能希望将文档移动到另一个目录,比如单独挂载文件系统。
挺问中原
2018/07/30
7810
如何在Ubuntu系统上搭建MySQL数据库
MySQL原本是一个开放源代码的关系数据库管理系统,原开发者为瑞典的MySQL AB公司,2009年,甲骨文公司(Oracle)收购MySQL,成为Oracle旗下产品。 MySQL性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用,比如维基百科、Google和Facebook等网站。非常流行的开源软件组合LAMP中的“M”指的就是MySQL。
独木桥先生
2018/07/31
4.6K0
MySQL更改数据库文件的索引--Java学习网
本人使用的Ubuntu系统,当初划分/根目录下15G空间,目前mysql数据文件已达近3G,决定将其从原目录(/var/lib/mysql)转移到空间较大的home目录下,起初遇到一些问题,参考网上文章后操作成功,在此做下流程记录。
用户1289394
2021/07/09
2.5K0
推荐阅读
相关推荐
在Ubuntu上迁移你的MySQL数据库
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档