环境准备:centos6.7
用途:用作mysql的data目录的数据共享
介绍:在生产环境中为了增强数据的共享性,经常会使用到网络文件系统,这样可以减少本地磁盘的io写入,同时
也可以更方便的扩展存储空间。在mysql的数据存储中经常会用到nfs共享文件系统,但是nfs的共享权限的匿名用户默认是
nfsnobody,而mysql服务器一般通过mysql用户启动服务,所以当mysql的数据文件放在nfs中启动时常会报错。下面就来介绍
nfs搭建mysql的数据共享。
1.安装nfs服务器:
yum install nfs-utils -y
2.配置nfs服务器:
先查看本机mysql用户的id号
[root@hadoop1 datatest]# id mysql
uid=500(mysql) gid=500(mysql) 组=500(mysql)
nfs共享目录设置:
vim /etc/exports
/datatest 172.18.109.192/26(rw,sync,anonuid=500,anongid=500)
相关参数:
rw:read-write,可读写; 注意,仅仅这里设置成读写客户端还是不能正常写入,还要正确地设置共享目录的权限,参考问题5
ro:read-only,只读;
sync:文件同时写入硬盘和内存;
async:文件暂存于内存,而不是直接写入内存;
no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。
root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;
all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;
anonuid:匿名用户的UID值,通常是nobody或nfsnobody,可以在此处自行设定;
anongid:匿名用户的GID值。
[root@hadoop1 datatest]# service nfs start
启动 NFS 服务: [确定]
关掉 NFS 配额: [确定]
启动 NFS mountd: [确定]
启动 NFS 守护进程: [确定]
正在启动 RPC idmapd: [确定]
[root@hadoop1 datatest]# netstat -tnlp |grep 2049
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp 0 0 :::2049 :::* LISTEN -
3.查看nfs服务器和客户端配置参数:
cat /var/lib/nfs/etab (服务端)
cat /proc/mounts (客户端查看挂载情况,卡住的情况必须用这个命令查看,不要用df -h)
showmount -e 172.18.109.236 #查看nfs共享目录
Export list for hadoop1:
/datatest 172.18.109.192/26
4.客户端挂载测试
mount 172.18.109.236:/datatest /data
[root@hadoop2 ~]# mount
172.18.109.236:/datatest on /data type nfs (rw,vers=4,addr=172.18.109.236,clientaddr=172.18.109.237)
此时客户端只能读,不能在共享目录中写。而mysql服务启动需要产生pid文件和写入日志信息,此时启动mysql一般会报错。
5.共享目录权限
chown mysql.mysql -R /datatest/
注意:这里的权限设置一定要正确,否者会导致客户端读写文件没用权限。
接下来就可以启动mysql服务,检查是否能正常启动和读取nfs的
(责任编辑:liangzh) |