linux环境下通过软链接变更mysql数据存储路径

linux环境下通过软链接变更mysql数据存储路径,第1张

想要改变mysql数据存储路径的想法最初是在生产服务器上mysql的数据放到了系统盘上,导致系统盘满额,没有足够的内存交换空间而死机。

将mysql数据存储到其他目录下有两种方法,方法一修改my.cnf配置文件,不过经过笔者通过网上的配置资料尝试总是不成功,环境是在centos7下 *** 作的。后来想到一个简单的方法,通过linux的软链接将实际数据放到另外的目录里面就可以了。

*** 作系统是centos7

mysql是通过二进制包里面的rpm方式安装的。相当于全自动了。

先关闭mysql

默认情况下,rpm安装好的mysql会将数据放置在 /var/lib/mysql 目录当中,我们像将数据迁移到/mnt/data目录当中在terminal当中输入:

mv命令会直接将 /var/lib/mysql 文件夹直接剪切到 /mnt/data 目录当中。

这时我们需要回到/var/lib目录当中,

在这个目录当中建立软链接。

软链接相当于windows里面创建目录快捷方式是一样的,这个时候你应该可以看到mysql文件夹回到了 /var/lib 目录当中,要进去查看一下mysql的路径是否和my.cnf一致。

这时候我们再启动mysql

以上我们就将数据迁移到其他目录下,并且还没有修改和变更my.cnf文件。

链接:一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。

Linux中包括两种链接:硬链接(Hard

Link)和软链接(Soft

Link),软链接又称为符号链接(Symbolic

link)。

我们首先来了解一下几个名词:

索引节点(inode)

要了解链接,我们首先得了解一个概念,叫索引节点(inode)。在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号,我们可以将inode简单理解成一个指针,它永远指向本文件的具体存储位置。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问。系统是通过索引节点(而不是文件名)来定位每一个文件。

硬链接(Hard

Link)

硬链接说白了是一个指针,指向文件索引节点,系统并不为它重新分配inode。可以用:ln命令来建立硬链接。

引用

ln

[options]

existingfile

newfile

ln

[options]

existingfile-list

directory

用法:

第一种为”existingfile”创建硬链接,文件名为”newfile”。

第二种在”directory”目录中,为”

existingfile-list”中包含的所有文件创建一个同名的硬链接。

常用可选[options]:-f

无论”newfile”存在与否,都创建链接。-n

如果”newfile”已存在,就不创建链接。

软链接(Soft

Link)

软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。和win下的快捷方式差不多。

可以用:ln

-s

命令来建立软链接。

引用

ln

-s

existingfile

newfile

ln

-s

existingfile-list

directory

下面我们用一个实例来说明硬链接和软链接。

现在目录下有两个文件,一个名为file1,一个名为file2。

引用

$

ls

–il

1052671

-rw-r--r--

1

Leanx

Leanx

0

2010-03-29

13:46

file1

1052670

-rw-r--r--

1

Leanx

Leanx

0

2007-03-29

13:46

file2

首先先做一个file1的硬链接。

引用

$

ln

file1

file1hard

$ls

–il

1052671

-rw-r--r--

2

Leanx

Leanx

0

2010-03-29

13:46

file1

1052670

-rw-r--r--

1

Leanx

Leanx

0

2010-03-29

13:46

file12

1052671

-rw-r--r--

2

Leanx

Leanx

0

2010-03-29

13:46

file1hard

这里我们注意在创建链接前,file1显示的链接数目为1,创建链接后

1.file1和file1hard的链接数目都变为2。

2.file1和file1的inode号是一样的,都是1052671。

3.file1和file1hard显示的文件大小也是一样,都是0B。

可见进行了ln命令的 *** 作结果:file1和file1hard是同一个文件的两个名字,它们具有同样的索引节点号和文件属性,建立文件file1的硬链接,就是为

file1的文件索引节点在当前目录上建立一个新指针。你可以删除其中任何一个,如rm

file1,每次只会删除一个指针,链接数同时减一,只有将所有指向文件内容的指针,也即链接数减为0时,内核才会把文件内容从磁盘上删除。

尽管硬链接节省空间,也是Linux系统整合文件系统的传统方式,但是存在一些不足之处:

1.不允许给目录创建硬链接。

2.不可以在不同文件系统的文件间建立链接。

接着我们做一个指向file2的软链接,软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。

引用

$

ln

-s

file2

file2soft

$

ls

–il

总用量

0

1052671

-rw-r--r--

2

Leanx

Leanx

0

2010-03-29

13:34

file1

1052670

-rw-r--r--

1

Leanx

Leanx

0

2010-03-29

13:35

file2

1053313

lrwxrwxrwx

1

Leanx

Leanx

5

2010-03-29

13:45

file2soft

->

file2

1052671

-rw-r--r--

2

Leanx

Leanx

0

2010-03-29

13:34

file1hard

从上面链接后的结果可以看出来软链接与硬链接,区别不仅仅是在概念上,在实现上也是完全不同的。

区别:

1.硬链接原文件/链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件/链接文件拥有不同的inode号,表明他们是两个不同的文件;

2.在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;

3.链接数目是不一样的,软链接的链接数目不会增加;

4.文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的。而这里软链接显示的大小与原文件就不同了,file2大小是0B,而file2soft是5B。

总之,建立软链接就是建立了一个新文件。当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。

当然软链接也有硬链接没有的缺点,因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

linux硬链接与软链接

Linux链接概念

Linux链接分两种,一种被称为硬链接(HardLink),另一种被称为符号链接(SymbolicLink)。默认情况下,ln命令产生硬链接。【硬连接】硬连接指通过索引节点来进行连接。

1).删除符号连接f3,对f1,f2无影响;

2).删除硬连接f2,对f1,f3也无影响;

3).删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效;

4).同时删除原文件f1,硬连接f2,整个文件会真正的被删除。可参考《Linux就该这么学》了解更多Linux知识。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7240846.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-03
下一篇2023-04-03

发表评论

登录后才能评论

评论列表(0条)

    保存